美文网首页
Flutter 中Application、Plugin、Pack

Flutter 中Application、Plugin、Pack

作者: 张_何 | 来源:发表于2023-02-27 11:55 被阅读0次

    Flutter Application

    Flutter Application 表示一个Flutter项目,主体是Flutter,当然它也可以接入Android Module 或者 iOS Framework,其内部包含 Android 和 iOS 项目(默认情况下,以后正式支持Web、Windows、Mac等系统后可能更多),其目录结构如下:


    目录结构

    其中各个目录说明如下:

    • android:Android原生代码目录。
    • ios:iOS原生代码目录。
    • lib:这个是Flutter项目的核心目录,我们写的代码放在这个目录,我们也可以在这个目录创建子目录。
    • test:测试代码目录。
    • pubspec.yaml:这个是Flutter项目的依赖配置文件,类似于Android build.gradle文件,这里面包含了Flutter SDK 版本、依赖等,
    • application 中的pubspec.yaml中可以看到多了一行publist_to的配置, 是防止我们使用flutter pub publish命令将其发布到pub.dev上.
    # The following line prevents the package from being accidentally published to
    # pub.dev using `flutter pub publish`. This is preferred for private packages.
    publish_to: 'none' # Remove this line if you wish to publish to pub.dev
    

    Flutter Plugin

    Flutter Plugin表示 Flutter 插件,包含 Android 和 iOS 项目,如果你要开发一个 Plugin 且此 Plugin 涉及到原生支持,比如蓝牙功能、网络功能等,这些功能纯 Flutter 是无法实现的。
    其目录比 Flutter Application 多了一个 example,example用于当前 Plugin 的demo, Flutter Plugin 开发完成后可以发布到 pub 上。
    其目录结构如下:


    目录结构
    • 其pubspec.ymal中多了关于该插件的名称,描述,版本等信息
    name: plugin_demo
    description: A new Flutter project.
    version: 0.0.1
    homepage:
    

    此外还多了此插件关于平台的配置:

      # This section identifies this Flutter project as a plugin project.
      # The 'pluginClass' specifies the class (in Java, Kotlin, Swift, Objective-C, etc.)
      # which should be registered in the plugin registry. This is required for
      # using method channels.
      # The Android 'package' specifies package in which the registered class is.
      # This is required for using method channels on Android.
      # The 'ffiPlugin' specifies that native code should be built and bundled.
      # This is required for using `dart:ffi`.
      # All these are used by the tooling to maintain consistency when
      # adding or updating assets for this project.
      plugin:
        platforms:
          android:
            package: com.example.plugin_demo
            pluginClass: PluginDemoPlugin
          ios:
            pluginClass: PluginDemoPlugin
    

    Flutter Package

    Flutter Package 和 Flutter Plugin 基本一样,唯一的区别是Flutter Package表示纯 Flutter 模块,不需要原生开发,没有Android 和 iOS 项目,比如开发一个纯 UI 的插件。
    其目录结构如下:


    目录结构

    Flutter Module

    Flutter Module 用于原生项目中插入 Flutter 模块,原生为主体,与 Flutter 进行混合开发。
    其目录结构如下:


    目录结构

    创建一个带有example的package

    • 首先创建一个package命名为package_demo, 此时package_demo中是没有ios和android目录的,如果我们想调试我们的package该怎么办呢?我们从网上下载的别人的package一般带有一个example来运行的,这个example是怎么建的呢?
    • 我们要在我们的package_demo根目录下创建一个application


    • 建好之后目录结构如下:


    • 关联我们的example和package_demo package, 我们要在example的pubspec.yaml中通过路径引用我们的package, 注意这里我们引用的package名字一定要是我们创建的package pubspec.yaml中的name.

    相关文章

      网友评论

          本文标题:Flutter 中Application、Plugin、Pack

          本文链接:https://www.haomeiwen.com/subject/frphldtx.html