|
|
|
/**
|
|
|
|
* 宴会看板
|
|
|
|
*/
|
|
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
|
import 'package:one_key/res/colors.dart';
|
|
|
|
import 'package:one_key/widgets/system_app_bar.dart';
|
|
|
|
import 'package:table_calendar/table_calendar.dart';
|
|
|
|
|
|
|
|
import '../../utils/utils.dart';
|
|
|
|
import '../../widgets/round_button.dart';
|
|
|
|
import '../../widgets/v_empty_view.dart';
|
|
|
|
import 'feast_board.item.dart';
|
|
|
|
|
|
|
|
class FeastBoardPage extends StatefulWidget {
|
|
|
|
FeastBoardPage({Key key}) : super(key: key);
|
|
|
|
|
|
|
|
@override
|
|
|
|
_FeastBoardPageState createState() => _FeastBoardPageState();
|
|
|
|
}
|
|
|
|
|
|
|
|
class _FeastBoardPageState extends State<FeastBoardPage> {
|
|
|
|
CalendarController _calendarController = CalendarController();
|
|
|
|
DateTime dateTimeNow; //当前日期
|
|
|
|
bool calendarShow = true; //日历展开
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
// TODO: implement initState
|
|
|
|
super.initState();
|
|
|
|
dateTimeNow = DateTime.now();
|
|
|
|
Utils.changeStatusColor(color: MyColours.color_438E93);
|
|
|
|
}
|
|
|
|
|
|
|
|
//解析返回显示的日期
|
|
|
|
static String _parseDateDay(DateTime dateTime) {
|
|
|
|
DateTime now = DateTime.now();
|
|
|
|
if (Utils.isOneDay(dateTime, now)) {
|
|
|
|
return "今";
|
|
|
|
}
|
|
|
|
// else if (Utils.isOneDay(dateTime, now.add(Duration(days: 1)))) {
|
|
|
|
// return "明";
|
|
|
|
// } else if (Utils.isOneDay(dateTime, now.add(Duration(days: 2)))) {
|
|
|
|
// return "后";
|
|
|
|
// }
|
|
|
|
else {
|
|
|
|
return '${Utils.lunarCalendarHolidaysShow(dateTime)}';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return Scaffold(
|
|
|
|
backgroundColor: MyColours.color_ffffff,
|
|
|
|
appBar: SystemAppBar(
|
|
|
|
'宴会看板',
|
|
|
|
needWhite: true,
|
|
|
|
bgColor: MyColours.color_438E93,
|
|
|
|
titleColor: MyColours.color_F6F6F6,
|
|
|
|
onTap: () {
|
|
|
|
Navigator.pop(context);
|
|
|
|
},
|
|
|
|
),
|
|
|
|
body: Column(
|
|
|
|
children: <Widget>[
|
|
|
|
Container(
|
|
|
|
decoration:
|
|
|
|
BoxDecoration(color: MyColours.color_ffffff, boxShadow: [
|
|
|
|
BoxShadow(
|
|
|
|
offset: Offset(
|
|
|
|
0,
|
|
|
|
ScreenUtil().setWidth(8),
|
|
|
|
),
|
|
|
|
blurRadius: ScreenUtil().setWidth(8),
|
|
|
|
color: MyColours.color_26000000)
|
|
|
|
]),
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
TableCalendar(
|
|
|
|
// rowHeight: ScreenUtil().setWidth(100),
|
|
|
|
rowHeight: ScreenUtil().setWidth(106),
|
|
|
|
calendarController: _calendarController,
|
|
|
|
initialSelectedDay: dateTimeNow,
|
|
|
|
onDaySelected: (day, events, holidays) {
|
|
|
|
if (!Utils.isOneDay(day, dateTimeNow)) {
|
|
|
|
//不是一天
|
|
|
|
dateTimeNow = day;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// holidays: _holidays,
|
|
|
|
availableGestures: AvailableGestures.none,
|
|
|
|
|
|
|
|
locale: "zh_CN",
|
|
|
|
initialCalendarFormat: calendarShow
|
|
|
|
? CalendarFormat.month
|
|
|
|
: CalendarFormat.week,
|
|
|
|
headerStyle: HeaderStyle(
|
|
|
|
decoration: BoxDecoration(color: MyColours.color_ffffff),
|
|
|
|
headerPadding: EdgeInsets.symmetric(
|
|
|
|
// vertical: ScreenUtil().setWidth(24),
|
|
|
|
horizontal: ScreenUtil().setWidth(66)),
|
|
|
|
formatButtonVisible: false,
|
|
|
|
centerHeaderTitle: true,
|
|
|
|
titleTextBuilder: (dateTime, _) {
|
|
|
|
return dateTime.year.toString() +
|
|
|
|
' ' +
|
|
|
|
"年" +
|
|
|
|
' ' +
|
|
|
|
dateTime.month.toString() +
|
|
|
|
' ' +
|
|
|
|
"月";
|
|
|
|
},
|
|
|
|
titleTextStyle: TextStyle(
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
color: MyColours.color_515151,
|
|
|
|
fontSize: ScreenUtil().setSp(44)),
|
|
|
|
leftChevronIcon: Icon(Icons.chevron_left,
|
|
|
|
color: MyColours.color_000000,
|
|
|
|
size: ScreenUtil().setWidth(48)),
|
|
|
|
rightChevronIcon: Icon(Icons.chevron_right,
|
|
|
|
color: MyColours.color_000000,
|
|
|
|
size: ScreenUtil().setWidth(48)),
|
|
|
|
),
|
|
|
|
calendarStyle: CalendarStyle(
|
|
|
|
contentPadding:
|
|
|
|
EdgeInsets.only(bottom: ScreenUtil().setWidth(8)),
|
|
|
|
weekdayStyle: TextStyle(
|
|
|
|
color: MyColours.color_2bb5b7,
|
|
|
|
fontSize: ScreenUtil().setSp(32)),
|
|
|
|
weekendStyle: TextStyle(
|
|
|
|
color: MyColours.color_f49a5e,
|
|
|
|
fontSize: ScreenUtil().setSp(32)),
|
|
|
|
selectedColor: MyColours.color_2bb5b7,
|
|
|
|
outsideDaysVisible: false,
|
|
|
|
),
|
|
|
|
builders: CalendarBuilders(
|
|
|
|
dowWeekdayBuilder: (context, weekday) {
|
|
|
|
return Container(
|
|
|
|
color: MyColours.color_ffffff,
|
|
|
|
alignment: Alignment.center,
|
|
|
|
// margin:
|
|
|
|
// EdgeInsets.only(bottom: ScreenUtil().setWidth(20)),
|
|
|
|
padding: EdgeInsets.symmetric(
|
|
|
|
vertical: ScreenUtil().setWidth(15)),
|
|
|
|
child: Text(
|
|
|
|
weekday,
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_999999,
|
|
|
|
fontSize: ScreenUtil().setSp(32)),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
},
|
|
|
|
dayBuilder: (context, date, _) {
|
|
|
|
return Container(
|
|
|
|
// height: ScreenUtil().setWidth(210),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
// shape: BoxShape.circle,
|
|
|
|
// color: Colors.blue,
|
|
|
|
),
|
|
|
|
// alignment: Alignment.center,
|
|
|
|
// margin: EdgeInsets.fromLTRB(
|
|
|
|
// ScreenUtil().setWidth(12),
|
|
|
|
// ScreenUtil().setWidth(12),
|
|
|
|
// ScreenUtil().setWidth(12),
|
|
|
|
// ScreenUtil().setWidth(10)),
|
|
|
|
// padding: EdgeInsets.symmetric(
|
|
|
|
// // horizontal: ScreenUtil().setWidth(12),
|
|
|
|
// vertical: ScreenUtil().setWidth(8),
|
|
|
|
// ),
|
|
|
|
child: Column(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
Text(
|
|
|
|
// "${_parseDateDay(date)}",
|
|
|
|
// '${Utils.addZeroNumber(date.day)}',
|
|
|
|
'${date.day}',
|
|
|
|
style: TextStyle().copyWith(
|
|
|
|
fontSize: ScreenUtil().setSp(32),
|
|
|
|
color: MyColours.color_515151,
|
|
|
|
fontWeight: FontWeight.bold)),
|
|
|
|
VEmptyView(4),
|
|
|
|
// Text(
|
|
|
|
// // "${_parseDateDay(date)}",
|
|
|
|
// '${Utils.getLunarSpecialDate(date)}',
|
|
|
|
// style: TextStyle().copyWith(
|
|
|
|
// fontSize: ScreenUtil().setSp(22),
|
|
|
|
// color: MyColours.color_353535),
|
|
|
|
// ),
|
|
|
|
Text(
|
|
|
|
"${_parseDateDay(date)}",
|
|
|
|
style: TextStyle().copyWith(
|
|
|
|
fontSize: ScreenUtil().setSp(20),
|
|
|
|
color: MyColours.color_515151),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.symmetric(
|
|
|
|
vertical: ScreenUtil().setWidth(4)),
|
|
|
|
width: ScreenUtil().setWidth(16),
|
|
|
|
height: ScreenUtil().setWidth(16),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: MyColours.color_E34D59,
|
|
|
|
borderRadius: BorderRadius.circular(
|
|
|
|
ScreenUtil().radius(8))),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
},
|
|
|
|
selectedDayBuilder: (context, date, _) {
|
|
|
|
return Container(
|
|
|
|
// alignment: Alignment.center,
|
|
|
|
// margin: EdgeInsets.fromLTRB(
|
|
|
|
// ScreenUtil().setWidth(12),
|
|
|
|
// ScreenUtil().setWidth(12),
|
|
|
|
// ScreenUtil().setWidth(12),
|
|
|
|
// ScreenUtil().setWidth(32)),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
bottom: ScreenUtil().setWidth(10),
|
|
|
|
left: ScreenUtil().setWidth(5),
|
|
|
|
right: ScreenUtil().setWidth(5),
|
|
|
|
top: ScreenUtil().setWidth(10)),
|
|
|
|
child: Container(
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
borderRadius: BorderRadius.circular(
|
|
|
|
ScreenUtil().setWidth(10)),
|
|
|
|
color: MyColours.color_438E93),
|
|
|
|
child: Column(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
Text(
|
|
|
|
// "${_parseDateDay(date)}",
|
|
|
|
// '${Utils.addZeroNumber(date.day)}',
|
|
|
|
'${date.day}',
|
|
|
|
style: TextStyle().copyWith(
|
|
|
|
color: MyColours.color_F6F6F6,
|
|
|
|
fontSize: ScreenUtil().setSp(32),
|
|
|
|
fontWeight: FontWeight.bold),
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
"${_parseDateDay(date)}",
|
|
|
|
// '${Utils.lunarCalendarHolidaysShow(date)}',
|
|
|
|
style: TextStyle().copyWith(
|
|
|
|
fontSize: ScreenUtil().setSp(22),
|
|
|
|
color: MyColours.color_F6F6F6),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.symmetric(
|
|
|
|
vertical: ScreenUtil().setWidth(4)),
|
|
|
|
width: ScreenUtil().setWidth(16),
|
|
|
|
height: ScreenUtil().setWidth(16),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: MyColours.color_E34D59,
|
|
|
|
borderRadius: BorderRadius.circular(
|
|
|
|
ScreenUtil().radius(8))),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
},
|
|
|
|
todayDayBuilder: (context, date, _) {
|
|
|
|
return Container(
|
|
|
|
// alignment: Alignment.center,
|
|
|
|
// margin: EdgeInsets.fromLTRB(
|
|
|
|
// ScreenUtil().setWidth(12),
|
|
|
|
// ScreenUtil().setWidth(12),
|
|
|
|
// ScreenUtil().setWidth(12),
|
|
|
|
// ScreenUtil().setWidth(32)),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
bottom: ScreenUtil().setWidth(10),
|
|
|
|
left: ScreenUtil().setWidth(5),
|
|
|
|
right: ScreenUtil().setWidth(5),
|
|
|
|
top: ScreenUtil().setWidth(10)),
|
|
|
|
child: Container(
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
borderRadius: BorderRadius.circular(
|
|
|
|
ScreenUtil().setWidth(10)),
|
|
|
|
color: MyColours.color_2bb5b7),
|
|
|
|
child: Column(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
Text(
|
|
|
|
// "${_parseDateDay(date)}",
|
|
|
|
// '${Utils.addZeroNumber(date.day)}',
|
|
|
|
'${date.day}',
|
|
|
|
style: TextStyle().copyWith(
|
|
|
|
color: MyColours.color_F6F6F6,
|
|
|
|
fontSize: ScreenUtil().setSp(32),
|
|
|
|
fontWeight: FontWeight.bold),
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
"${_parseDateDay(date)}",
|
|
|
|
// '${Utils.lunarCalendarHolidaysShow(date)}',
|
|
|
|
style: TextStyle().copyWith(
|
|
|
|
fontSize: ScreenUtil().setSp(22),
|
|
|
|
color: MyColours.color_F6F6F6),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.symmetric(
|
|
|
|
vertical: ScreenUtil().setWidth(4)),
|
|
|
|
width: ScreenUtil().setWidth(16),
|
|
|
|
height: ScreenUtil().setWidth(16),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: MyColours.color_E34D59,
|
|
|
|
borderRadius: BorderRadius.circular(
|
|
|
|
ScreenUtil().radius(8))),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
// return Container(
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// shape: BoxShape.circle,
|
|
|
|
// border: Border.all(
|
|
|
|
// color: MyColours.color_2bb5b7,
|
|
|
|
// width: ScreenUtil().setWidth(2))),
|
|
|
|
// alignment: Alignment.center,
|
|
|
|
// margin: EdgeInsets.fromLTRB(
|
|
|
|
// ScreenUtil().setWidth(12),
|
|
|
|
// ScreenUtil().setWidth(12),
|
|
|
|
// ScreenUtil().setWidth(12),
|
|
|
|
// ScreenUtil().setWidth(32)),
|
|
|
|
// padding: EdgeInsets.only(
|
|
|
|
// bottom: ScreenUtil().setWidth(8),
|
|
|
|
// left: ScreenUtil().setWidth(16),
|
|
|
|
// right: ScreenUtil().setWidth(16),
|
|
|
|
// top: ScreenUtil().setWidth(8)),
|
|
|
|
// child: Text(
|
|
|
|
// // '今',
|
|
|
|
// '${Utils.addZeroNumber(date.day)}',
|
|
|
|
// style: TextStyle().copyWith(
|
|
|
|
// fontSize: ScreenUtil().setSp(32),
|
|
|
|
// color: MyColours.color_2bb5b7),
|
|
|
|
// ),
|
|
|
|
// );
|
|
|
|
},
|
|
|
|
markersBuilder: (context, date, events, holidays) {
|
|
|
|
final children = <Widget>[];
|
|
|
|
|
|
|
|
// if (events.isNotEmpty) {
|
|
|
|
// children.add(
|
|
|
|
// Positioned(
|
|
|
|
// right: 1,
|
|
|
|
// bottom: 1,
|
|
|
|
// child: _buildEventsMarker(date, events),
|
|
|
|
// ),
|
|
|
|
// );
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (holidays.isNotEmpty) {
|
|
|
|
// children.add(
|
|
|
|
// Positioned(
|
|
|
|
// right: ScreenUtil().setWidth(27),
|
|
|
|
// bottom: 0,
|
|
|
|
// top: ScreenUtil().setWidth(30),
|
|
|
|
// child: buildMarker(date)),
|
|
|
|
// Align(
|
|
|
|
// alignment: Alignment.bottomCenter,
|
|
|
|
// child: buildMarker(date),
|
|
|
|
// )
|
|
|
|
// );
|
|
|
|
// }
|
|
|
|
|
|
|
|
return [];
|
|
|
|
},
|
|
|
|
// singleMarkerBuilder: (context, dateTime, event) {
|
|
|
|
// return Container(
|
|
|
|
// width: ScreenUtil().setWidth(6),
|
|
|
|
// height: ScreenUtil().setWidth(6),
|
|
|
|
// margin:
|
|
|
|
// const EdgeInsets.symmetric(horizontal: 0.3),
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// shape: BoxShape.circle,
|
|
|
|
// color: MyColours.color_ff0000,
|
|
|
|
// ),
|
|
|
|
// );
|
|
|
|
// },
|
|
|
|
),
|
|
|
|
),
|
|
|
|
VEmptyView(4),
|
|
|
|
InkWell(
|
|
|
|
onTap: () {
|
|
|
|
calendarShow = !calendarShow;
|
|
|
|
|
|
|
|
if (calendarShow) {
|
|
|
|
_calendarController
|
|
|
|
.setCalendarFormat(CalendarFormat.month);
|
|
|
|
} else {
|
|
|
|
_calendarController
|
|
|
|
.setCalendarFormat(CalendarFormat.week);
|
|
|
|
}
|
|
|
|
setState(() {});
|
|
|
|
},
|
|
|
|
child: Image.asset(
|
|
|
|
Utils.getImgPath(calendarShow
|
|
|
|
? 'y_chevron_up_circle'
|
|
|
|
: 'y_chevron_down_circle'),
|
|
|
|
width: ScreenUtil().setWidth(32))),
|
|
|
|
VEmptyView(32),
|
|
|
|
],
|
|
|
|
)),
|
|
|
|
VEmptyView(48),
|
|
|
|
Expanded(
|
|
|
|
child: ListView.builder(
|
|
|
|
padding: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(8)),
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
return FeastBoardItem();
|
|
|
|
},
|
|
|
|
itemCount: 100,
|
|
|
|
)),
|
|
|
|
Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
|
|
|
children: [
|
|
|
|
RoundButton(
|
|
|
|
onPressed: () async {
|
|
|
|
_calendarController.setSelectedDay(DateTime.now());
|
|
|
|
setState(() {});
|
|
|
|
},
|
|
|
|
text: '回到今天',
|
|
|
|
fontSize: 28,
|
|
|
|
isBold: false,
|
|
|
|
height: ScreenUtil().setWidth(70),
|
|
|
|
width: ScreenUtil().setWidth(220),
|
|
|
|
gradientStart: MyColours.color_2bb5b7,
|
|
|
|
gradientEnd: MyColours.color_2bb5b7,
|
|
|
|
radius: ScreenUtil().setWidth(10),
|
|
|
|
),
|
|
|
|
RoundButton(
|
|
|
|
onPressed: () async {
|
|
|
|
Navigator.pop(context);
|
|
|
|
},
|
|
|
|
text: '取消',
|
|
|
|
fontSize: 28,
|
|
|
|
isBold: false,
|
|
|
|
textColor: MyColours.color_333333,
|
|
|
|
borderColor: Color.fromRGBO(119, 119, 119, 1),
|
|
|
|
height: ScreenUtil().setWidth(70),
|
|
|
|
width: ScreenUtil().setWidth(220),
|
|
|
|
gradientStart: Colors.transparent,
|
|
|
|
gradientEnd: Colors.transparent,
|
|
|
|
radius: ScreenUtil().setWidth(10),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|