используя системную кнопку возврата из драйвера флаттера

Как я могу использовать системную кнопку «Назад» в интеграционном тесте?

Итак, я использую флаттер и пишу интеграционные тесты, в большинстве случаев я могу использовать навигацию AppBar, поиск ее по подсказке выглядит так:

driver.tap(find.byTooltip('Back'));

Но один из моих тестов открывает веб-страницу, после ее открытия мне нужно продолжить тесты, а это значит, что мне нужно нажать кнопку возврата системы, возможно ли это?

огромное спасибо


person martinseal1987    schedule 01.03.2019    source источник


Ответы (3)


Если на вашем компьютере установлено adb, вы можете запустить команду для выполнения обратного нажатия с помощью ключевого события:

import 'dart:io';
await Process.run(
  'adb', 
  <String>['shell', 'input', 'keyevent', 'KEYCODE_BACK'], 
  runInShell: true,
);
person Miguel Beltran    schedule 09.03.2020
comment
как насчет айфонов? как мы можем нажать кнопку домой и т.д .. программно - person Abhishek Ghaskata; 10.12.2020
comment
Кнопка «Домой» на iPhone не является кнопкой «Назад», она направляет пользователя на «Домой» устройства. Если вы хотите протестировать эквивалент обратного нажатия на iOS, вы можете попробовать перетаскивание справа налево. - person Miguel Beltran; 11.12.2020
comment
есть ли способ программно нажать главный экран на iPhone? - person Abhishek Ghaskata; 11.12.2020

Может это поможет тебе

 await device.shellExec('input', <String>['keyevent', 'KEYCODE_BACK']);

Найдено в одном из официальных тестов драйвера флаттера ссылка

person David Beljan    schedule 27.01.2020
comment
Кажется, что device.shellExec зависит от flutter_devicelab, который доступен только в рамках - person Miguel Beltran; 09.03.2020

Просмотрите эту ссылку. Короче говоря, вам нужно использовать класс WillPopScope, который обрабатывает кнопку возврата устройства с обратными вызовами.

person Darshan    schedule 02.03.2019
comment
не применимо из драйвера флаттера, я знаю о willPopScope и его использовании, но спасибо - person martinseal1987; 03.03.2019