首页 > 解决方案 > 一个支持 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)的颤振项目?如果没有,这会来吗?如果是这样,你能提供一个示例应用程序吗?

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

标签: flutterflutter-web

解决方案


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

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

核心思想如下。

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

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


推荐阅读