我有一个针对网络和 Android 设备的项目。 Android 设备将仅显示案例,Web 将是管理面板,我在这个项目中使用了一些 Web 包,但现在我无法编译 Android 应用程序。
有没有一种方法可以在为 Android 设备进行编译时禁用 Web UI。目前,当调用Web包时,它不会编译Android的apk文件。
以下是我为 Android 设备构建或编译代码时的一些屏幕截图。
当我开始使用
编译代码时flutter build apk --release
然后它告诉我它导致了错误,因为我在某些文件中使用 dart.html 。所以,我的问题是,有没有一种方法可以添加某种停止点或不编译应用程序的某些部分。
你能帮忙吗?有什么方法可以实现这一点吗?
要在 Android 设备上运行时禁用代码的某些部分,可以使用 flutter 提供的
kIsWeb
常量。你可以这样做:
import 'package:flutter/foundation.dart';
if (kIsWeb) {
//Display your web UI
} else {
//Display your mobile UI
}
您还可以进行条件导入,但仅支持移动设备和网络。桌面版本不支持它。请参阅:https://github.com/dart-lang/sdk/issues/34262#issuecomment-416129832 此外,在导入包时,您需要使用条件导入来导入所需的特定于平台的包。它的工作原理是在编译时检查包(特定于平台的)是否存在:
// In this case I am showing using the dart:html package;
if (dart.library.html) 'package:flutter/yourwebpackage'
if (dart.library.io) 'package:flutter/yourmobilepackage'
dart.html 仅适用于网络,因此可以用作网络应用程序的条件。
dart.io 仅适用于本机应用程序,不适用于 Web 应用程序,因此我们使用它作为导入其他特定于平台的包的条件。
如果您对另一个强大的答案感兴趣,该答案适用于具有许多包的所有情况,请参阅:如何在 Flutter/Dart 中导入特定于平台的依赖项? (Web与Android/iOS结合)