【发布时间】:2020-02-20 12:38:25
【问题描述】:
我是 Flutter 的新手,因此决定构建一个简单的计时器应用程序,该应用程序计算自启动以来经过的秒数,并最终显示错误的时间。计时器从 0 开始,然后递增到 1,从那时起,它似乎呈指数增长。
main.dart
import 'package:flutter/material.dart';
import 'app.dart';
void main() => runApp(App());
app.dart
import 'package:flutter/material.dart';
import 'package:async/async.dart';
import 'clock_widget.dart';
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Timer",
home: Scaffold(
appBar: AppBar(
title: Text("Timer"),
centerTitle: true,
),
body: Row(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
ClockWidget(),
Text("seconds", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 35),)
],
)
],
)
),
);
}
clock_widget.dart
import 'dart:async';
import 'package:flutter/material.dart';
class ClockWidget extends StatefulWidget {
@override
ClockWidgetState createState() => ClockWidgetState();
}
class ClockWidgetState extends State<ClockWidget> {
@override
int _secondCount = 0;
Widget build(BuildContext context) {
Timer.periodic(Duration(seconds: 1), (Timer t) => (setState(() {_secondCount+=1;})));
print("${_secondCount}");
return Text("${_secondCount}", style: TextStyle(fontSize: 75, color: Color.fromRGBO(30, 144, 255, 1)),);
}
}
我尝试了很多方法,但对我来说,这似乎是最简单的一种,而且在逻辑上它似乎是正确的。每隔一秒调用一次 setState 会增加 _secondsCount。
【问题讨论】:
-
你试过
_secondCount=t.tickintsead 的递增吗? -
每秒,在每次构建方法调用时,您都会创建一个新的 Timer。所有这些计时器都在 _secondCount 中增加一秒。在 initState 中只定义一次 Timer。以下答案中的示例
-
@the0val 不,我没有,但我一定会尝试一下谢谢!
标签: flutter dart flutter-timer