颤动平台特定的依赖关系 [英] Flutter platform specific dependencies

查看:0
本文介绍了颤动平台特定的依赖关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用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.darthtml.dart中。签名必须与stub.dart中的签名匹配。

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

这篇关于颤动平台特定的依赖关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆