我有主页和 bottomNavigationBar ,具有3至5页的视图,如下所示。每个页面视图都会打开新页面(新ASummary(索引:this._page)),例如;
每个子页面(例如: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分钟内没有用户交互,则应用会自动跳至登录页面。