|
...
|
...
|
@@ -93,10 +93,14 @@ class TableManagerPage extends StatefulWidget { |
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class TableManagerPageState extends State<TableManagerPage> {
|
|
|
|
class TableManagerPageState extends State<TableManagerPage>
|
|
|
|
with WidgetsBindingObserver {
|
|
|
|
TableManagerModelOrReserve? tableManagerModel;
|
|
|
|
final ItemScrollController itemScrollController = ItemScrollController();
|
|
|
|
bool isTap = false;
|
|
|
|
bool _isFollowingToday = true;
|
|
|
|
late DateTime _lastObservedDay;
|
|
|
|
Timer? _dayCheckTimer;
|
|
|
|
// 进度监听对象
|
|
|
|
int? min;
|
|
|
|
int? max;
|
|
...
|
...
|
@@ -200,6 +204,10 @@ class TableManagerPageState extends State<TableManagerPage> { |
|
|
|
dateTime = DateTime.now();
|
|
|
|
dateText = returnDate(dateTime);
|
|
|
|
dateTimeSelect = dateTime;
|
|
|
|
_lastObservedDay = DateTime(dateTime.year, dateTime.month, dateTime.day);
|
|
|
|
|
|
|
|
WidgetsBinding.instance.addObserver(this);
|
|
|
|
_startDayCheckTimer();
|
|
|
|
|
|
|
|
personNumList = Utils.getPersonNumList();
|
|
|
|
|
|
...
|
...
|
@@ -262,6 +270,7 @@ class TableManagerPageState extends State<TableManagerPage> { |
|
|
|
};
|
|
|
|
await storeBaseIndoProvider.getMealSectionByDay(context, pramas,
|
|
|
|
showLoading: false);
|
|
|
|
if (!mounted) return;
|
|
|
|
initTimeTable(needInit: needInit);
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -431,6 +440,9 @@ class TableManagerPageState extends State<TableManagerPage> { |
|
|
|
//生成日期文本
|
|
|
|
createDateText1(BuildContext context, DateTime day) {
|
|
|
|
if (Utils.isOneDay(day, dateTime)) return; //日期没变
|
|
|
|
final DateTime now = DateTime.now();
|
|
|
|
_isFollowingToday = Utils.isOneDay(day, now);
|
|
|
|
_lastObservedDay = DateTime(now.year, now.month, now.day);
|
|
|
|
dateTimeSelect = day;
|
|
|
|
|
|
|
|
dateText = returnDate(day);
|
|
...
|
...
|
@@ -473,6 +485,51 @@ class TableManagerPageState extends State<TableManagerPage> { |
|
|
|
return date;
|
|
|
|
}
|
|
|
|
|
|
|
|
void _startDayCheckTimer() {
|
|
|
|
_dayCheckTimer?.cancel();
|
|
|
|
_dayCheckTimer = Timer.periodic(const Duration(minutes: 1), (_) {
|
|
|
|
_checkDateRollover();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
void _refreshDateTexts() {
|
|
|
|
dateText = returnDate(dateTime);
|
|
|
|
selectDateStr = returnDayDateStr(dateTime);
|
|
|
|
if (currTimeIndex != null &&
|
|
|
|
(storeBaseIndoProvider.dayDateData?.length ?? 0) > 0) {
|
|
|
|
selectWeekAndLunarCalendar = returnWeekAndLunarCalendar(dateTime, context);
|
|
|
|
}
|
|
|
|
if (mounted) {
|
|
|
|
setState(() {});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void _checkDateRollover() {
|
|
|
|
if (!mounted) return;
|
|
|
|
|
|
|
|
final DateTime now = DateTime.now();
|
|
|
|
if (Utils.isOneDay(now, _lastObservedDay)) return;
|
|
|
|
_lastObservedDay = DateTime(now.year, now.month, now.day);
|
|
|
|
|
|
|
|
if (_isFollowingToday) {
|
|
|
|
dateTime = now;
|
|
|
|
dateTimeSelect = dateTime;
|
|
|
|
_refreshDateTexts();
|
|
|
|
getMealSectionByDay();
|
|
|
|
} else {
|
|
|
|
// 用户手动选了其他日期时,只重算“今天/明天/后天”文案,不抢回今天。
|
|
|
|
_refreshDateTexts();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
void didChangeAppLifecycleState(AppLifecycleState state) {
|
|
|
|
super.didChangeAppLifecycleState(state);
|
|
|
|
if (state == AppLifecycleState.resumed) {
|
|
|
|
_checkDateRollover();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
_getDoltStr(BuildContext context) {
|
|
|
|
if ((storeBaseIndoProvider.dayDateData?.length ?? 0) > 0) {
|
|
|
|
int index = storeBaseIndoProvider.dayDateData!
|
|
...
|
...
|
@@ -519,6 +576,8 @@ class TableManagerPageState extends State<TableManagerPage> { |
|
|
|
@override
|
|
|
|
void dispose() {
|
|
|
|
// TODO: implement dispose
|
|
|
|
WidgetsBinding.instance.removeObserver(this);
|
|
|
|
_dayCheckTimer?.cancel();
|
|
|
|
super.dispose();
|
|
|
|
EventBus().off("refresh_tablemanager");
|
|
|
|
EventBus().off("refresh_tablePhoto");
|
...
|
...
|
|