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.