我試圖在應用程式恢復時更新這兩個變數,變數是分鐘和小時。現在,當我恢復應用程式時,值不會更新。
@override
void initState() {
super.initState();
WidgetsBinding.instance!.addObserver(this);
dateTimeNow = DateTime.parse('${prefs.getString('startTime')}');
startedDateTime = DateTime.now();
minutes = startedDateTime.difference(dateTimeNow).inMinutes % 60;
hours = startedDateTime.difference(dateTimeNow).inHours;
if (minutes < 0) {
minutes = 0;
}
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.inactive:
print("Inactive");
break;
case AppLifecycleState.paused:
print("Paused");
break;
case AppLifecycleState.resumed:
print('resumed');
setState(() { // trying to updated
minutes = startedDateTime.difference(dateTimeNow).inMinutes % 60;
hours = startedDateTime.difference(dateTimeNow).inHours;
});
break;
}
}
uj5u.com熱心網友回復:
您似乎沒有更新該startedDateTime值。您僅在狀態的第一次初始化期間設定它,但稍后您不會更新該值。這意味著,即使在使用 更新您的值之后didChangeAppLifecycleState, thestartedDateTime仍然是相同的,因此minutesorhours值保持不變。
嘗試做這樣的事情:
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state); // <-- Add this as well
switch (state) {
<...>
case AppLifecycleState.resumed:
print('resumed');
setState(() {
// trying to updated
startedDateTime = DateTime.now(); // <-- Update the value
minutes = startedDateTime.difference(dateTimeNow).inMinutes % 60;
hours = startedDateTime.difference(dateTimeNow).inHours;
});
break;
}
}
uj5u.com熱心網友回復:
請在方法super.didChangeAppLifecycleState(state);末尾添加didChangeAppLifecycleState()如下:
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.inactive:
print("Inactive");
break;
case AppLifecycleState.paused:
print("Paused");
break;
case AppLifecycleState.resumed:
print('resumed');
setState(() { // trying to updated
minutes = startedDateTime.difference(dateTimeNow).inMinutes % 60;
hours = startedDateTime.difference(dateTimeNow).inHours;
});
break;
}
super.didChangeAppLifecycleState(state);
}
并覆寫 dispose 方法:
void dispose() {
WidgetsBinding.instance!.removeObserver(this);
super.dispose();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/449687.html
