【问题标题】:Reusable components with FlutterFlutter 可重用组件
【发布时间】: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 此处的步骤操作,它可以工作,但功能似乎非常有限。

我的问题是

  1. 如何添加多个像这样的颤振项目,每个项目代表一个可重用的组件?这甚至是要走的路吗?
  2. 我可以有更小的组件吗?例如在 iOS 中,UIViews 代替 FlutterViewController 没有原生黑客?
  3. 如何处理原生和 Flutter 部分以及导航之间的数据传递?

【问题讨论】:

    标签: android ios mobile flutter cross-platform


    【解决方案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

    1. 从 Flutter 到原生,这是一个 Android 示例 https://stackoverflow.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");
      
    2. 从原生到 Flutter,使用 result.success(batteryLevel); 将其发送回 final String result

    【讨论】:

      猜你喜欢
      • 2022-11-24
      • 1970-01-01
      • 2013-07-18
      • 2020-03-12
      • 2020-01-23
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多