Flutter集成测试中的特定于平台的代码

问题描述 投票:0回答:1

我有一个必须打开时间选择器的集成测试,但是每个平台都有时间选择器的不同实现。因此,集成测试的流程在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"));
      }

非常感谢您,任何帮助,谢谢

testing flutter integration platform
1个回答
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;
        });
      },
    );

  }

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

enter image description here

enter image description here

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

希望这能回答您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.