У меня есть домашняя страница и bottomNavigationBar с просмотром 3-5 страниц, как показано ниже. При каждом просмотре страницы открывается новая страница ( новая ASummary (index: this._page) ,), например;
- a_summary.dart,
- b_summary.dart и т. Д.
Каждая дочерняя страница (например: a_summary.dart) открывает различные страницы с взаимодействием с пользователем с использованием;
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => new Account()));
На каждой странице «Сводка» также открываются различные страницы с взаимодействием с пользователем с помощью Navigator.push. Дерево навигации / страница (a_summary.dart) очень глубокое, например, страница a_summary глубиной до 10 страниц.
- a_summary stateful
- aa.page
- aaa.page
- aaaa.page
- aaaaa.page etc.
На домашней странице таймер установлен на 5 минут. Если в течение 5 минут не происходит никакого взаимодействия с пользователем, таймер переходит на страницу входа. На моей домашней странице работает GestureDetector и таймер, если пользователь взаимодействует со страницами bottomNavigationBar. Я использую GestureDetector для всех своих страниц. моя функция таймера в home.dart. Но когда я вхожу в корневые страницы, такие как aaaaa.page или любые другие подобные страницы, мой домашний GestureDetector и таймер не работают.
код страницы home.dart:
class _MyUserHomePageState extends State<MyUserHomePage> {
Timer _timer;
PageController _pageController;
int _page;
// TODO: MAIN BUILD WIDGET
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: _handleUserInteraction,
child: new Scaffold(
body: new PageView(
children: [
new ASummary(index: this._page),
new BSummary(index: this._page),
new CSummary(index: this._page),
new DSummary(index: this._page),
new ESummary(index: this._page),
],
onPageChanged: onPageChanged,
controller: _pageController,
),
bottomNavigationBar: new Theme(
data: Theme.of(context).copyWith(
canvasColor: capitalDarkGreen,
primaryColor: capitalLightGreen,
child: new BottomNavigationBar(
items: [
new BottomNavigationBarItem(title: new Text( “A”,)),
new BottomNavigationBarItem(title: new Text( “B”,)),
new BottomNavigationBarItem(title: new Text( “C”,)),
new BottomNavigationBarItem(title: new Text( “D”,)),
new BottomNavigationBarItem(title: new Text( “E”,)),
],
onTap: navigationTapped,
currentIndex: this._page,
),
),
),
));
}
}
Каждая корневая страница находится в другой папке. Мой вопрос заключается в том, как добавить GestureDetector верхнего уровня в мое приложение Flutter, чтобы я мог активировать / деактивировать таймер home.dart с помощью GestureDetector, даже если мое приложение глубоко укоренилось? Или есть лучший вариант для этой идеи?
Идея заключается в том, что после входа пользователя в систему, если в течение 5 минут нет взаимодействия с пользователем, приложение автоматически переходит на страницу входа.