向 Scaffold Appbar 添加多页点击计数器

如何解决向 Scaffold Appbar 添加多页点击计数器

您好,我正在使用导航器和路由创建一个包含多个页面的应用程序。 我想向 Scaffold Appbar 添加一个计数器,每次手指点击屏幕按钮时都会增加一个计数器(如果页面中存在多个按钮)。 此外,如果我更改页面,此计数器必须增加。 你能帮我理解这个问题吗? 我正在学习,所以结构可能是“初学者”版本。 谢谢。

解决方法

您可能可以将一些登录挂钩到 PageRouteBuilder,因为每个路由都从给定的页面经过(当然,它也必须在每个页面上)。

,

正如@Randal Schwartz 评论的那样,我们可以利用 SharedProject 类的 onGenerateRoute 属性:

MaterialApp

通过定义自定义 runApp(MaterialApp( home: BuilderPage(LoginArguments(false)),onGenerateRoute: generateRoute )); 函数:

generateRoute

然后,int counter = 0; // global variable outside of the classes Route<dynamic> generateRoute(RouteSettings settings) { switch (settings.name) { case 'home': counter++; return MaterialPageRoute(builder: (_) => HomeScreen()); case 'login': counter++; return MaterialPageRoute(builder: (_) => LoginScreen()); case 'register': counter++; return MaterialPageRoute(builder: (_) => RegisterScreen()); } } 可以通过加载它们的状态来显示 counter

Widget

注意:这个解决方案不是最优的。请务必考虑使用更高级的状态管理架构,例如 class HomeScreen extends StatefulWidget { const HomeScreen({ Key key }) : super(key: key); @override _HomeScreenState createState() => _HomeScreenState(); } class _HomeScreenState extends State<HomeScreen> { int _counter; @override void initState() { super.initState(); setState(() => _counter = counter); } void _increaseCounter() { counter++; setState(() => _counter++); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(child: Text(_counter.toString())),body: SafeArea( child: Center(child: GestureDetector( onTap: () { _increaseCounter(); },child: Text('test'),),); } } ,以更好地管理应用中不同 BLoC 之间的数据同步。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?