如何将 Flutter 移动应用迁移到 Flutter Web

Posted

技术标签:

【中文标题】如何将 Flutter 移动应用迁移到 Flutter Web【英文标题】:How to migrate flutter mobile app to flutter web 【发布时间】:2019-10-25 10:22:11 【问题描述】:

我有一个用 Flutter 编写的移动应用程序,我想将其转换为一个 flutter_web 应用程序(集成 flutter_web 尚不可用)。 我目前遇到包问题。

我已按照本网站https://www.codemitter.com/how-to-add-web-counterpart-in-an-existing-flutter-project/中列出的说明进行操作

我收到以下错误

webdev could not run for this project.
You have a dependency on `cached_network_image` which is not supported for flutter_web tech preview. See https://flutter.dev/web for more details.
You have a dependency on `cloud_firestore` which is not supported for flutter_web tech preview. See https://flutter.dev/web for more details.
You have a dependency on `cupertino_icons` which is not supported for flutter_web tech preview. See https://flutter.dev/web for more details.
You have a dependency on `firebase_core` which is not supported for flutter_web tech preview. See https://flutter.dev/web for more details.
You have a dependency on `flutter` which is not supported for flutter_web tech preview. See https://flutter.dev/web for more details.
You have a dependency on `path_provider` which is not supported for flutter_web tech preview. See https://flutter.dev/web for more details.
You have a dependency on `sqflite` which is not supported for flutter_web tech preview. See https://flutter.dev/web for more details.
pub finished with exit code 78

以下插件的 flutter_web 版本是什么? 如何手动/自动更改这样的插件以在flutter_web上支持?

【问题讨论】:

【参考方案1】:

迁移到 Flutter Web 时要遵循的步骤:

    根据迁移指南更新构建配置

    用flutter_web替换所有flutter导入

    移除所有依赖原生平台(androidios)的插件,并用 dart:html 或纯 dart 网络库 (https://pub.dev/web) 中的等效插件替换它们

    使用依赖于 Flutter 框架的 fork 非原生库,例如 https://github.com/rrousselGit/provider/issues/82 您可能需要像这样自己创建一个 fork:https://github.com/kevmoo/provider/commit/bb739c96463347dd185331655e1d8895665172b9

步骤 1. 和 2. 是小菜一碟。但是 3. 和 4. 可能非常有色彩。

【讨论】:

【参考方案2】:

插件是not yet supported on flutter_web,我们还没有关于迁移故事的详细信息。调用本机 Java 或 Swift 代码的插件将无法自动迁移。任何导入 dart:iodart:isolate 的代码也不支持,需要重写。

【讨论】:

【参考方案3】:

从 Flutter v1.10 开始,您可以将 Flutter 应用迁移到 Web。

    通过运行启用网络支持:

    flutter config --enable-web
    

    现在,如果你想创建一个新项目,你可以运行

    flutter create project_name
    

    或者如果您想将现有的迁移到网络,请运行

    flutter create .
    

    通过运行检查连接的设备:

    flutter devices
    

    通过运行在 chrome 中运行您的应用:

    flutter run -d chrome
    

【讨论】:

说明直接来自 Flutter 网页,请引用来源。此外,这并没有真正回答如何将现有项目移植到 web 的问题,它只是说明了如何为 Flutter web 设置项目框架。

以上是关于如何将 Flutter 移动应用迁移到 Flutter Web的主要内容,如果未能解决你的问题,请参考以下文章

如何将flutter_web迁移到蜂鸟中颤动?

Flutter

程序员踩坑之旅:将 75000 行 iOS 原生代码迁移到 Flutter!

只有在 Flutter 应用程序上使用 Web 时,如何才能禁用某些功能?

如何将热图添加到 Flutter 移动应用程序

Flutter 如何平滑地为标记设置动画?