Flutter 提供了多种创建模式,针对不同的开发需求,可以选择合适的模板来初始化项目或组件。以下是 Flutter 提供的主要创建模式,以及它们的特点和适用场景。
命令:
1 | flutter create my_flutter_app |
特点:
默认用于创建完整的 Flutter 应用程序。
生成包含所有必要目录和文件的结构:lib/
:应用程序的主要代码目录。test/
:单元测试目录。android/
和 ios/
:原生平台代码(如果需要,可以在其中实现平台功能)。web/
和 windows/
等:支持特定平台的代码(仅在启用时生成)。
适用场景:
开发一个完整的 Flutter 应用程序。
以 Flutter 为核心,覆盖多个平台(Android、iOS、Web、桌面等)。
命令:
1 | flutter create --template=package my_flutter_package |
特点:
创建一个共享的 Dart 包,可以用于封装逻辑或 UI 组件。
生成的结构主要用于管理 Dart 代码:
不包括 android/
、ios/
等原生代码。
主要目录为 lib/
和 test/
。
支持发布到 pub.dev,供其他开发者或项目使用。
适用场景:
创建通用的工具库、UI 组件库。
提取业务逻辑或共享模块,供多个项目依赖。
仅包含 Dart 代码,不需要平台相关功能。
命令:
1 | flutter create --template=plugin my_flutter_plugin |
特点:
用于创建支持 Dart 和原生代码的插件库。
包含 android/
、ios/
等目录,用于实现平台特定功能。
可以通过 Dart API 调用底层原生代码(如蓝牙、相机等)。
适用场景:
封装原生功能,供 Flutter 应用使用。
开发跨平台插件并发布到 pub.dev。
实现特定平台相关的功能扩展。
命令:
1 | flutter create --template=module my_flutter_module |
特点:
用于将 Flutter 嵌入到现有的原生项目中。
生成的结构包含 Flutter 的代码和适配文件:lib/
:Flutter 代码目录。.android/
和 .ios/
:用于集成到原生项目的桥接配置。
提供与原生项目交互的接口。
适用场景:
在已有的 Android 或 iOS 项目中嵌入 Flutter 页面。
实现混合开发,Flutter 用于部分功能或页面。
命令:
1 | flutter create --template=skeleton my_flutter_skeleton |
特点:
提供一个最小化的 Flutter 项目结构。
适合快速启动或定制项目结构。
生成的项目仅包含最基本的文件和目录:lib/
目录和入口文件 main.dart
。
不包含测试代码或额外配置。
适用场景:
希望快速启动一个简单项目。
自定义项目结构,避免默认模板生成的多余内容。
除了上述主要模式,Flutter 也支持一些特殊的模板,但通常用得较少。
特性模板
可以通过 --sample
参数创建官方提供的示例代码:
1 | flutter create --sample=widgets.AppBar.1 my_sample_app |
Web-only 模式
创建专用于 Web 的 Flutter 应用:
1 | flutter create --platforms=web my_flutter_web_app |
Desktop 模式
创建支持桌面平台的项目:
1 | flutter create --platforms=windows,macos,linux my_flutter_desktop_app |
模板 | 用途 | 是否支持原生代码 | 适用场景 |
---|---|---|---|
Application | 开发完整的 Flutter 应用 | 是 | 独立的 Flutter 项目开发 |
Package | 创建共享 Dart 包,封装逻辑或组件 | 否 | 开发工具库、组件库 |
Plugin | 开发支持 Dart 和原生功能的插件 | 是 | 封装原生功能,供多个项目使用 |
Module | 在已有原生项目中嵌入 Flutter | 是 | 混合开发 |
Skeleton | 最小化项目模板 | 否 | 快速启动、轻量项目 |
特性模板 | 官方提供的特定组件或 API 示例 | 否 | 学习和参考示例实现 |