如何在Flutter中添加顶级GestureDetector?

时间:2018-11-12 01:27:19

标签: timer flutter navigationbar gesturedetector

我有主页和 bottomNavigationBar ,具有3至5页的视图,如下所示。每个页面视图都会打开新页面(新ASummary(索引: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分钟内没有用户交互,计时器将跳至登录页面。如果用户与bottomNavigationBar页面进行交互,则GestureDetector和计时器可以正常工作。我对所有页面都使用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应用程序中,这样我就可以使用GestureDetector激活/停用home.dart计时器,甚至连我的应用程序都已扎根?还是这个想法有更好的选择?

想法是用户登录后,如果5分钟内没有用户交互,则应用会自动跳至登录页面。

0 个答案:

没有答案