我有一个集成测试,必须打开一个时间选择器,但是每个平台都有一个不同的时间选择器实现。因此,集成测试的流程在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"));
}
任何帮助将不胜感激,在此先感谢
答案 0 :(得分:0)
不确定如何实现TimePicker
,但通常CupertinoTimePicker
是在屏幕上呈现时间选择器的小部件。另外,根据要在屏幕上显示的位置,使用CupertinoTimePicker
,从两种平台上的UI角度来看,它的呈现效果均相同。例如,您可以在time picker
内部或Container
内部显示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
中显示的元素,然后点击或执行所需的操作。
希望这能回答您的问题。