Flutter创建应用与包的差异及包生成平台代码疑问
问题解答
1. 应用模板与Package模板的pubspec差异
两者的pubspec.yaml核心差异如下:
- 应用模板:
- 默认包含
flutter: uses-material-design: true配置,启用Material Design图标资源 - 会自动生成对应
--org参数的平台ID映射(Android的applicationId、iOS的bundleId) - 依赖项默认自带
cupertino_icons,方便快速构建iOS风格界面 - 无
plugin字段,整体配置围绕可独立运行的Flutter应用展开
- 默认包含
- Package模板:
- 默认无
uses-material-design配置,更侧重纯Dart代码的复用场景 - 不包含平台ID相关配置,因为package本身不可独立运行
- 依赖项仅默认包含
flutter,没有cupertino_icons - 若模板生成了平台代码,pubspec可能会带有
plugin字段(即使未创建插件类型package),这是当前版本模板的遗留逻辑
- 默认无
2. 非插件Package生成平台代码的原因
你遇到的情况是当前Flutter master通道预览版(3.4.0-29.0.pre.115)的package模板未完全剥离平台代码生成逻辑导致的:
- 早期Flutter的package和插件模板共享部分底层代码,后续版本虽做了拆分,但开发通道的预览版本可能存在未清理的遗留逻辑,默认生成了Android/iOS的平台目录和代码
- 这些平台代码采用了旧版Android嵌入方案,因此触发了弃用提示;即使不需要插件功能,模板仍会生成这些结构,用于支持可能的平台特定测试或扩展场景
内容的提问来源于stack exchange,提问作者Chris G.
相关产品推荐
相关产品推荐

