likes
comments
collection
share

Flutter的Package与Plugin开发

作者站长头像
站长
· 阅读数 2

1、Package(包)

  • 只包含Dart代码

1.1、创建Package(包)

  • 要创建Dart包,可以终端使用参数--template=package来执行flutter create
    % flutter create --template=package 'package_name'
    
  • -i-a:指定语言,默认iOS为OC,Android为Java
    % flutter create --template=plugin -i swift -a kotlin 'plugin_name'
    

1.2、上传Package内容优化

1.2.1、上传本地图片资源
  • 最好的还是使用系统icon,没有复杂的配置,对下载package的用户友好,减少报错
  • 上传的是lib文件夹,所以直接将图片文件夹image置入lib文件夹下即可 Flutter的Package与Plugin开发
1.2.2、使用package中图片资源
  • 配置图片完整路径 Flutter的Package与Plugin开发
  • Widget中调用时增加package属性标注来自于哪个package
    Image(
        image:AssetImage('images/imageName.png', package:'package_demo'),
    )
    

1.3、发布Package(需要梯子🪜)

  • 发布Package需要对pubspec.yaml文件进行配置 Flutter的Package与Plugin开发
    • 包含图片资源要配置pubspec.yaml文件中的资源路径,解除assets的注释 Flutter的Package与Plugin开发
1.3.1、检查包
  • cdflutter项目文件夹
  • % flutter packages pub publish --dry-run
1.3.2、发布包
  • % flutter packages pub publish Flutter的Package与Plugin开发
    • 发布插件和包都需要Google账号,同时需要翻墙
    • 复制提示链接,粘贴到Google上选择账号登录,完成授权
    • 翻墙不能解决时,可能与镜像有关,建议进行镜像配置,镜像错误提示以下: Flutter的Package与Plugin开发
      • 解决方法为不使用官方的发布方式,而是指定服务器,镜像发布:
        % flutter packages pub publish --server=https://pub.dartlang.org
        
      • 这时会要求配置LICENSE版权证书,配置好即可
1.3.3、生成LICENSE
  • Github上新建仓库选择license选项 Flutter的Package与Plugin开发
  • 点击LICENSE将内容粘贴进flutter项目的LICENSE文件Flutter的Package与Plugin开发

1.4、为package创建example

  • 创建flutter项目,get上传的package,书写示例代码将数据等都放在main.dart一个文件中(创建这个文件就是要一个main.dart复制给package包,因为后者创建时就不带有main.dart文件)
  • 将这个创建的项目的main.dart文件,复制到打包的package文件的,自己创建的example文件夹
  • package包的package_demo.dart可能需要将功能拆到多个.dart的part文件中:
    • 此时拆分的dart文件中要通过part of 'package_demo.dart'指定所属
    • 主文件package_demo.dart中添加part '拆分文件名.dart'

2、Plugin(插件)

  • 不仅包含Dart代码,还包含iOS与Android的API

2.1、创建Plugin

  • 要创建插件包,可以终端使用参数--template=plugin来执行flutter create
    % flutter create --template=plugin 'plugin_name'
    
  • --org:指定组织,反向域名表示法,Dart包package是不需要组织名称的,--org只有在--template=plugin时才生效
    % flutter create --org com.example --template=plugin 'plugin_name'
    

2.2、编写Plugin

  • 可以写在iOS的Runner工程中,然后替换进plugin的iOS代码中

2.3、检测和发布的方式与命令和package完全一样