flutter-plugin之创建后的弥补

814 阅读3分钟

创建

  1. 命令创建
Flutter create  -t plugin --platforms <platforms> -i swift -a java plugin_name
  • 命令分解

    • flutter create,如下所示

      
         No option specified for the output directory.
         Create a new Flutter project.
      
         If run on a project that already exists, this will repair the project, recreating any files that are missing.
      
         Global options:
         -h, --help                  Print this usage information.
         -v, --verbose               Noisy logging, including all shell commands executed.
                                     If used with "--help", shows hidden options. If used with "flutter doctor", shows additional diagnostic information. (Use "-vv" to force verbose logging in those cases.)
         -d, --device-id             Target device id or name (prefixes allowed).
             --version               Reports the version of this tool.
             --suppress-analytics    Suppress analytics reporting when this command runs.
      
         Usage: flutter create <output directory>
         -h, --help                   Print this usage information.
             --[no-]pub               Whether to run "flutter pub get" after the project has been created.
                                      (defaults to on)
             --[no-]offline           When "flutter pub get" is run by the create command, this indicates whether to run it in offline mode or not. In offline mode, it will need to have all dependencies already
                                      available in the pub cache to succeed.
             --[no-]overwrite         When performing operations, overwrite existing files.
             --description            The description to use for your new Flutter project. This string ends up in the pubspec.yaml file.
                                      (defaults to "A new Flutter project.")
             --org                    The organization responsible for your new Flutter project, in reverse domain name notation. This string is used in Java package names and as prefix in the iOS bundle identifier.
                                      (defaults to "com.example")
             --project-name           The project name for this new Flutter project. This must be a valid dart package name.
         -i, --ios-language           The language to use for iOS-specific code, either Objective-C (legacy) or Swift (recommended).
                                      [objc, swift (default)]
         -a, --android-language       The language to use for Android-specific code, either Java (legacy) or Kotlin (recommended).
                                      [java, kotlin (default)]
             --platforms              The platforms supported by this project. Platform folders (e.g. android/) will be generated in the target project. This argument only works when "--template" is set to app or
                                      plugin. When adding platforms to a plugin project, the pubspec.yaml will be updated with the requested platform. Adding desktop platforms requires the corresponding desktop
                                      config setting to be enabled.
                                      [ios (default), android (default), windows (default), linux (default), macos (default), web (default)]
         -t, --template=<type>        Specify the type of project to create.
      
                   [app]              (default) Generate a Flutter application.
                   [module]           Generate a project to add a Flutter module to an existing Android or iOS application.
                   [package]          Generate a shareable Flutter project containing modular Dart code.
                   [plugin]           Generate a shareable Flutter project containing an API in Dart code with a platform-specific implementation through method channels for Android, iOS, Linux, macOS, Windows, web,
                                      or any combination of these.
                   [plugin_ffi]       Generate a shareable Flutter project containing an API in Dart code with a platform-specific implementation through dart:ffi for Android, iOS, Linux, macOS, Windows, or any
                                      combination of these.
                   [skeleton]         Generate a List View / Detail View Flutter application that follows community best practices.
      
         -s, --sample=<id>            Specifies the Flutter code sample to use as the "main.dart" for an application. Implies "--template=app". The value should be the sample ID of the desired sample from the API
                                      documentation website (http://docs.flutter.dev/). An example can be found at: https://api.flutter.dev/flutter/widgets/SingleChildScrollView-class.html
             --list-samples=<path>    Specifies a JSON output file for a listing of Flutter code samples that can be created with "--sample".
      
         Run "flutter help" to see global options.
      
      
    • -t, --template (模版)

      • [app] 默认类型,创建一个flutter app
      • [module] flutter 模块开发
      • [package] 纯Dart库
      • [plugin]针对Android、iOS、Web、MacOS、Windows或Linux,或者把它们组合到一起的库
    • -i, --ios-language

      • 从字面意上,我们可以知道这是来指定iOS平台开发语言,swift(默认)或objc,
      • eg: -i swift
    • -a, --android-language

      • 和👆一样.java或kotlin(默认)
      • eg: -a java
    • --platforms

      • 指定平台组合
      • eg:--platforms=android,ios,web,MacOS,Windows,Linux,
    • --org

      • 指定包名
      • eg: --org com.example.hello
  • 通用 命令创建

flutter create --org com.example.hello -t plugin --platforms=ios,android -i swift -a java hello
  • 单独创建平台命令

    相对来说,我觉得单独创建对应平台的命令还是很有用的. 比如你创建完平台后,误操作删除了某个平台的文件,或者您配置错某些东西,再或者你使用IDE创建的时候,少选了平台,需要你手动创建.这个时候就需要,我们单独创建了.

    • 命令创建

      • ios 命令创建
      flutter create -t plugin --platforms=ios -i swift .
      
      • android 命令创建
      flutter create -t plugin --platforms=android -a java .
      
      • web 命令创建
      flutter create --template=plugin --platforms=web .
      
  1. 通过VScode创建
    • 创建plugin
      • 截屏2022-10-06 10.44.38.png
      • 截屏2022-10-06 10.45.56.png
      • 截屏2022-10-06 10.45.50.png
      • 截屏2022-10-06 10.41.48.png
      • 默认创建完成,是没有指定对应的平台的,如下图所示 截屏2022-10-06 10.48.27.png
    • 通过pubspec.yaml 和 flutter create 来添加指定平台
      • 在pubspec.yaml中添加你需要增加的平台
      flutter:
       plugin:
         platforms:
           android:
             package: com.example.hello
             pluginClass: HelloPlugin
           ios:
             pluginClass: HelloPlugin
      
      
      
      • 通过命令我们就可以创建对应的平台
      flutter create .
      
      运行后,我们看一下,项目目录发生了什么变化 截屏2022-10-06 10.52.27.png 从上面我们看到,已经创建了对应的平台模块,由于android语言默认是kotlin,ios语言默认是swift,如果你想修改开发语言可以使用👇的命令
      flutter create -a jave -i objc .
      

截屏2022-10-06 10.56.47.png

参考资料

flutter Packages的插件