Flutter 跨平台条件import不同包

在查看Dio源码时,根据跳转指引进入源码发现是一个抽象类,没有实现具体业务需求,十分不解

abstract class Dio {
  factory Dio([BaseOptions? options]) => createDio(options);

  /// Default Request config. More see [BaseOptions] .
  late BaseOptions options;
  ......
}

点击createDio跳转到entry_stub.dart源码,发现非常简洁,没有实现具体逻辑

import '../dio.dart';

Dio createDio([BaseOptions? options]) => throw UnsupportedError('');

最终在细看dio.dart 源码发现依赖import其中的“奥妙”

import 'entry_stub.dart'
    if (dart.library.html) 'entry/dio_for_browser.dart'
    if (dart.library.io) 'entry/dio_for_native.dart';

我们可以看到这里使用到了条件导入,在编译时根据不同平台导入不同的依赖替换默认依赖。

在使用Flutter开发应用时,往往对于不同平台需要import不同包,在编译时由于平台限制导致编译不通过,针对该问题,我们可以根据不同平台导入对于平台依赖即可

举例说明

import 'platform.dart' if (dart.library.html) 'web.dart';

语法说明:

imoprt "默认依赖文件" if (条件)“满足条件时,使用该依赖替换默认依赖文件”

Dio 库里面也是有该方案进行平台兼容,可以看到 if 可以添加多次,这样的操作可以满足我们兼容不同平台的需求,希望本文章对你有所帮组。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Appium是一个用于自动化移动应用程序的开源工具,它支持多种移动平台和编程语言。Flutter是一种跨平台的移动应用程序开发框架,可以使用Dart语言编写应用程序。那么,如何在Appium中使用Flutter呢? 在Appium中使用Flutter,需要使用Flutter Driver库。Flutter Driver是一个用于测试Flutter应用程序的库,它提供了一组API来与Flutter应用程序进行交互。通过Flutter Driver,可以模拟用户操作,如点击按钮、输入文本等,并获取应用程序的状态和属性。 以下是一个使用Appium和Flutter Driver测试Flutter应用程序的示例代码: ```python from appium import webdriver from appium.webdriver.common.touch_action import TouchAction from time import sleep desired_caps = { 'platformName': 'Android', 'deviceName': 'device', 'app': '/path/to/your/flutter/app.apk', 'automationName': 'Flutter' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 等待应用程序启动 sleep(5) # 点击按钮 button = driver.find_element_by_id('button_id') button.click() # 输入文本 text_field = driver.find_element_by_id('text_field_id') text_field.send_keys('Hello, Appium!') # 获取应用程序状态和属性 app_state = driver.query_app_state() app_size = driver.get_window_size() # 执行手势操作 action = TouchAction(driver) action.press(x=100, y=200).move_to(x=300, y=400).release().perform() # 关闭应用程序 driver.quit() ``` 上述代码中,首先设置了Appium的配置信息,括平台名称、设备名称、应用程序路径和自动化引擎名称。然后,通过`webdriver.Remote`方法创建一个Appium驱动程序实例。接下来,可以使用驱动程序的各种方法来与Flutter应用程序进行交互,如查找元素、点击按钮、输入文本等。最后,使用`driver.quit()`方法关闭应用程序。 需要注意的是,上述示例代码中的`button_id`和`text_field_id`是示例元素的ID,实际使用时需要替换为你的应用程序中的元素ID。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值