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"));
      }

任何帮助将不胜感激,在此先感谢

hfny718hf 回答:Flutter集成测试中特定于平台的代码

不确定如何实现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;
        });
      },);

  }

以上代码在两个平台上均显示了时间选择器,如下所示:

enter image description here

enter image description here

这样,您可能不需要像前面提到的那样使用Platform类,而直接在flutter driver测试中使用,您可以首先确定bottomsheet中显示的元素,然后点击或执行所需的操作。

希望这能回答您的问题。

本文链接:https://www.f2er.com/3153366.html

大家都在问