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

3

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

非常感谢任何帮助,提前致谢。


你找到解决方案了吗? - Bassam
暂时还没有,遗憾。 - k00na
根据这个问题,目前还不可能实现。 - Bassam
1个回答

0

不确定您如何实现TimePicker,但通常CupertinoTimePicker是在屏幕上呈现时间选择器的小部件。此外,根据您想要在屏幕上显示它的位置,使用CupertinoTimePicker,从UI角度来看,在两个平台上都可以平等地呈现。例如,您可以在Container内或bottomsheet内显示time picker。以下是一个在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中显示的元素,然后相应地轻敲或执行所需操作。

希望这回答了您的问题。


谢谢您的回答,但是这对我的情况没有帮助。我的问题是我想要为两个平台分别设置时间选择器。因此,集成测试应该知道它们正在运行的平台并相应地改变行为。 - k00na

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接