颤动平台特定的依赖关系 [英] Flutter platform specific dependencies
本文介绍了颤动平台特定的依赖关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想用Ffltter从一个代码库中构建一个Android、iOS和网络应用程序。由于网络目前还不支持所有的颤动插件,我将不得不使用具有依赖项(例如dart:html
)的替代插件,而这些依赖项在Android和iOS上是不可用的。
如何根据运行应用程序的平台插入正确的实现,而不加载不必要/不可用的包?
推荐答案
使用条件导入可以做到这一点。您可以在这里找到语法的示例: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.dart
和html.dart
中。签名必须与stub.dart
中的签名匹配。
stub.dart
(在本例中为common.dart
)以外的其他地方定义的公共接口后面。然后,您可以在io.dart
和html.dart
中导入和实现common.dart
,并使用条件导入在程序根目录选择实现。这样,其他一切都只需依赖于common.dart
。
这篇关于颤动平台特定的依赖关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文