一种代码基础支持Flutter for Web和Flutter iOS / Android?

时间:2019-08-15 22:48:02

标签: flutter flutter-web

由于导入,像Flutter for Web和Flutter for Mobile这样的外观必须作为单独的项目存在。

示例:

import 'package:flutter_web/material.dart

vs

import 'package:flutter/material.dart';

有没有用一个适用于Web和移动设备(ios / android)的代码库构建一个flutter项目?如果没有,这会来吗? 如果可以,您可以提供一个示例应用程序吗?

只想为Web和移动设备建立一个代码库,而不必维护单独的项目/代码存储库。

1 个答案:

答案 0 :(得分:0)

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)。