当前位置: 首页 > 知识库问答 >
问题:

如何为飘飘网络和移动设备分别添加软件包?

邰昀
2023-03-14

我正在创建一个针对Android/iOS和Web的Flutter项目。是否有任何方法可以分别为Flutter移动和Web添加支持的软件包。例如,我在Flutter移动应用程序中使用dart:io包来保存文件,但Flutter web不支持它,因此对于web,我使用dart:js包来下载web应用程序中的文件。

对于C#,我们只是使用条件符号,但Flutter我找不到任何解决方案。

问题是我无法在我的main.dart文件中导入这两个包。任何人都可以帮助我实现这一目标

共有2个答案

宇文俊风
2023-03-14

您应该分别实现代码,例如< code>my_ui_web.dart和< code>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;
井翰
2023-03-14

Dart有条件导入,可以根据平台库的可用性来决定。

这意味着您可以在您的包中创建一个使用< code>dart:io的库,以及另一个使用< code>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.

重要的部分是,您为这些库提供相同的 API - 具有相同成员的相同类型和相同的顶级函数 - 以便无论导入哪个库,使用它的代码仍然有效。

当你编译程序时,只使用其中一个库,所以如果其他库不正确,你不会得到警告。为了确保万无一失,您应该在所有支持的平台上测试代码。

 类似资料:
  • 我正在尝试在Android设备上启动我的Flutter应用程序,直到昨天我才能够,但是今天突然间我在启动它时收到此错误: 我试过删除. gradle文件夹,但不起作用。 编辑 这是我的~/。zshrc文件

  • 我有自定义的本地iOS和Android库。现在我需要创建一个包含这些库的Flitter插件,用于开发使用这些库的Flatter应用程序。我已经在Flutter插件项目中设置了iOS库。但我很难包含Android库。Android库是一个.aar文件。我在网上搜索,但找到的信息有限。这些解决方案都不起作用。基本上,问题是:构建aar时不支持直接本地.aar文件依赖关系。 这里有一个关于这个的讨论。但

  • 有没有一种方法可以强制Flutter重画所有的窗口小部件(比如在区域设置改变之后)?

  • 飘刃 (Piao Ren) Vue 项目前端工程构建工具,使用 Rollup 打包 特点优势 源码少,除去第三方工具,飘刃所有核心代码共8个文件不到1000行,看源码不头疼 速度快,开发过程中无需 babel 转译,飘刃只转 import/export ,其余直接输出到浏览器 效率高,使用谷歌浏览器 99.9% 源码调试,无需 source map ,告别组件 this 乱指 window 够直观

  • 找不到名为“androidx”的选项。运行“flutter-h”(或“flutter-h”)以获取可用的颤振命令和选项。 我从android studio 3.6.1创建项目。 E: \软衣服\颤动 [√] Android toolchain -为Android设备开发(Android SDK版本28 . 0 . 3)< br > Android SDK位于E:\ SOFTWEAR \ ADT-b

  • 我正在尝试使用firebase应用程序中的文本,每个文本的每个页面视图,但它给了我这个拒绝的权限日志,我也尝试过使用FutureBuilder,但它给出了相同的错误。 我的错误日志: w/Firestore(28023):(0 . 6 . 6-dev)[Firestore]:监听查询(测试)失败:状态{code=PERMISSION_DENIED,description =缺少权限或权限不足。,c