Flutter中Plugin开发之私有库和本地库

6,849 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情

本文主要记录下plugin开发中的一些问题记录以及本地库和私有库使用

1. 发布plugin到私有库

之前发布了关于plugin发布并创建发布到pub,感兴趣可以看下之前的文章 Plugin的创建与发布,那么如何创建到私有库呢? 我们如果只是想自己使用或者在公司的gitlab上使用如何操作呢?

1.1 发布gitlab上

我们在gitlab上创建仓库,之后我们创建一个plugin

之后对该目录工程进行常规的git操作 git init

 by_flutter_example_plugin % git init
 by_flutter_example_plugin % git remote add origin git@xxx/by_flutter_example_plugin.git 
 by_flutter_example_plugin % git add .
 by_flutter_example_plugin % git commit -m "Initial commit"
 by_flutter_example_plugin % git push -u origin develop

当然也可以使用客户端操作,上传后仓库如下 image.png

加载Git packages,编辑pubspec.yaml使用

by_flutter_example_plugin:
       git:
          url: git@xxx/by_flutter_example_plugin.git
          ref: develop

ref可以指定某个commitbranch或者tag

1.2 发布Github上

发布到Github使用也是类似,创建仓库后如果是公有仓库的话直接就git操作上传即可,有的时候我们会指定git版本对于一些三方的库,可能有些适配或者问题,我们就可以拷贝一份到自己的仓库进行一些自定义的修改

  • 指定版本
pull_to_refresh:
  git:
    url: https://github.com/miquelbeltran/flutter_pulltorefresh
  • checkout

image.png

这个时候我们就可以做些自定义操作修改

我在GitHub上发布私有库的时候遇到了关于SSH验证的问题,关联的时候说不能使用账号和密码进行关联,使用SSH,关于SSH问题,我之前添加过了但是不知道是不是过期,所以重新上传了下电脑中的

cat ~/.ssh/id_rsa.pub

image.png

上传同样的git命令

image.png

使用

by_test_plugin_demo:
      git:
        url: git@github.com:DHFLoveWL/by_test_plugin_demo.git

2. 本地库的使用

2.1 本地服务器

对于本地库的方式有2种,一种是通过本地服务器进行创建上传使用

我们下载pub_server put get 运行

pub_server % dart example/example.dart -d /tmp/package-db

image.png 表示成功,之后我们在pubspec.yaml,添加publish_to

publish_to: http://localhost:8080

之后操作和发布到pub 一样

flutter packages pub publish

使用

flutter_imkit_plugin:
    hosted:
      name: flutter_imkit_plugin
      url: http://localhost:8080
    version: ^0.0.2

2.2 手动创建

如果代码没啥要求,直接放在本地,开发调试也更加方便.我们把创建好的plugin放到flutter项目根目录下,创建文件夹plugins,放入我们的plugin

image.png

加载plugin

dev_dependencies:
  by_test_plugin:
    path: plugins/by_test_plugin

导入成功

image.png

3. plugin开发添加照片

我们添加图片资源

image.png

我们在plugin的插件中需要加载完整的路径才能读取官方说明

image.png

可以发现对于想使用packgae中我们要使用图片的话,首先要在pubspec.yaml中加载加载完整路径,其次使用的时候要指定packages.在内部使用的话拼接完成路径即可,不用指定包

对于我们在plugin插件中使用图片资源的话,我们不导入完整路径

image.png

笔者开始的时候全部导入,后面我又注释了也可以,之后重新运行又报错

IMG_3094.PNG

最后还是按照官方的来使用吧,添加完整的路径包含json文件

image.png

运行正常:

IMG_3095.PNG

4. 小结

plugin我们可以在本地文件夹下进行调试,修改。之后在上传,较方便。私有库我们指定giturl即可,通过ref添加条件。比,使用资源的时候要指定package同时拼接完整路径