在 Web 上运行的 Flutter 应用程序失败并显示错误:只有 JS 互操作成员可能是“外部”

问题描述

我正在尝试让我当前的 Flutter 应用程序在网络上运行。我调用Flutter create .,但是如果我尝试在 Chrome 中运行它,我会收到大约 10000 条错误消息的提示,它们看起来都像这样:

尝试删除“external”关键字或添加 JS 互操作注释。 外部 ffi.Pointer 移除; ^

../../Flutter/.pub-cache/hosted/pub.dartlang.org/objectBox-1.1.0/lib/src/native/bindings/objectBox-c.dart:6289:41: 错误:只有 JS 互操作成员可能是“外部”。尝试删除 'external' 关键字或添加 JS 互操作注释。外部的 ffi.Pointer 列表; ^

../../Flutter/.pub-cache/hosted/pub.dartlang.org/objectBox-1.1.0/lib/src/native/bindings/objectBox-c.dart:6292:16: 错误:只有 JS 互操作成员可能是“外部”。尝试删除 'external' 关键字或添加 JS 互操作注释。外部接口 数数; ^

无法编译应用程序。

我尝试在谷歌上搜索它,但我找不到任何关于此的信息。有谁知道这是关于什么的以及我如何适应这个?

解决方法

在此处重新发布the answer from a GitHub issue

您无法使用不支持 Web 的包构建 Web 应用,而 ObjectBox 尚不支持 (there's an issue you can track though)。

有时您可能希望在一小部分代码中包含依赖项,如果它不适用于网络也没关系,在这种情况下,您可以使用“条件导入”,例如:

import 'myapp/sources-that-use-objectbox.dart' if (dart.library.html) 'myapp/sources-that-dont-use-objectbox.dart';
,

就我而言,我不小心使用了网络不支持的“ffi”库。然后我在我的代码中删除了这个库的所有导入,我也从“pubsec.yaml”中删除了这个库。现在可以正常启动了。