Flutter 可重用组件
Posted
技术标签:
【中文标题】Flutter 可重用组件【英文标题】:Reusable components with Flutter 【发布时间】:2019-11-09 10:21:22 【问题描述】:问题
我的想法是使用 Flutter 创建一些简单的组件,以便在我们公司的多个原生 ios 和 android 项目中使用它们。
例如,考虑一个通用的登录视图。这个视图可以在 Flutter 中编码一次,然后可以在以后包含到同时具有 iOS 和 Android 部分(原生)的项目中。所以这样的通用组件可以使用 Flutter 编写一次,而不是使用原生 iOS 和 Android 组件编写两次。
到目前为止我所尝试的
我已按照https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps 此处的步骤操作,它可以工作,但功能似乎非常有限。
我的问题是
-
如何添加多个像这样的颤振项目,每个项目代表一个可重用的组件?这甚至是要走的路吗?
我可以有更小的组件吗?例如在 iOS 中,UIViews 代替 FlutterViewController 没有原生黑客?
如何处理原生和 Flutter 部分以及导航之间的数据传递?
【问题讨论】:
【参考方案1】:您所说的“功能似乎非常受限”是什么意思?
https://flutter.dev/docs/development/add-to-app 列出了这些限制:
运行多个 Flutter 实例或在部分屏幕视图中运行可能会有未定义的行为。 在后台模式下使用 Flutter 仍然是一个 WIP。 不支持将 Flutter 库打包到另一个可共享库或将多个 Flutter 库打包到一个应用程序中。您的第一个问题由第三个限制回答。如果您正在考虑将您的简单组件拆分为一个单独的 Flutter 库,那么不会。您需要将所有组件打包到一个 Flutter 库中,然后让原生应用从池中进行选择。
对于您的第二个问题,您能否更具体地说明“没有本地黑客攻击”的含义?您不/不能使用 FlutterViewController 是否有原因?
第三个关于原生和Flutter之间传递数据的问题将涉及https://flutter.dev/docs/development/platform-integration/platform-channels
从 Flutter 到原生,这是一个 Android 示例 https://***.com/a/49308193/6668797,传递值“text”:
// flutter side, send the data
final String result = await platform.invokeMethod('getBatteryLevel', "text":text);
// native side, retrieve it
String text = call.argument("text");
从原生到 Flutter,使用 result.success(batteryLevel);
将其发送回 final String result
。
【讨论】:
以上是关于Flutter 可重用组件的主要内容,如果未能解决你的问题,请参考以下文章