Flutter:打开页面时启动计时器

2sbarzqh  于 2023-02-25  发布在  Flutter
关注(0)|答案(3)|浏览(210)

我是新的Flutter,我试图启动一个计时器时,我打开一个新的页面,我想看到计时器值在新的页面,我尝试了4天,但我无法处理它
我希望当我单击按钮时,它导航到另一个新屏幕,当它打开新页面时,我希望启动计时器,并希望看到新页面中的计数器值

xj3cbfub

xj3cbfub1#

你必须在你的页面的init方法中初始化你的计时器值,所以每当页面初始化时,计时器将从init值开始。如果你能添加代码以获得更好的帮助,那就太好了。

kfgdxczn

kfgdxczn2#

这个示例小部件将每秒递增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);
  }
}
63lcw9qa

63lcw9qa3#

要在Flutter中导航到新页面时启动计时器,您可以使用State类的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();
  }
}

相关问题