跨平台颤振 - 如何处理依赖关系?
Posted
技术标签:
【中文标题】跨平台颤振 - 如何处理依赖关系?【英文标题】:Cross platform flutter - how to handle dependencies? 【发布时间】:2021-06-13 06:06:59 【问题描述】:在移动端和 PC 端开发 Flutter 应用程序时,移动端插件通常同时涵盖 ios 和 android,因此移动端的代码库保持不变。现在有了 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 代码不应是缺少的包。以上是关于跨平台颤振 - 如何处理依赖关系?的主要内容,如果未能解决你的问题,请参考以下文章