在 Flutter 项目中禁用 Web 组件或 Web UI

问题描述 投票:0回答:1

我有一个针对网络和 Android 设备的项目。 Android 设备将仅显示案例,Web 将是管理面板,我在这个项目中使用了一些 Web 包,但现在我无法编译 Android 应用程序。

有没有一种方法可以在为 Android 设备进行编译时禁用 Web UI。目前,当调用Web包时,它不会编译Android的apk文件。

以下是我为 Android 设备构建或编译代码时的一些屏幕截图。

当我开始使用

编译代码时
flutter build apk --release

然后它告诉我它导致了错误,因为我在某些文件中使用 dart.html 。所以,我的问题是,有没有一种方法可以添加某种停止点或不编译应用程序的某些部分。

你能帮忙吗?有什么方法可以实现这一点吗?

flutter
1个回答
0
投票

要在 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结合)

© www.soinside.com 2019 - 2024. All rights reserved.