|
|
|
import 'dart:ffi';
|
|
|
|
|
|
|
|
import 'package:common_utils/common_utils.dart';
|
|
|
|
import 'package:dotted_border/dotted_border.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
...
|
...
|
@@ -66,6 +67,7 @@ class SelectTableFPageState extends State<SelectTableFPage> { |
|
|
|
int selectNum = 0;
|
|
|
|
bool isSelected = true; //全部按钮
|
|
|
|
int _selectNumber;
|
|
|
|
Map dailyMap = {}; // 早市对应半点钟,午市对应半点钟、晚市对应半点钟
|
|
|
|
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
...
|
...
|
@@ -74,11 +76,90 @@ class SelectTableFPageState extends State<SelectTableFPage> { |
|
|
|
for (int i = 1; i < 31; i++) {
|
|
|
|
personNumList.add(i.toString());
|
|
|
|
}
|
|
|
|
initDateHourMinuteList(context);
|
|
|
|
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
|
|
getTableList();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
/// 早市、午市、晚市对应的半个小时间隔时间段
|
|
|
|
initDateHourMinuteList(BuildContext context) async {
|
|
|
|
UserModel userModel = Provider.of<UserModel>(context, listen: false);
|
|
|
|
String morning =
|
|
|
|
userModel.user.morning.isEmpty ? "00:00-00:00" : userModel.user.morning;
|
|
|
|
String noon =
|
|
|
|
userModel.user.noon.isEmpty ? "00:00-00:00" : userModel.user.noon;
|
|
|
|
String night =
|
|
|
|
userModel.user.night.isEmpty ? "00:00-00:00" : userModel.user.night;
|
|
|
|
userModel.user.morning == ''
|
|
|
|
? dailyMap.putIfAbsent('morning', () => '')
|
|
|
|
: dailyMap.putIfAbsent(
|
|
|
|
'morning', () => _getHourAndMinute(userModel.user.morning, 1));
|
|
|
|
userModel.user.noon == ''
|
|
|
|
? dailyMap.putIfAbsent('noon', () => '')
|
|
|
|
: dailyMap.putIfAbsent(
|
|
|
|
'noon', () => _getHourAndMinute(userModel.user.noon, 2));
|
|
|
|
userModel.user.night == ''
|
|
|
|
? dailyMap.putIfAbsent('night', () => '')
|
|
|
|
: dailyMap.putIfAbsent(
|
|
|
|
'night', () => _getHourAndMinute(userModel.user.night, 3));
|
|
|
|
// _initSunDateList(
|
|
|
|
// userModel.user.morning, userModel.user.noon, userModel.user.night);
|
|
|
|
}
|
|
|
|
|
|
|
|
//根据获取时间 11:00-12:30 获取30分钟间隔组装的数组
|
|
|
|
_getHourAndMinute(String hourAndMinuteStr, int mnd) {
|
|
|
|
List tempDate = hourAndMinuteStr.split("-");
|
|
|
|
String beginDate = tempDate[0];
|
|
|
|
String endDate = tempDate[1];
|
|
|
|
List tempHour = beginDate.split(':');
|
|
|
|
|
|
|
|
/*获取开始小时*/
|
|
|
|
int beginHour = int.parse(tempHour[0]);
|
|
|
|
/*获取开始分钟*/
|
|
|
|
int beginMinute = int.parse(tempHour[1]);
|
|
|
|
List res = [];
|
|
|
|
bool tempLimit = true;
|
|
|
|
while (tempLimit) {
|
|
|
|
String temp = _dealTime(beginHour, beginMinute);
|
|
|
|
|
|
|
|
// bool tempSelect = false;
|
|
|
|
|
|
|
|
// Map tempMap = {'title': temp, 'select': tempSelect};
|
|
|
|
res.add(temp);
|
|
|
|
if (temp == endDate) {
|
|
|
|
tempLimit = false;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (beginMinute == 30) {
|
|
|
|
beginHour++;
|
|
|
|
if (beginHour >= 24) {
|
|
|
|
beginHour = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
beginMinute = (beginMinute + 30) % 60;
|
|
|
|
}
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// 根据时间和分钟组装 格式:11:00
|
|
|
|
_dealTime(int begin, int mm) {
|
|
|
|
String sb = '';
|
|
|
|
if (begin < 10) {
|
|
|
|
sb = '0$begin';
|
|
|
|
} else {
|
|
|
|
sb = '$begin';
|
|
|
|
}
|
|
|
|
sb = '$sb:';
|
|
|
|
if (mm < 10) {
|
|
|
|
sb = '${sb}0${mm}';
|
|
|
|
} else {
|
|
|
|
sb = '${sb}${mm}';
|
|
|
|
}
|
|
|
|
return sb;
|
|
|
|
}
|
|
|
|
|
|
|
|
//获取桌位列表
|
|
|
|
getTableList({needLoading = true}) async {
|
|
|
|
UserModel userModel = Provider.of<UserModel>(context, listen: false);
|
|
...
|
...
|
@@ -247,24 +328,46 @@ class SelectTableFPageState extends State<SelectTableFPage> { |
|
|
|
|
|
|
|
//获取一天开始-结束时间字符串
|
|
|
|
String _getRdate() {
|
|
|
|
String keys = '';
|
|
|
|
|
|
|
|
if (widget.ddate_slot == '1') {
|
|
|
|
//早市
|
|
|
|
keys = 'morning';
|
|
|
|
} else if (widget.ddate_slot == '2') {
|
|
|
|
//午市
|
|
|
|
keys = 'noon';
|
|
|
|
} else if (widget.ddate_slot == '3') {
|
|
|
|
//晚市
|
|
|
|
keys = 'night';
|
|
|
|
}
|
|
|
|
String ymd =
|
|
|
|
DateUtil.formatDate(widget.dateTime, format: DateFormats.y_mo_d);
|
|
|
|
String timeStrStart = '';
|
|
|
|
String timeStrEnd = '';
|
|
|
|
//一天开始时间
|
|
|
|
double startDay = (DateTime.parse((widget.dateTime.year.toString() +
|
|
|
|
"-" +
|
|
|
|
Utils.addZeroNumber(widget.dateTime.month) +
|
|
|
|
"-" +
|
|
|
|
Utils.addZeroNumber(widget.dateTime.day) +
|
|
|
|
" 00:00:00"))
|
|
|
|
.millisecondsSinceEpoch) /
|
|
|
|
1000;
|
|
|
|
double startDay;
|
|
|
|
//一天结束时间
|
|
|
|
double endDay = (DateTime.parse((widget.dateTime.year.toString() +
|
|
|
|
"-" +
|
|
|
|
Utils.addZeroNumber(widget.dateTime.month) +
|
|
|
|
"-" +
|
|
|
|
Utils.addZeroNumber(widget.dateTime.day) +
|
|
|
|
" 23:59:59"))
|
|
|
|
.millisecondsSinceEpoch) /
|
|
|
|
1000;
|
|
|
|
double endDay;
|
|
|
|
if (keys != '') {
|
|
|
|
List temp = dailyMap[keys];
|
|
|
|
timeStrStart = ymd + ' ' + temp.first + ':00';
|
|
|
|
timeStrEnd = ymd + ' ' + temp.last + ':00';
|
|
|
|
} else {
|
|
|
|
timeStrStart = widget.dateTime.year.toString() +
|
|
|
|
"-" +
|
|
|
|
Utils.addZeroNumber(widget.dateTime.month) +
|
|
|
|
"-" +
|
|
|
|
Utils.addZeroNumber(widget.dateTime.day) +
|
|
|
|
" 00:00:00";
|
|
|
|
timeStrEnd = widget.dateTime.year.toString() +
|
|
|
|
"-" +
|
|
|
|
Utils.addZeroNumber(widget.dateTime.month) +
|
|
|
|
"-" +
|
|
|
|
Utils.addZeroNumber(widget.dateTime.day) +
|
|
|
|
" 23:59:59";
|
|
|
|
}
|
|
|
|
startDay = (DateTime.parse(timeStrStart).millisecondsSinceEpoch) / 1000;
|
|
|
|
endDay = (DateTime.parse(timeStrEnd).millisecondsSinceEpoch) / 1000;
|
|
|
|
return startDay.floor().toString() + "-" + endDay.floor().toString();
|
|
|
|
}
|
|
|
|
|
...
|
...
|
|