颤振插件和颤振模块有啥区别?

Posted

技术标签:

【中文标题】颤振插件和颤振模块有啥区别?【英文标题】:What is the difference between flutter plugin and flutter module?颤振插件和颤振模块有什么区别? 【发布时间】:2019-07-10 22:04:06 【问题描述】:

我是flutter插件开发的新手,我读过Developing packages & plugins和Writing a good Flutter plugin,但是作为初学者我很困惑,我已经开发了基于webview_flutter的Flutter应用程序和一个可以离线工作的javascript库。我想将其扩展为模块或插件。

Webview 呈现一些东西。 JavaScript 库正在从资产中附加。

我没有直接从我的代码调用任何平台 API,但我的代码依赖于另一个插件。

我该如何进行呢?作为插件还是作为模块?

【问题讨论】:

"我想将它扩展为一个模块或插件。"那是什么意思?如果你甚至不清楚插件或模块是什么,你怎么知道你想要那个?插件是关于使 Flutter 可以使用本机功能。模块是将 Flutter 与现有的原生应用程序集成。也许你真正想要的是一个可重用的 Pub 包,你可以将它发布到 pub.dartlang.org(插件也是 Pub 包,只是一个特殊的,额外利用了对本机平台的访问) 是的,谢谢,我想要一个可重复使用的 Pub 包,我想在 pub.dartlang org 上发布它。现在我很清楚了.. 【参考方案1】:

插件是为了让 Flutter 可以使用本机功能。 模块是将 Flutter 与现有的原生应用程序集成。

也许你真正想要的是一个可重用的 Pub 包,你可以将它发布到 pub.dartlang.org(一个插件也是一个 Pub 包,只是一个特殊的,它另外利用了对本机的访问平台)

另见

https://flutter.io/docs/development/packages-and-plugins/developing-packages https://www.dartlang.org/guides/libraries/create-library-packages

“库包”是 Pub 包,与通常不发布到 pub.dartlang.org 的普通 Dart“应用程序包”相反。

一个不依赖dart:htmldart:ui(Flutter)且不是Flutter插件的纯Dart Pub包(库包),可以在任何平台(服务器、命令行、Flutter、浏览器)上使用.

如果您的包具有指定的依赖项之一,则它仅限于特定平台。

pub.dartlang.org 显示标签以相应地对已发布的包进行分类 (FLUTTER,WEB,OTHER)

【讨论】:

【参考方案2】:

Flutter 插件:

简而言之:与原生相关的开发。

Flutter 插件是原生代码的封装,如 android(Kotlin 或 java)和 ios(swift 或 Objective c)。 ... Flutter 可以通过使用平台通道和消息传递来做原生应用程序可以做的任何事情。 Flutter 指示原生 iOS/Android 代码执行操作并将结果返回给 Dart。

Flutter 包或模块:

简而言之:使用 util 库中的代码加快开发速度。

Flutter 支持使用由其他开发者贡献给 Flutter 和 Dart 生态系统的共享包。这允许快速构建应用程序,而无需从头开始开发所有内容。

【讨论】:

快速和上下文,其他答案也有积极的一面。 一个Flutter模块和一个Flutter包不一样flutter.dev/docs/development/add-to-app/android/…

以上是关于颤振插件和颤振模块有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Dart 中的 async 和 async* 有啥区别?

在颤振中使用 PreferredSize 小部件有啥用?

颤振医生无法识别Android Studio颤振和飞镖插件,但已安装插件

有啥办法可以防止颤振向谷歌发送崩溃报告

当我使用颤振医生命令检查状态时,它说没有安装颤振和飞镖的插件

我正在使用低端笔记本电脑来学习使用 web 和 android 设备的颤振。有啥方法可以加快构建过程吗?