【问题标题】:One code base that supports Flutter for Web and Flutter iOS/Android?一个支持 Flutter for Web 和 Flutter iOS/Android 的代码库?
【发布时间】:2019-12-22 07:57:14
【问题描述】:

由于导入,看起来 Flutter for Web 和 Flutter for Mobile 必须作为单独的项目存在。

例子:

import 'package:flutter_web/material.dart

import 'package:flutter/material.dart';

有没有办法用一个代码库构建一个同时适用于 web 和移动 (ios/android) 的 Flutter 项目?如果没有,这会来吗? 如果可以,能否提供一个示例应用程序?

只想为网络和移动设备制作一个代码库,而不必维护单独的项目/代码库。

【问题讨论】:

    标签: flutter flutter-web


    【解决方案1】:

    OP 的问题有点老了,在发布时(2020 年 7 月 21 日)不再适用。 Flutter 现在已经将 web 整合到了主要的 Flutter 包中,这可以防止我们遇到像这样的导入问题。 flutter_web 不再是一个单独的包。

    但是,即使在您使用条件导入发布问题时,您也可能已经能够完成此操作。 This answer 提供了一个很好的方法来做到这一点。以下是该帖子的要点:

    核心思想如下。

    1. 创建一个抽象类来定义您通常需要使用的方法。
    2. 创建特定于 webandroid 依赖项的实现,以扩展此抽象类。
    3. 创建一个存根,它公开一个方法以返回此抽象实现的实例。这只是为了让飞镖分析工具满意。
    4. 在抽象类中导入此存根文件以及特定于mobileweb 的条件导入。然后在其工厂构造函数中返回具体实现的实例。如果编写正确,这将通过条件导入自动处理。

    此方法允许您基于平台进行这些导入,并适用于所有可能不支持所有可能的 Flutter 平台的包(例如 dart:html、dart:js、dart:js_util、dart:io)。

    【讨论】:

      猜你喜欢
      • 2022-11-22
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 2020-08-06
      • 1970-01-01
      • 2023-01-22
      • 1970-01-01
      • 2021-08-06
      相关资源
      最近更新 更多