Flutter的六种工程类型
| 工程类型 | 简介 | 特点 (都可以依赖其他的Package/Plugin) | 应用场景 | 可以包含 原生代码? |
|---|---|---|---|---|
| Flutter Application | Flutter App应用 | 默认的Flutter App工程 | Flutter开发作为主项目 | 可以 |
| Flutter Module | Flutter模块 | 可作为独立模块混编到已有的Android/iOS工程中 | 1. 原生与Flutter混合开发 2. 以module方式集成到Flutter App项目中,实现模块分层 | 不可以 |
| Flutter Plugin | Flutter插件 | 可以发布到pub.dev | Flutter平台插件工程,包含Dart层与Native平台层的实现 | 可以 |
| Flutter Package | 纯Dart/Flutter 组件包 | 可以发布到pub.dev | 纯Dart/Flutter插件工程,仅包含Dart/Flutter层的实现,往往定义一些公共工具类或Widget | 不可以 |
| Flutter Skeleton | Flutter App 模版应用 | 提供一种较好的Flutter App项目模板 | Flutter开发作为主项目 | 可以 |
| Flutter FFI Plugin | Flutter外部函数 接口插件 | 与C/C++直接交互 | 1. Flutter项目使用原生C/C++库 2.性能优化,将较长的调用链Flutter-> Platform-> Native变成Dart直接调用C/C++ | 可以 |
项目结构特点
Flutter Application
- 项目包含android、iOS等支持平台的目录
- .metadata中project_type类型为app
Flutter Module
- 项目包含.android、.iOS等默认的宿主项目目录
- .metadata中project_type类型为module
- pubspec.yaml中包含module字段
Flutter Plugin
- 项目包含Dart层与android、iOS等Native平台层的实现代码
- .metadata中project_type类型为plugin
Flutter Package
- .metadata中project_type类型为package
Flutter Skeleton
- 项目包含android、iOS等支持平台的目录
- 项目包含路由、资源、多语言、状态管理等模版示例
Flutter FFI Plugin
- 项目包含Dart层与Native平台层实现的C语言代码
- .metadata中project_type类型为plugin_ffi