gpt4 book ai didi

asynchronous - 如何在 flutter 应用程序中显示 5 分钟不可停止的计时器?

转载 作者:IT王子 更新时间:2023-10-29 07:23:58 24 4
gpt4 key购买 nike

我想在我的应用程序中显示一个 5 分钟的计时器,即使应用程序关闭也不会停止,并以 mm:ss 格式显示剩余时间。如何显示时间?

最佳答案

这是一个非常非常基本的例子,说明这种计时器如何工作,它持久地存储目标时间:

class TimerApp extends StatefulWidget {
@override
_TimerAppState createState() => _TimerAppState();
}

class _TimerAppState extends State<TimerApp> {
SharedPreferences prefs;
DateTime target;
String timeLeft = "";
bool running = true;

@override
void initState() async {
super.initState();

prefs = await SharedPreferences.getInstance();
target = DateTime.fromMillisecondsSinceEpoch(prefs.getInt('target'));

if (target == null || target < DateTime.now()) {
target = DateTime.now().add(Duration(minutes: 5));
}
executeTimer();
}

@override
void dispose() {
prefs.setInt('target', target.millisecondsSinceEpoch);
running = false;
super.dispose();
}

void executeTimer() async {
while (running) {
setState(() {
timeLeft = DateTime.now().isAfter(target)
? '5 min expired. Restart app to reset.'
: target.difference(DateTime.now()).toString();
});
await Future.delayed(Duration(seconds: 1), () {});
}
}

@override
Widget build(BuildContext context) {
return Align(
alignment: Alignment.center,
child: Text(timeLeft),
);
}
}

注意这个例子不是很充实;缺少几个功能,使用 while (running) 循环可能不是最优雅的解决方案。

这里有一些您可以查看的更多资源:

关于asynchronous - 如何在 flutter 应用程序中显示 5 分钟不可停止的计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53997910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com