Timer 如何将顶级手势检测器添加到颤振?
我有主页和底部导航栏,有3到5个页面视图,如下所示。每个页面视图都会打开新页面(新建一个摘要(索引:this.\u page),例如Timer 如何将顶级手势检测器添加到颤振?,timer,flutter,navigationbar,gesturedetector,Timer,Flutter,Navigationbar,Gesturedetector,我有主页和底部导航栏,有3到5个页面视图,如下所示。每个页面视图都会打开新页面(新建一个摘要(索引:this.\u page),例如 a_.dart b_摘要、省道等 每个子页面(例如:a_summary.dart)打开一个不同的页面,用户可以使用 Navigator.push( context, new MaterialPageRoute( builder: (context) => new Account())); 每个摘要页面还使用Navigator.p
- a_.dart
- b_摘要、省道等
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => new Account()));
每个摘要页面还使用Navigator.push打开不同的页面,用户可以进行交互。导航树/页面(a_summary.dart)非常深,例如一个长达10页的_摘要页面
- a_summary stateful
- aa.page
- aaa.page
- aaaa.page
- aaaaa.page etc.
在主页中,我将计时器设置为5分钟。如果5分钟内没有用户交互,计时器将跳转到登录页面。我的主页如果用户与bottomNavigationBar页面进行交互,则GestureDetector和计时器可以工作。我在所有页面上都使用手势检测器。我的计时器在home.dart中运行。但是,当我进入像aaaaa.page或任何其他类似页面这样的根页面时,我的主页手势检测器和计时器不起作用
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,
),
),
),
));
}
}
class\u MyUserHomePageState扩展状态{
定时器(u定时器),;
页面控制器_页面控制器;
国际网页;
//TODO:主构建小部件
@凌驾
小部件构建(构建上下文){
返回手势检测器(
onTap:_handleUserInteraction,
儿童:新脚手架(
正文:新建页面视图(
儿童:[
新目录(索引:本页),
新的B摘要(索引:本页),
新的C摘要(索引:本页),
新数据摘要(索引:本页),
新的电子摘要(索引:本页),
],
onPageChanged:onPageChanged,
控制器:_pageController,
),
底部导航栏:新主题(
数据:Theme.of(context).copyWith(
画布颜色:capitalDarkGreen,
原色:capitalLightGreen,
子项:新的底部导航栏(
项目:[
新的BottomNavigationBarItem(标题:新文本(“A”),
新的BottomNavigationBarItem(标题:新文本(“B”),
新的BottomNavigationBarItem(标题:新文本(“C”),
新的BottomNavigationBarItem(标题:新文本(“D”),
新的BottomNavigationBarItem(标题:新文本(“E”),
],
onTap:navigationTapped,
当前索引:本页,
),
),
),
));
}
}
每个根页面位于不同的文件夹下。我的问题是如何将顶级的GestureDetector添加到我的Flitter应用程序中,这样我就可以使用GestureDetector激活/停用我的home.dart计时器,即使我的应用程序根深蒂固?还是有更好的选择
想法是在用户登录后,如果5分钟内没有用户交互,应用程序会自动跳转到登录页面。使用
手势检测器将不可能。您可能想使用监听器
或自定义渲染对象
。谢谢Remi,我可以在这里提供一些示例,以便修改我的代码?如何使用全局RenderObject或Listener以便访问根深蒂固的页面(*.dart)?