You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
flutter_custom_calendar/lib/widget/month_view_pager.dart

64 lines
2.5 KiB

5 years ago
import 'package:flutter/material.dart';
import 'package:flutter_custom_calendar/CalendarProvider.dart';
import 'package:flutter_custom_calendar/configuration.dart';
5 years ago
import 'package:flutter_custom_calendar/model/date_model.dart';
import 'package:flutter_custom_calendar/widget/month_view.dart';
import 'package:provider/provider.dart';
5 years ago
class MonthViewPager extends StatefulWidget {
MonthViewPager();
5 years ago
@override
_MonthViewPagerState createState() => _MonthViewPagerState();
}
class _MonthViewPagerState extends State<MonthViewPager> {
@override
void initState() {}
@override
Widget build(BuildContext context) {
// 获取到当前的CalendarProvider对象,设置listen为false不需要刷新
CalendarProvider calendarProvider =
Provider.of<CalendarProvider>(context, listen: false);
CalendarConfiguration configuration =
calendarProvider.calendarConfiguration;
5 years ago
return Container(
child: PageView.builder(
onPageChanged: (position) {
//月份的变化
DateModel dateModel = configuration.monthList[position];
configuration.monthChange(dateModel.year, dateModel.month);
5 years ago
},
controller: configuration.pageController,
5 years ago
itemBuilder: (context, index) {
DateModel dateModel = configuration.monthList[index];
5 years ago
return new MonthView(
// selectMode: configuration.selectMode,
5 years ago
year: dateModel.year,
month: dateModel.month,
// selectDateModel: calendarProvider.selectDateModel,
// selectedDateList: calendarProvider.selectedDateList,
// onCalendarSelectListener: configuration.calendarSelect,
// dayWidgetBuilder: configuration.dayWidgetBuilder,
minSelectDate: DateModel.fromDateTime(DateTime(
configuration.minSelectYear,
configuration.minSelectMonth,
configuration.minSelectDay)),
maxSelectDate: DateModel.fromDateTime(DateTime(
configuration.maxSelectYear,
configuration.maxSelectMonth,
configuration.maxSelectDay)),
// maxMultiSelectCount: configuration.maxMultiSelectCount,
// multiSelectOutOfRange: configuration.multiSelectOutOfRange,
// multiSelectOutOfSize: configuration.multiSelectOutOfSize,
// extraDataMap: configuration.extraDataMap,
5 years ago
);
},
itemCount: configuration.monthList.length,
5 years ago
),
);
}
}