FlutterDriver:使用Android后退按钮

时间:2019-12-30 14:33:17

标签: android flutter mobile dart

我有一个具有多个页面的Android移动应用程序,目前正在尝试为其编写简单的集成测试...

问题是我的应用仅使用内部Android后退手势,我没有后退按钮或类似的内容。

是否可以告诉FlutterDriver返回上一页? (模拟android内部的后退按钮?)类似这样的内容:

driver.goPageBack()

非常感谢。 :)

3 个答案:

答案 0 :(得分:2)

在您的活动代码中尝试此操作。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.YOUR_ACTIVITY);
    assert getSupportActionBar() != null;   //null check
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);   //show back button
}

@Override
public boolean onSupportNavigateUp() {
    finish();
    return true;
}

答案 1 :(得分:0)

我能找到的最接近的东西是一个包装,它是一个后退按钮拦截器,它具有用于模拟后退按钮按下情况的测试方法BackButtonInterceptor.popRoute()https://pub.dev/packages/back_button_interceptor

答案 2 :(得分:0)

在Flutter存储库中,有一个测试通过在平台通道上发送消息来模拟硬件后退按钮,如下所示:

final ByteData message = const JSONMethodCodec().encodeMethodCall(const MethodCall('popRoute'));
await ServicesBinding.instance!.defaultBinaryMessenger.handlePlatformMessage('flutter/navigation', message, (_) { });

https://github.com/flutter/flutter/blob/6688e63f68ebba0919a5fe3c8f8432bd8a65f81b/packages/flutter/test/widgets/router_test.dart#L725-L726