Flutter、原生 API 和插件(3/3)
Flutter、原生 API 和插件(3/3)
原文:https://medium.com/hackernoon/flutter-native-apis-and-plugins-3-3-b84776fc8a7e
(译自法语: Flutter,API natives et plugins (3/3) )
也是在 5 月份左右, Flutter 插件系统出现了,这是一个很好的机制,可以很容易地使用 Flutter/Dart 的本地特性。

我们现在来看看如何通过为 iOS 和 Android 构建一个专用的 Flutter 插件来模块化这些代码。
颤振插件系统😍
Flutter 插件通过 Dart 包管理器作为简单的包(依赖项)来管理。
只需 1)声明依赖关系,2)运行pub packages get,Flutter 就会更新 XCode 和 Android 项目。它是如此的有效和透明,以至于目前我甚至不需要理解 Graddle 是什么,也不需要知道 podfile 是如何工作的。一切都由 Flutter 管理😎🍹!
尽管 Flutter 插件目录还有点雏形,但它已经提供了一些有用的工具。
使用插件
要使用插件:
- 在项目
dependencies: speech_recognition: "^0.2.0+1"的 pubspec.yaml 中声明依赖关系 - 拿到包,建 app
flutter packages get flutter build ios flutter build apk - 在您的代码
中导入包
import 'package:speech_recognition/speech_recognition.dart'; - 就这样

…除非插件确实需要特殊权限,在这种情况下,有必要编辑 iOS 的.plist文件和 Android 的manifest.xml文件。
然后,当应用程序被构建时,根据操作系统,Flutter 将安装和管理 iOS / Android 依赖项,以便本地代码正确可用。
该团队已经建立了一个自我记录插件系统,效果非常好,在大多数情况下,你甚至可以不碰 iOS 或 Android 文件。🍾🥂
构建一个插件
但是的辉煌更进一步,用工具创建插件!我发现它非常有效,我已经发布了 4 个插件,但至少我可以说,我根本不是跨平台插件专家:)。
Flutter CLI 提供了一个插件框架生成命令,包含所有必需的文件,甚至是一个使用创建的插件预先配置的示例项目:
flutter create -i swift --org bz.rxla --plugin my_plugin
-i swift:我们希望将 Swift 用于 iOS 代码,而不是默认定义的 ObjC-a kotlin:如果我们要用 Kotlin 代替 Java 默认的 Android 端--org my.domain:插件名称空间--plugin my_plugin:插件的名称
在 Dart 端,生成的代码非常简单,它主要包含一个“专用”通道的创建。这个系统最有趣的地方是在 iOS 和 Android 上的插件的自我检测/安装。
颤动/飞镖
下面是为插件的 Dart 部分生成的代码:
iOS / Swift
SwiftPluginDemoPlugin.swift文件包含允许应用程序自动检测插件的机制。这是一个静态的register方法,应用程序在启动时调用它来传输一个FlutterPluginRegistrar。注册者的角色是将插件创建的通道添加到MethodChannel调用的“接收者”列表中,使其能够通过其handle方法接收调用。
Swift 的使用增加了一个小层,生成了 ObjC PluginDemoPlugin.h和。m 文件,以及一个swiftplugindemoplugin . swift。
安卓/ Java
我们在 Java 中为 Android 找到了同样的registrar原理。
实施
接下来,剩下的就是将实现从的第二部分转移到插件项目,以及相关的 Swift 和 Java 代码。参见语音识别插件
出版
要在 pub.dartlang.com 上发布插件:
*/FLUTTER_PATH/bin/cache/dart-sdk/bin/pub publish*

资源



