我是新的Flutter,我试图启动一个计时器时,我打开一个新的页面,我想看到计时器值在新的页面,我尝试了4天,但我无法处理它我希望当我单击按钮时,它导航到另一个新屏幕,当它打开新页面时,我希望启动计时器,并希望看到新页面中的计数器值
xj3cbfub1#
你必须在你的页面的init方法中初始化你的计时器值,所以每当页面初始化时,计时器将从init值开始。如果你能添加代码以获得更好的帮助,那就太好了。
kfgdxczn2#
这个示例小部件将每秒递增counterValue变量,并在Text小部件中显示新的状态。
counterValue
Text
class Bird extends StatefulWidget { const Bird({ super.key, }); @override State<Bird> createState() => _BirdState(); } class _BirdState extends State<Bird> { int counterValue = 0; late Timer timer; @override void initState() { super.initState(); timer = Timer(Duration(seconds: 1), (_) { setState(() { counterValue++; }); }); } @override Widget build(BuildContext context) { return Text(counterValue); } }
63lcw9qa3#
要在Flutter中导航到新页面时启动计时器,您可以使用State类的initState()方法。在第一次将小部件插入到小部件树中时调用此方法。您可以在此方法中启动计时器,并使用setState()更新计数器值。注意,我们在dispose()方法中使用cancel计时器以避免内存泄漏。
initState()
setState()
dispose()
cancel
class NewPage extends StatefulWidget { @override _NewPageState createState() => _NewPageState(); } class _NewPageState extends State<NewPage> { Timer _timer; int _counter = 0; @override void initState() { super.initState(); startTimer(); } void startTimer() { _timer = Timer.periodic(Duration(seconds: 1), (timer) => setState(() => _counter++) ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('New Page'), ), body: Center( child: Text('Counter: $_counter'), ), ); } @override void dispose() { _timer.cancel(); super.dispose(); } }
3条答案
按热度按时间xj3cbfub1#
你必须在你的页面的init方法中初始化你的计时器值,所以每当页面初始化时,计时器将从init值开始。如果你能添加代码以获得更好的帮助,那就太好了。
kfgdxczn2#
这个示例小部件将每秒递增
counterValue
变量,并在Text
小部件中显示新的状态。63lcw9qa3#
要在Flutter中导航到新页面时启动计时器,您可以使用State类的
initState()
方法。在第一次将小部件插入到小部件树中时调用此方法。您可以在此方法中启动计时器,并使用setState()
更新计数器值。注意,我们在
dispose()
方法中使用cancel
计时器以避免内存泄漏。