Flutter 计算在后台完成任务的时间
Flutter count time to complete task in background
正在尝试 运行 在后台设置一个计时器,以向用户显示他们在结果页面上完成测验所花费的时间。
我已尝试使用下面的代码使用秒表,但收到错误消息 'start' was called on null.
class CardPage extends StatefulWidget {
static const String id = 'card_page';
final List<File> favpicz;
final timer = Stopwatch();
CardPage({@required this.favpicz});
@override
_CardPageState createState() => _CardPageState(favpicz);
}
class _CardPageState extends State<CardPage> with TickerProviderStateMixin {
//animation controllers
List<File> favpicz;
Stopwatch timer;
_CardPageState(this.favpicz);
@override
void initState() {
super.initState();
timer.start();
}
@override
void dispose() {
if (timer != null) {
timer.stop();
timer = null;
}
super.dispose();
}
如您所见,我想在用户到达测验屏幕时启动计时器。然后我想在转换到结果页面的函数上调用 timer.stop()。
在结果页面上,我想将时间表示为格式为 ex 的文本小部件。 3:57
秒表似乎不适合这个,我的大多数计时器搜索都是针对倒计时计时器或使用 Streams 在屏幕上停止观看应用程序,这对于此目的是不必要的。非常感谢帮助找到一个包或 class 向上计数而不是向下计数。
您应该在 StatefulWidget 的状态中初始化 timer
:
final timer = Stopwatch();
在 initState()
内初始化 timer
:
@override
void initState() {
super.initState();
timer = Stopwatch();
timer.start();
}
同时从您的 Stateful
class 中删除 timer
:
class CardPage extends StatefulWidget {
static const String id = 'card_page';
final List<File> favpicz;
final timer = Stopwatch(); // remove this
CardPage({@required this.favpicz});
@override
_CardPageState createState() => _CardPageState(favpicz);
}
正在尝试 运行 在后台设置一个计时器,以向用户显示他们在结果页面上完成测验所花费的时间。
我已尝试使用下面的代码使用秒表,但收到错误消息 'start' was called on null.
class CardPage extends StatefulWidget {
static const String id = 'card_page';
final List<File> favpicz;
final timer = Stopwatch();
CardPage({@required this.favpicz});
@override
_CardPageState createState() => _CardPageState(favpicz);
}
class _CardPageState extends State<CardPage> with TickerProviderStateMixin {
//animation controllers
List<File> favpicz;
Stopwatch timer;
_CardPageState(this.favpicz);
@override
void initState() {
super.initState();
timer.start();
}
@override
void dispose() {
if (timer != null) {
timer.stop();
timer = null;
}
super.dispose();
}
如您所见,我想在用户到达测验屏幕时启动计时器。然后我想在转换到结果页面的函数上调用 timer.stop()。
在结果页面上,我想将时间表示为格式为 ex 的文本小部件。 3:57
秒表似乎不适合这个,我的大多数计时器搜索都是针对倒计时计时器或使用 Streams 在屏幕上停止观看应用程序,这对于此目的是不必要的。非常感谢帮助找到一个包或 class 向上计数而不是向下计数。
您应该在 StatefulWidget 的状态中初始化 timer
:
final timer = Stopwatch();
在 initState()
内初始化 timer
:
@override
void initState() {
super.initState();
timer = Stopwatch();
timer.start();
}
同时从您的 Stateful
class 中删除 timer
:
class CardPage extends StatefulWidget {
static const String id = 'card_page';
final List<File> favpicz;
final timer = Stopwatch(); // remove this
CardPage({@required this.favpicz});
@override
_CardPageState createState() => _CardPageState(favpicz);
}