Chi*_*nnu 5 dart flutter flutter-web
我正在创建一个面向 Android/iOS 和 Web 的 Flutter 项目,有什么方法可以分别为 Flutter Mobile 和 Web 添加支持的包。例如,我在 Flutter 移动应用程序中使用 dart:io 包来保存文件,但在 Flutter web 中不支持它,因此对于 web,我使用 dart:js 包下载 web 应用程序中的文件。
对于 C#,我们只是使用条件符号,但 Flutter 我找不到任何解决方案。
问题是我无法在 main.dart 文件中导入这两个包。谁能帮我实现这一目标
Dart 具有条件导入,可以根据平台库的可用性进行调整。
这意味着您可以在您的包中创建一个使用 的库dart:io,另一个使用dart:js,然后导入其中任何一个受支持的库。
import "file_loader.dart" // Version which just throws UnsupportedError
if (dart.library.io) "file_loader_io.dart"
if (dart.library.js) "file_loader_js.dart";
// Use imported API.
Run Code Online (Sandbox Code Playgroud)
重要的部分是你给这些库提供相同的 API——相同的类型和相同的成员,以及相同的顶级函数——这样无论导入哪个库,使用它的代码仍然有效。
编译程序时,只会使用其中一个库,因此如果其他库不正确,您将不会收到警告。您应该在所有支持的平台上测试代码,只是为了确定。
例如,您应该单独实现代码,my_ui_web.dart并且my_ui_mobile.dart
然后你可以使用 if 导入这些文件:
import 'package:my_awesome_app/my_ui_mobile.dart'
if (dart.library.html) 'package:my_awesome_app/my_ui_web.dart'
as myUI;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2760 次 |
| 最近记录: |