【发布时间】:2021-12-29 13:31:21
【问题描述】:
我制作了一个国际象棋时钟,但时间只有在您单击其中一个按钮时才会更新,我想要它,所以时间会不断更新。按下按钮后我有 setState() 函数,但没有别的。每隔 10 秒左右更新一次,这怎么会让人生气。谢谢。这是我的代码:
import 'package:flutter/material.dart';
...
Widget build(context) {
return MaterialApp(
home: Scaffold(// this is what creates the page, everything should be inside this cuz everything is inside the page
appBar: AppBar(//what is displayed at the top WOW
title: Text('chess clock'),
),
body: Column(
children: [
Container(
margin: EdgeInsets.all(150.0),
child: RaisedButton(
onPressed: () {
setState((){
if (button1==1){
button1=2;
minus=minus2-minus;
fminus=fminus+minus;
print(minus);
divid=DateTime.now().microsecondsSinceEpoch/1000000-start/1000000;
divid.round();
divid=divid-fminus;
minus=DateTime.now().microsecondsSinceEpoch/1000000;
divid=60.0-divid;
}
});
},
child: Text(divid.round().toString()),
)
),
Container(
margin: EdgeInsets.all(150.0),
child: RaisedButton(
onPressed: () {
setState((){
if (button1==2){
button1=1;
minus2=minus-minus2;
fminus2=fminus2+minus2;
divid2=DateTime.now().microsecondsSinceEpoch/1000000-start/1000000;
divid2.round();
divid2=divid2-fminus2;
minus2=DateTime.now().microsecondsSinceEpoch/1000000;
divid2=60.0-divid2;
}
});
},
child: Text(divid2.round().toString()),
...
【问题讨论】:
-
需要定时调用Timer,调用setState。看看Timer.periodic
-
每次定时器更新时都会切换到按钮 2。一个国际象棋时钟实际上是两个时钟,对吧?使按钮单击更改时钟,创建一个二元数组来保存每个计时器的值,并更新计时器函数以对活动时钟进行倒计时。如前所述,每次定时器更新时钟(每秒 10 次)时,按钮 1 的值都会为 2。感觉就像点击按钮什么都不做。