Найдите кнопку меню флаттер-сэндвич с помощью flutter_driver

Найдите кнопку меню флаттер-сэндвич с помощью flutter_driver


    Scaffold(
        key: widget.scaffoldKey,
        drawer: Observer(builder: (BuildContext context) {
          return DrawerMenu(
            user: controller.appStore.user,
            onTapLogout: controller.loginController.logout,
          );
        }),
        appBar: widget.appBar,
        body: widget.body);

кнопка, которую нужно идентифицировать


 test('test by inserting valid username and login', () async {
      await driver.tap(buttonFinder);

      expect(await driver.getText(loginName), "LoginName");
    });

1 ответ

Решение

Сэндвич-меню, о котором вы говорите, называется Drawer, и вы можете нажать на него, используя его toolTipсвойство. Если вы долго нажимаете на меню ящика, оно покажет вам всплывающую подсказку, как показано ниже:

Затем в тесте драйвера флаттера вы можете идентифицировать этот виджет, объявив средство поиска с помощью byToolTip метод, как показано ниже:

final drawerFinder = find.byTooltip('Open navigation menu');

А затем напишите свой тест как:

test('tap on drawer menu', () async {
        await driver.waitFor(drawerFinder);
        await driver.tap(drawerFinder);
        print('clicked on drawer');
      });

Решение, которое не является 100% безопасным, но позволяет не использовать всплывающую подсказку, следующее:

test('OpenDrawer', () async {
      await driver.tap(find.descendant(
        of: find.byType('AppBar'),
        matching: find.byType('IconButton'),
        firstMatchOnly: true,
      ));
    });
Другие вопросы по тегам