跨平台颤振 - 如何处理依赖关系?

Posted

技术标签:

【中文标题】跨平台颤振 - 如何处理依赖关系?【英文标题】:Cross platform flutter - how to handle dependencies? 【发布时间】:2021-06-13 06:06:59 【问题描述】:

在移动端和 PC 端开发 Flutter 应用程序时,移动端插件通常同时涵盖 iosandroid,因此移动端的代码库保持不变。现在有了 PC 和 Web,插件并不适用于所有平台。 在 dart.io 中有 Platform.isIOS 等可以改变平台的行为,但只能在运行时。 例如,如果插件在 Windows 上不存在,我需要在编译时有条件地导入插件。像相机、sqlite 数据库、文件缓存等。 有人说要让平台相关的代码进入小部件等,但我仍然需要导入 widget.dart 并且 it 将导入一个不存在的插件。因此存在编译错误,修复该错误的唯一方法是使用不同版本的代码。就我而言,这将是大多数更改的 dart 文件。 有没有办法让我的代码共享但在某些平台上使用不同的插件?

【问题讨论】:

为某些平台没有原生实现的插件导入Dart代码并不是编译错误,所以问题的前提是不正确的。考虑发布一个新问题,其中包含您遇到的编译错误的详细信息,因为这不应该是原因 【参考方案1】:

您可以通过检查来检查应用程序是否在 Web 上运行 如果(kIsWeb) ...

然后使用适用于 Flutter Web 的替代包。 对于 dart:io 有一个替代方案,它适用于所有称为universal_io 的平台

https://pub.dev/packages/universal_io

【讨论】:

缺少包是编译错误,检查 if(kIsWeb) 仅在编译成功后在运行时有效。这个和Platform.isWEB一样,不是解决方案。 您的 pubspec 中的插件的 Dart 代码不应是缺少的包。

以上是关于跨平台颤振 - 如何处理依赖关系?的主要内容,如果未能解决你的问题,请参考以下文章

Vue-test-utils | Jest:如何处理依赖关系?

IOS 如何处理多个网络请求的先后(依赖)关系

使用组件依赖时如何处理多个 Dagger 组件

browserify 如何处理循环依赖?

如何处理未满足的对等依赖?

阿里P7教你该如何处理个人发展与平台的关系