testing - Flutter 集成测试中的平台特定代码
问题描述
我有一个必须打开时间选择器的集成测试,但是每个平台都有不同的时间选择器实现。因此,集成测试的流程必须在 Android 和 iOS 之间有所不同。我该如何实现呢?
我尝试在测试文件中使用这样的 Platform 类,但它不起作用:
//* 5) Choose time
await driver.tap(find.byValueKey('addRideTimePicker'));
if (Platform.isAndroid) {
await driver.tap(find.text("V REDU"));
}
if (Platform.isIOS) {
await driver.tap(find.text("OK"));
}
任何帮助将不胜感激,在此先感谢
解决方案
不确定您是如何实现的TimePicker
,但通常CupertinoTimePicker
是在屏幕上呈现时间选择器的小部件。此外,根据您想在屏幕上的哪个位置显示,使用CupertinoTimePicker
,它在两个平台上从 UI 角度呈现均等。例如,您可以显示time picker
insideContainer
或 inside bottomsheet
。显示内部时间选择器的示例代码bottomsheet
如下:
body: Center(
child: RaisedButton(
child: Text('Click'),
onPressed: () {
showModalBottomSheet(context: context, builder: (BuildContext builder) {
return Container(
child: time()
);
});
},
)
),
Widget time() {
return CupertinoTimerPicker(
mode: CupertinoTimerPickerMode.hms,
minuteInterval: 1,
secondInterval: 1,
initialTimerDuration: initialtimer,
onTimerDurationChanged: (Duration changedtimer) {
setState(() {
initialtimer = changedtimer;
});
},
);
}
上面的代码在两个平台上同样显示了时间选择器,如下所示:
这样,您可能不需要Platform
像您提到的那样直接在flutter driver
测试中使用类,您可以首先识别显示在中的元素,bottomsheet
然后相应地点击或执行您需要的操作。
希望这能回答你的问题。
推荐阅读
- mysql - MYSQL LEFT JOIN 返回意外结果
- python - 如何在 Flask 的 url_for 方法中使用 kwargs
- node.js - httpS 和 http/2 有什么区别?
- python - Dask 与 HTCondor 调度程序
- visual-studio - Unity 无法使用 IL2CPP 后端为 UWP 构建 GRPC 项目
- backbone.js - 如何替换 Marionette 3 上的 RegionManager 实例
- php - 在类中使用“共享”私有属性来构建流畅/不断发展的数据库查询是否存在问题?
- c - 在 C 中比较多个字符串的最佳方法是什么?
- sql - 编写查询以显示在 deptno 10 或 30 中没有报告经理的 ename?
- sql - 如何避免此 SQL 查询中的过度计数?