【发布时间】:2019-12-12 09:43:03
【问题描述】:
我是 Flutter 的新手,我正在构建一个真正依赖于日期的 Flutter 应用程序。基本上,我希望加载的内容在当天保持不变,然后在用户第二天打开应用程序时更新,即使他们在距午夜 5 分钟关闭应用程序也是如此。
我注意到 initState 只被调用一次。如果用户打开 Flutter 应用然后关闭它,再次打开的应用会显示相同的内容。如果用户打开应用程序并且它恰好是未来日期但如果它仍然是当前日期,我想确保状态更新,保持不变。
现在,我正在使用 Shared Preferences 来保存日期并再次检查它,但我不确定如何确保每次运行应用程序时都检查它。
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'dart:async';
import 'package:shared_preferences/shared_preferences.dart';
class HomePage extends StatefulWidget {
@override
_HomePage createState() => _HomePage();
}
class _HomePage extends State<HomePage> {
String _todaysDate;
String _yesterdayDate;
final now = DateTime.now();
@override
void initState(){
super.initState();
_setupDateDisplay().then((_todaysDate){
_checkDate(_todaysDate);
});
}
Future<String> _setupDateDisplay() async {
_todaysDate = DateFormat.yMMMMd("en_US").format(now);
return _todaysDate;
}
_checkDate(String _todaysDate) async{
sharedPreferences = await SharedPreferences.getInstance();
String _yesterdayDate = sharedPreferences.getString('lastDate') ?? '';
if (_todaysDate != _yesterdayDate){
//SHOW NEW CONTENT
sharedPreferences.setString('lastDate', _todaysDate);
}else{
//SHOW SAME CONTENT
}
}
}
【问题讨论】: