由于导入,像Flutter for Web和Flutter for Mobile这样的外观必须作为单独的项目存在。
示例:
import 'package:flutter_web/material.dart
vs
import 'package:flutter/material.dart';
有没有用一个适用于Web和移动设备(ios / android)的代码库构建一个flutter项目?如果没有,这会来吗? 如果可以,您可以提供一个示例应用程序吗?
只想为Web和移动设备建立一个代码库,而不必维护单独的项目/代码存储库。
答案 0 :(得分:0)
OP的问题有点陈旧,在发布时(2020年7月21日)不再适用。 Flutter现在已经将Web整合到主要的flutter包中,这可以防止我们遇到诸如此类的导入问题。 flutter_web
不再是单独的软件包。
但是,即使在使用条件导入发布问题时,您也可能已经能够做到这一点。 This answer提供了一种极好的方法。以下是该帖子的要点:
核心思想如下。
- 创建一个抽象类来定义您通常需要使用的方法。
- 创建特定于
web
和android
依赖项的实现,以扩展此抽象类。- 创建一个存根,该存根提供一个方法来返回此抽象实现的实例。这只是为了让飞镖分析工具感到满意。
- 在抽象类中,导入此存根文件以及特定于
mobile
和web
的条件导入。然后在其工厂构造函数中返回特定实现的实例。如果编写正确,则将通过条件导入自动处理。
此方法允许您基于平台进行这些导入,并适用于可能不支持每种可能的flutter平台的所有软件包(例如dart:html,dart:js,dart:js_util,dart:io)。