Flutter几种创建模式

Flutter 提供了多种创建模式,针对不同的开发需求,可以选择合适的模板来初始化项目或组件。以下是 Flutter 提供的主要创建模式,以及它们的特点和适用场景。

Application 模式(默认模式)

命令:

1
flutter create my_flutter_app

特点:

默认用于创建完整的 Flutter 应用程序。
生成包含所有必要目录和文件的结构:
lib/:应用程序的主要代码目录。
test/:单元测试目录。
android/ 和 ios/:原生平台代码(如果需要,可以在其中实现平台功能)。
web/ 和 windows/ 等:支持特定平台的代码(仅在启用时生成)。
适用场景:

开发一个完整的 Flutter 应用程序。
以 Flutter 为核心,覆盖多个平台(Android、iOS、Web、桌面等)。

Package 模式

命令:

1
flutter create --template=package my_flutter_package

特点:

创建一个共享的 Dart 包,可以用于封装逻辑或 UI 组件。
生成的结构主要用于管理 Dart 代码:
不包括 android/、ios/ 等原生代码。
主要目录为 lib/ 和 test/。
支持发布到 pub.dev,供其他开发者或项目使用。
适用场景:

创建通用的工具库、UI 组件库。
提取业务逻辑或共享模块,供多个项目依赖。
仅包含 Dart 代码,不需要平台相关功能。

Plugin 模式

命令:

1
flutter create --template=plugin my_flutter_plugin

特点:

用于创建支持 Dart 和原生代码的插件库。
包含 android/、ios/ 等目录,用于实现平台特定功能。
可以通过 Dart API 调用底层原生代码(如蓝牙、相机等)。
适用场景:

封装原生功能,供 Flutter 应用使用。
开发跨平台插件并发布到 pub.dev。
实现特定平台相关的功能扩展。

Module 模式

命令:

1
flutter create --template=module my_flutter_module

特点:

用于将 Flutter 嵌入到现有的原生项目中。
生成的结构包含 Flutter 的代码和适配文件:
lib/:Flutter 代码目录。
.android/ 和 .ios/:用于集成到原生项目的桥接配置。
提供与原生项目交互的接口。
适用场景:

在已有的 Android 或 iOS 项目中嵌入 Flutter 页面。
实现混合开发,Flutter 用于部分功能或页面。

Skeleton 模式

命令:

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 示例 否 学习和参考示例实现

如何选择

  • 如果是 独立开发 Flutter 应用,选择 Application。
  • 如果是 通用库开发,选择 Package。
  • 如果需要 封装原生功能,选择 Plugin。
  • 如果是 混合开发,将 Flutter 嵌入原生项目,选择 Module。
  • 如果需要 快速启动,选择 Skeleton。