在 Flutter Web 中使用 Flutter 移动包

Posted

技术标签:

【中文标题】在 Flutter Web 中使用 Flutter 移动包【英文标题】:Using flutter mobile packages in flutter web 【发布时间】:2019-10-28 13:25:39 【问题描述】:

我正在使用flutter web,我想使用一些可在web 版本的flutter 中用于移动设备的包。 Flutter web 的 pubspec 看起来与 flutter mobile 的 pubspec 有点不同,但这不是真正的问题。我担心的是是否可以将可用于移动设备的软件包添加到网络中。如果是,这样做的正确方法是什么?

【问题讨论】:

【参考方案1】:

目前(截至 2019 年 6 月)对于任何依赖于移动操作系统的软件包来说,这是不可能的。原因是移动端的插件使用平台通道与平台相关的 androidios 代码实现进行通信,Android 和 iOS 用 java/kotlin 编写,iOS 用 objc/swift 编写。

这些包在网络上工作的唯一方法是,如果为它们编写了一个特定于网络的实现,我认为要么使用 emscripten 编译的库,要么更可能使用某种 javascript 桥来调用相关的浏览器 API .

来自flutter for web readme:

flutter_web 还没有插件系统。暂时,我们提供对 dart:html、dart:js、dart:svg、dart:indexed_db 和其他 Web 库的访问,让您可以访问绝大多数浏览器 API。但是,预计这些库将被不同的插件 API 替换。


对于任何 100% dart 代码的插件,您应该能够像在颤振中一样将其包含在您的 pubspec.yaml 中 - 在 dependencies 下。

【讨论】:

这还不错,您还可以使用引用 Flutter 框架的库,这些库是为 flutter_web 重新打包的。就像provider 被分叉了github.com/rrousselGit/provider/issues/82。你只是不能使用插件atm。【参考方案2】:

是的,您可以通过从 github 获取源代码包并在包内的 lib 文件中获取代码并将其放入您的项目中,并通过将路径导入更改为来修复文件内部可能发生的错误: 导入“包:flutter_web/material.dart”; 并且可能需要进行更多更改。

它将 100% 工作,非常简单:)

【讨论】:

以上是关于在 Flutter Web 中使用 Flutter 移动包的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 无法在flutter web中使用动态链接

Flutter : 在 Flutter web 中使用 Froala-editor

Flutter:在 web 、android 和 ios 中使用相同的应用程序

如何在 Flutter Web 中渲染 SVG?

在 Flutter Web 中嵌入 Youtube 视频

如何重新打包 Flutter 插件以用于 Flutter Web?