Flutter Desktop: How to handle Native Code editing in an IDE (Intellisense, Autocompletion, etc.)?

854

You said you're working on an application, but you've shown the CMakeLists.txt for a plugin. As on mobile, desktop Flutter plugins aren't stand-alone buildable projects; they are meant to be built in the context of an application. That's why opening it directly gives you a missing command.

When editing a plugin, you should be opening/building the example application created as part of the plugin project.

Share:
854
Shahzad Akram
Author by

Shahzad Akram

Updated on December 25, 2022

Comments

  • Shahzad Akram
    Shahzad Akram over 1 year

    I am an absolute beginner to C++. I am working with a Flutter Desktop Plugin. Everything is fine just I am unable to configure native code editing properly (Intellisense, Autocompletion, etc.) as it's just acting as a plain text. I have a linux named directory in my flutter project, it seems to be a C++ project. How do I work with this code with full IDE support? I tried to open the linux named folder in CLion and got this.

    CMake Error at CMakeLists.txt:12 (apply_standard_settings):
      Unknown CMake command "apply_standard_settings".
    
    
    -- Configuring incomplete, errors occurred!
    

    Here's CMakeLists.txt

    cmake_minimum_required(VERSION 3.10)
    set(PROJECT_NAME "desktop_practice")
    project(${PROJECT_NAME} LANGUAGES CXX)
    
    # This value is used when generating builds using this plugin, so it must
    # not be changed
    set(PLUGIN_NAME "desktop_practice_plugin")
    
    add_library(${PLUGIN_NAME} SHARED
      "desktop_practice_plugin.cc"
    )
    apply_standard_settings(${PLUGIN_NAME})
    set_target_properties(${PLUGIN_NAME} PROPERTIES
      CXX_VISIBILITY_PRESET hidden)
    target_compile_definitions(${PLUGIN_NAME} PRIVATE FLUTTER_PLUGIN_IMPL)
    target_include_directories(${PLUGIN_NAME} INTERFACE
      "${CMAKE_CURRENT_SOURCE_DIR}/include")
    target_link_libraries(${PLUGIN_NAME} PRIVATE flutter)
    target_link_libraries(${PLUGIN_NAME} PRIVATE PkgConfig::GTK)
    
    # List of absolute paths to libraries that should be bundled with the plugin
    set(desktop_practice_bundled_libraries
      ""
      PARENT_SCOPE
    )
    

    Even I tried to open the project in VSCode but I couldn't configure it as a proper C++ project.

  • Shahzad Akram
    Shahzad Akram over 3 years
    Yeah sorry, It's a plugin, I just opened the linux directory within the example directory and it worked. Thanks.
  • Shahzad Akram
    Shahzad Akram over 3 years
    But here's an issue it's just showing the example code, not the plugin code.
  • smorgan
    smorgan over 3 years
    The plugins are in flutter/ephemeral/.plugin_symlinks/ if you've opened linux.