【问题标题】:FlutterDriver: Use Android back buttonFlutterDriver:使用 Android 后退按钮
【发布时间】:2020-04-19 07:08:32
【问题描述】:

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

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

是否可以以某种方式告诉FlutterDriver 返回一页? (模拟一个android内部的后退按钮?)像这样:

driver.goPageBack()

非常感谢。 :)

【问题讨论】:

    标签: android flutter mobile dart


    【解决方案1】:

    在您的活动代码中试试这个。

    @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;
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢,我会研究这个机会。你知道我有什么方法可以在集成测试中访问 Flutter Navigator 吗?
      【解决方案3】:

      在 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多