flutter - 一个支持 Flutter for Web 和 Flutter iOS/Android 的代码库?
问题描述
由于导入,看起来 Flutter for Web 和 Flutter for Mobile 必须作为单独的项目存在。
例子:
import 'package:flutter_web/material.dart
对比
import 'package:flutter/material.dart';
有没有办法用一个代码库构建一个同时适用于 web 和移动(ios/android)的颤振项目?如果没有,这会来吗?如果是这样,你能提供一个示例应用程序吗?
只想为网络和移动设备制作一个代码库,而不必维护单独的项目/代码库。
解决方案
OP 的问题有点陈旧,在发布时不再适用(2020 年 7 月 21 日)。Flutter 现在已经将 web 整合到了主要的 Flutter 包中,这可以防止我们遇到像这样的导入问题。flutter_web
不再是一个单独的包。
但是,即使在您使用条件导入发布问题时,您也可能已经能够完成此操作。这个答案提供了一个很好的方法来做到这一点。以下是该帖子的要点:
核心思想如下。
- 创建一个抽象类来定义您通常需要使用的方法。
- 创建扩展此抽象类的特定实现
web
和依赖项。android
- 创建一个存根,它公开一个方法以返回此抽象实现的实例。这只是为了让飞镖分析工具满意。
- 在抽象类中导入此存根文件以及特定于
mobile
和的条件导入web
。然后在其工厂构造函数中返回具体实现的实例。如果编写正确,这将由条件导入自动处理。
此方法允许您基于平台进行这些导入,并适用于所有可能不支持所有可能的 Flutter 平台的包(例如 dart:html、dart:js、dart:js_util、dart:io)。
推荐阅读
- python - 如何使用 span 类进行网页抓取 python com?
- python - Python 3 出现此代码错误(另一棵树的子树)
- webpack - 未捕获的错误:无法在 symfony/webpack-encore 和 mdboostrap 中间接使用定义
- html - 如何将我的抽屉内容移动到所有按钮下方,而不是按照当前的方式在选定按钮之后打开?
- python - Python regex 提取以特定条件开头的子字符串之间的行
- firebase - @react-native-firebase/admob 即使我使用 TestIds 也不起作用
- java - 为什么我在 Minecraft Forge 1.16.5 中的食谱不起作用?
- oracle - Oracle 将 CSV 行中的所有值选择为自定义类型
- reactjs - 有没有办法从 Ant Design 3.x 版中拖动 Modal 组件?
- amazon-web-services - 将 AWS Glue 环境中的 PysparkML 模型保存到 S3 存储桶中