
正文
Flutter引入插件,flutter 常用插件
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Flutter 使用插件实现双屏交互
本文将为大家讲解如何通过pub库插件快速实现Flutter应用在双屏Android设备上交互通信。
插件地址: flutter_subscreen_plugin
双屏插件实现原理: FlutterPlugin 实现双屏
主屏上的UI,我们添加一个按钮,点击生成一个随机数,发送给副屏显示,用于验证主屏与副屏的通信交互:
副屏ui上我们在initState中监听主屏给副屏的消息流,并将监听到的数据展示在文本上:
完成上述步骤,简单的demo就做好了,如下是demo在实体设备的运行效果图:
相关问答
Q1: flutter插件发布及问题解决
1,执行 flutter pub publish--dry-run 检查是否具备发布条件
遇到的问题1:
It‘s strongly recommended to include a “homepage“ or “repository“ field
解决方案:在 pubspec. yaml 中配置 主页 homepage 地址 :
homepage:
可参考:
2,执行 flutter pub publish--server= 发布
如果执行flutter pub publish发布的话会遇到以下错误,国内还是用 flutter pub publish--server= 来发布
package repository requested authentication! You can provide credential using:pub token add
问题1:It looks like accounts.google.com is having some trouble. Pub will wait for a while before trying to connect again. OS Error: Operation timed out, errno = 60, address = accounts.google.com, port = 53481 pub finished with exit code 69
原因:
1、国内墙;
2、flutter环境配置添加了国内镜像
解决方式:
1、翻墙;
2、屏蔽环境变量里关于flutter的国内镜像;
屏蔽方式如下:
# export PUB_HOSTED_URL=
# export FLUTTER_STORAGE_BASE_URL=
3、设置终端代理命令(这个是我解决的方式),这个非常重要,不然就会报上面超时错误了
如果出现:Flutter pub finished with exit code 1
解决方式:flutter packages pub publish --server=
此问题原文链接:(毕竟要尊重版权)
问题2:LICENSE这个文件中不能有TODO,也不能为空,可找个flutter库看看别人是怎么写的
Q2: flutter引入第三方插件报错xxx-Swift.h file not found解决办法及原因
问题算是解决了,但是为什么会这样呢,我们习以为常的use_frameworks!有什么作用呢,知其然也要知其所以然,带着疑问我进行了下一步的探索 。
首先我们要了解下静态库和动态库还有Framework。
静态库:(.a)在编译时会将库copy一份到目标程序中,编译完成之后,目标程序不依赖外部的库,也可以运行。缺点: 会使应用程序变大。
动态库:(.dylib)编译时只存储了指向动态库的引用。可以多个程序指向这个库,在运行时才加载,不会使应用体积变大,但是运行时加载会损耗部分性能,并且依赖外部的环境,如果库不存在或者版本不正确则无法运行(我的项目无法运行就是这一步出问题了)。
Framework:实际上是一种打包方式,将库的二进制文件,头文件和有关的资源文件打包到一起,方便管理和分发。
CocoaPods 通过use_frameworks来控制是否是用Framework。
如果不使用use_frameworks!则会使用static libraries 方式生成.a文件。
如果使用use_frameworks!则会使用dynamic frameworks 方式生成.framework文件。
在纯oc的项目中,一般不使用frameworks,但是在pod导入的swift项目,必须要使用use_frameworks!,我这个flutter项目也是用pod导入的第三方库,所以必须加入use_frameworks!,特此记录下,免得以后踩同样的坑!
Q3: Flutter 插件问题(引入插件同时存在静态库与swift)
前提:Flutter 项目中引入使用多个插件,内含有swift与静态库时出现的一系列问题
问题一、swift插件缺少设置swift的版本号
解决方案:在Xcode中打开项目Targets—builds settings —user-defined
在user-defined内添加一行:SWIFT_VERSION(版本号视当前版本号为准)
问题二、静态库
看到网上好多的解决方法是删除掉或者添加上Podfile中的use_frameworks!,实测与此无关,错误信息忘记截图啦?,大体就是pod install 时出现无法install之类的信息
正解方法是找到相关错误插件内的podspec文件,添加s.static_framework = true
Q4: flutter 插件开发
new flutter project,选择Flutter Plugin,next,输入插件名,包名,运行平台及编写语言,finish!
如上图,笔者的插件名为log_plugin,选用Android,java语言开发
在自动打开和插件名同名的dart文件,声明要使用其他语言的方法,本例使用java 语言实现Android原生的log输出
编辑 android/src/main/java/com/whh/log_plugin/LogPlugin.java
在onMethodCall方法中,区别声明方法名,以实现该方法逻辑
至此,简单的插件开发完成,接下来测试
example是插件测试工程,打开其中的main.dart
打开已有的或者新建一个flutter app project,在其pubspec.yaml引入插件
使用pub get 关联到插件
详见官网文档
此文为 flutter 初学者记录学习过程,附上 github ,小小分享~
每天进步一点点。。。(2021-08-10)
Q5: Flutter插件汇总,总有一个用得着, 已收录:100+
❀ ❀ 尽可能收集好用的插件以便更快的开发效率,85%亲测,持续添加中
如果有好的插件或者建议,可以直接评论 ❀❀
Github地址:
文章源地址:
br /
?? 尽可能收集好用的插件以便更效率的开发,85%亲测,持续添加中
br /
br /
如果有好的插件或者建议,可直接提Issue 感谢您的分享 ~ ❀❀
br /
br /
掘金文章地址:
br /
br /
br /
br /
br /
br /
br /
br /
br /
br /
br /
br /
br /
br /
br /
br /
br /
br /
br /
br /
br /







