Как добавить Top Level GestureDetector в Flutter? - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть домашняя страница и 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 минут нет взаимодействия с пользователем, приложение автоматически переходит на страницу входа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...