gpt4 book ai didi

android - Flutter 平台特定依赖项

转载 作者:行者123 更新时间:2023-11-29 05:24:55 25 4
gpt4 key购买 nike

我想使用 Flutter 从单个代码库构建适用于 Android、iOS 和 Web 的应用程序。由于 Web 尚不支持所有 Flutter 插件,因此我必须使用具有依赖项的替代方案(例如 dart:html),而这些替代方案在 Android 和 iOS 上不可用。

如何根据应用程序运行的平台注入(inject)正确的实现,而不加载不必要/不可用的包?

最佳答案

这可以使用条件导入来实现。您可以在此处找到语法示例:https://github.com/dart-lang/site-www/issues/1569 .但是,我似乎找不到该语言功能的官方文档。

import 'stub.dart'
if (dart.library.io) 'io.dart'
if (dart.library.html) 'html.dart';

stub.dart 中定义抛出 UnsupportedOperationException 或类似内容的方法。这并不重要,因为 stub.dart 无论如何都不会被导入。将实际实现分别放在 io.darthtml.dart 中。签名必须与 stub.dart 中的签名匹配。

您可能只想在程序中的单个点执行此条件导入,因此我强烈建议将所有内容隐藏在 stub.dart 之外的其他位置定义的通用接口(interface)后面(common.dart)。在本例中为 dart)。然后,您可以在 io.darthtml.dart 中导入并实现 common.dart,并使用条件导入在程序根目录中选择实现。这样,其他一切只需要依赖 common.dart

关于android - Flutter 平台特定依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58260843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com