【问题标题】: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代码并不是编译错误,所以问题的前提是不正确的。考虑发布一个新问题,其中包含您遇到的编译错误的详细信息,因为这不应该是原因

标签: flutter


【解决方案1】:

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

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

https://pub.dev/packages/universal_io

【讨论】:

  • 缺少包是编译错误,检查 if(kIsWeb) 仅在编译成功后在运行时有效。这个和Platform.isWEB一样,不是解决方案。
  • 您的 pubspec 中的插件的 Dart 代码不应是缺少的包。
猜你喜欢
  • 2013-12-21
  • 1970-01-01
  • 2019-09-27
  • 2021-01-26
  • 2015-05-11
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
相关资源
最近更新 更多