同一个原生项目只能集成一个flutter模块化项目,因为flutter打包iOS或者Android包的产物,每一个flutter模块项目的iOS打出的包含有flutter.framework和APP.framework,如果两个模块化项目这两个包就会起冲突,同理Android的so文件也会起冲突,所以多模块化集成的方法就是,在flutter项目进行多组件化开发,通过flutter的组件化生成对应的framework,然后通过唯一的一个模块化项目进行打包引入原生,这也就实现了多模块开发。
1、生成flutter的组件项目
这里习惯生成一个调用特定平台的API的包,因为在编写过程中可以实时真机运行查看效果
创建一个文件夹,cd进入以后
flutter create --org com.example --template=plugin hello
hello为你的组件名字
生成后项目结构如下
WX20190605-183727@2x.png
需要编辑的组件就在lib中
2、编辑组件
也就是进入lib生成的.dart文件中进行组件编辑,不同平台通过不同文件夹进行运行查看运行效果
3、配置组件pubspec.yaml文件
在进行发布之前需要进行验证,验证需要对项目的该文件进行配置
WX20190605-184036@2x.png
这些基本是必填项,在下一步的命令中如果没有配置好,会在命令行有所提示
4、上传前验证组件
flutter packages pub publish --dry-run
根据提示进行相关的修改,验证成功后会提示no warning
5、上传组件
官网使用的是
flutter packages pub publish
但是这一步我使用官网的没有成功,我使用的是
sudo flutter packages pub publish -v
如果是第一次上传,会提示你go to https.....
这里复制下来,需要翻墙,也就是确认你的谷歌账号,复制下来点击后,命令行会自动继续进行上传,上传成功后会提示successfully。
这时候可以去到pub官网查看是否有自己的组件
https://pub.dev/packages/chflutterview#-readme-tab-
这个是我的,在里面搜索自己取名字的组件即可
然后到我们的模块化flutter项目中进行依赖引入,和正常的三方组件引入方式一样,然后
flutter packages get
Have done!
至此,就可以完美使用自己开发的组件了。
网友评论