Flutter 我的计时器快发疯了,它会减少2,3秒,而它应该只有1秒(计时器每秒钟被调用一次)

Flutter 我的计时器快发疯了,它会减少2,3秒,而它应该只有1秒(计时器每秒钟被调用一次),flutter,timer,state,Flutter,Timer,State,用flatter编写的一个非常简单的计时器。但计时器的时间从1跳到3,从3跳到6(疯狂),当它应该停止时,它会变为-(负)值。使用setState更新时间。 这是密码 导入“包装:颤振/材料.省道”; 导入“dart:async”; void main()=>runApp(MyApp()); 类MyApp扩展了无状态小部件{ @凌驾 小部件构建(构建上下文){ 返回材料PP( 标题:“计时器演示”, 主页:我的主页(标题:“我的计时器”), ); } } 类MyHomePage扩展Statefu

用flatter编写的一个非常简单的计时器。但计时器的时间从1跳到3,从3跳到6(疯狂),当它应该停止时,它会变为-(负)值。使用setState更新时间。 这是密码

导入“包装:颤振/材料.省道”;
导入“dart:async”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“计时器演示”,
主页:我的主页(标题:“我的计时器”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key?Key,必选this.title}):super(Key:Key);
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
void updateUI()=>setState((){});
var timer=MyTimer();
@凌驾
小部件构建(构建上下文){
定时器启动(updateUI);
返回脚手架(
appBar:appBar(
标题:文本(“计时器”),
),
正文:中(
子:文本(timer.time.toString()),
),
);
}
}
类MyTimer{
整数时间=10;
开始(函数回调){
计时器。周期((持续时间(秒:1)),(计时器){
时间--;
回调();

如果(time您在
build()
方法中启动计时器,这意味着每次重新启动UI时,
start()
函数在
MyTimer
类中调用

您可以尝试在initState方法内调用
计时器.start(updateUI)
(将其添加到
\u MyHomePageState
),例如:


您正在
build()
方法中启动计时器,这意味着每次重新启动UI时,都会在
MyTimer
类中调用
start()
函数

您可以尝试在initState方法内调用
计时器.start(updateUI)
(将其添加到
\u MyHomePageState
),例如:

@override
void initState() {
  super.initState();
  timer.start(updateUI);
}