fix bug 2020.7.21

master 1.0.4+5
ifgyong 4 years ago
parent fe5c7e4480
commit 0b98d4dda4

@ -72,13 +72,6 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="flutter_custom_calendar">
<value>
<list>
<option value="$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/flutter_custom_calendar-1.0.4+0.2/lib" />
</list>
</value>
</entry>
<entry key="flutter_test"> <entry key="flutter_test">
<value> <value>
<list> <list>
@ -224,7 +217,6 @@
<root url="file://$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/convert-2.1.1/lib" /> <root url="file://$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/convert-2.1.1/lib" />
<root url="file://$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/crypto-2.1.4/lib" /> <root url="file://$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/crypto-2.1.4/lib" />
<root url="file://$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/cupertino_icons-0.1.3/lib" /> <root url="file://$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/cupertino_icons-0.1.3/lib" />
<root url="file://$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/flutter_custom_calendar-1.0.4+0.2/lib" />
<root url="file://$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/image-2.1.12/lib" /> <root url="file://$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/image-2.1.12/lib" />
<root url="file://$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.6/lib" /> <root url="file://$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.6/lib" />
<root url="file://$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/meta-1.1.8/lib" /> <root url="file://$USER_HOME$/flutterSDK/flutter1.17-stable/.pub-cache/hosted/pub.flutter-io.cn/meta-1.1.8/lib" />

@ -9,26 +9,31 @@
<list default="true" id="18463f0e-cf10-4ee2-975b-376476396e12" name="Default Changelist" comment=""> <list default="true" id="18463f0e-cf10-4ee2-975b-376476396e12" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/libraries/Dart_Packages.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Dart_Packages.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/libraries/Dart_Packages.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Dart_Packages.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/CHANGELOG.md" beforeDir="false" afterPath="$PROJECT_DIR$/CHANGELOG.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" /> <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/example/lib/main.dart" beforeDir="false" afterPath="$PROJECT_DIR$/example/lib/main.dart" afterDir="false" /> <change beforePath="$PROJECT_DIR$/example/lib/main.dart" beforeDir="false" afterPath="$PROJECT_DIR$/example/lib/main.dart" afterDir="false" />
<change beforePath="$PROJECT_DIR$/example/pubspec.lock" beforeDir="false" afterPath="$PROJECT_DIR$/example/pubspec.lock" afterDir="false" /> <change beforePath="$PROJECT_DIR$/example/pubspec.lock" beforeDir="false" afterPath="$PROJECT_DIR$/example/pubspec.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/example/pubspec.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/example/pubspec.yaml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/example/pubspec.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/example/pubspec.yaml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/lib/utils/lunar_util.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/utils/lunar_util.dart" afterDir="false" /> <change beforePath="$PROJECT_DIR$/lib/calendar_provider.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/calendar_provider.dart" afterDir="false" />
<change beforePath="$PROJECT_DIR$/lib/utils/solar_term_util.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/utils/solar_term_util.dart" afterDir="false" /> <change beforePath="$PROJECT_DIR$/lib/controller.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/controller.dart" afterDir="false" />
<change beforePath="$PROJECT_DIR$/lib/widget/month_view.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/widget/month_view.dart" afterDir="false" /> <change beforePath="$PROJECT_DIR$/lib/widget/month_view.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/widget/month_view.dart" afterDir="false" />
<change beforePath="$PROJECT_DIR$/lib/widget/week_view.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/widget/week_view.dart" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pubspec.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/pubspec.yaml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/pubspec.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/pubspec.yaml" afterDir="false" />
</list> </list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" /> <option name="LAST_RESOLUTION" value="IGNORE" />
</component> </component>
<component name="ExecutionTargetManager" SELECTED_TARGET="HMK7N17712003306" /> <component name="ExecutionTargetManager" SELECTED_TARGET="Pixel_2_XL_API_28" />
<component name="Git.Settings"> <component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component> </component>
<component name="ProjectId" id="1dLYXgUqXFRhtM2vVF7WEPgjPS2" /> <component name="ProjectId" id="1dLYXgUqXFRhtM2vVF7WEPgjPS2" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" /> <property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
<property name="android.sdk.path" value="$USER_HOME$/Library/Android/sdk" /> <property name="android.sdk.path" value="$USER_HOME$/Library/Android/sdk" />
@ -46,18 +51,6 @@
<recent name="$PROJECT_DIR$/example/lib" /> <recent name="$PROJECT_DIR$/example/lib" />
</key> </key>
</component> </component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="RunManager" selected="Flutter.main.dart"> <component name="RunManager" selected="Flutter.main.dart">
<configuration name="main.dart (1)" type="FlutterRunConfigurationType" factoryName="Flutter" singleton="false" temporary="true" nameIsGenerated="true"> <configuration name="main.dart (1)" type="FlutterRunConfigurationType" factoryName="Flutter" singleton="false" temporary="true" nameIsGenerated="true">
<option name="filePath" value="$PROJECT_DIR$/lib/demo_page/main.dart" /> <option name="filePath" value="$PROJECT_DIR$/lib/demo_page/main.dart" />
@ -99,4 +92,22 @@
</map> </map>
</option> </option>
</component> </component>
<component name="WindowStateProjectService">
<state width="1858" height="156" key="GridCell.Tab.0.bottom" timestamp="1595297133366">
<screen x="-310" y="-1417" width="2560" height="1417" />
</state>
<state width="1858" height="156" key="GridCell.Tab.0.bottom/47.23.1393.877/-310.-1417.2560.1417@-310.-1417.2560.1417" timestamp="1595297133366" />
<state width="1858" height="156" key="GridCell.Tab.0.center" timestamp="1595297133366">
<screen x="-310" y="-1417" width="2560" height="1417" />
</state>
<state width="1858" height="156" key="GridCell.Tab.0.center/47.23.1393.877/-310.-1417.2560.1417@-310.-1417.2560.1417" timestamp="1595297133366" />
<state width="1858" height="156" key="GridCell.Tab.0.left" timestamp="1595297133365">
<screen x="-310" y="-1417" width="2560" height="1417" />
</state>
<state width="1858" height="156" key="GridCell.Tab.0.left/47.23.1393.877/-310.-1417.2560.1417@-310.-1417.2560.1417" timestamp="1595297133365" />
<state width="1858" height="156" key="GridCell.Tab.0.right" timestamp="1595297133366">
<screen x="-310" y="-1417" width="2560" height="1417" />
</state>
<state width="1858" height="156" key="GridCell.Tab.0.right/47.23.1393.877/-310.-1417.2560.1417@-310.-1417.2560.1417" timestamp="1595297133366" />
</component>
</project> </project>

@ -1,2 +1,5 @@
## [1.0.4+0.4]
- 新增三个模式相互且含数据不影响
## [1.0.1] ## [1.0.1]
- 新增多选范围功能 - 新增多选范围功能

@ -37,7 +37,7 @@ Add this to your package's pubspec.yaml file:
``` ```
dependencies: dependencies:
flutter_custom_calendar: ^1.0.3 flutter_custom_calendar: ^1.0.4+0.5
``` ```
2. Install it 2. Install it
@ -57,10 +57,34 @@ Now in your Dart code, you can use:
``` ```
import 'package:flutter_custom_calendar/flutter_custom_calendar.dart'; import 'package:flutter_custom_calendar/flutter_custom_calendar.dart';
``` ```
### 监听月视图和周视图状态
```dart WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
controller.addExpandChangeListener((value) {
/// 添加改变 月视图和 周视图的监听
_isMonthSelected = value;
setState(() {});
});
});
```
### 变更月视图和周视图
> 前提条件是`showModel`是`CalendarConstants.MODE_SHOW_MONTH_AND_WEEK`或者`CalendarConstants.MODE_SHOW_WEEK_AND_MONTH`.
#### 变更到周视图
```dart
setState(() {
controller.weekAndMonthViewChange(CalendarConstants.MODE_SHOW_ONLY_WEEK);
});
```
#### 变更到月视图
```dart
setState(() {controller.weekAndMonthViewChange(CalendarConstants.MODE_SHOW_ONLY_MONTH);
});
```
### 动画演示 ### 动画演示
![](https://github.com/ifgyong/flutter_custom_calendar/blob/master/img.gif) ![](img.gif)
### [查看API](https://github.com/ifgyong/flutter_custom_calendar/blob/master/API.md) ### [查看API](https://github.com/ifgyong/flutter_custom_calendar/blob/master/API.md)
### [查看一个例子 如何使用](https://github.com/ifgyong/flutter_custom_calendar/blob/master/example/lib/main.dart) ### [查看一个例子 如何使用](https://github.com/ifgyong/flutter_custom_calendar/blob/master/example/lib/main.dart)

@ -39,6 +39,8 @@ class _MyHomePageState extends State<MyHomePage> {
CalendarViewWidget calendar; CalendarViewWidget calendar;
HashSet<DateTime> _selectedDate = new HashSet(); HashSet<DateTime> _selectedDate = new HashSet();
HashSet<DateModel> _selectedModels = new HashSet(); HashSet<DateModel> _selectedModels = new HashSet();
GlobalKey<CalendarContainerState> _globalKey = new GlobalKey();
@override @override
void initState() { void initState() {
_selectedDate.add(DateTime.now()); _selectedDate.add(DateTime.now());
@ -47,7 +49,7 @@ class _MyHomePageState extends State<MyHomePage> {
minYearMonth: 1, minYearMonth: 1,
maxYear: 2021, maxYear: 2021,
maxYearMonth: 12, maxYearMonth: 12,
showMode: CalendarConstants.MODE_SHOW_MONTH_AND_WEEK, showMode: CalendarConstants.MODE_SHOW_WEEK_AND_MONTH,
selectedDateTimeList: _selectedDate, selectedDateTimeList: _selectedDate,
selectMode: CalendarSelectedMode.singleSelect) selectMode: CalendarSelectedMode.singleSelect)
..addOnCalendarSelectListener((dateModel) { ..addOnCalendarSelectListener((dateModel) {
@ -65,6 +67,7 @@ class _MyHomePageState extends State<MyHomePage> {
}); });
}); });
calendar = new CalendarViewWidget( calendar = new CalendarViewWidget(
key: _globalKey,
calendarController: controller, calendarController: controller,
dayWidgetBuilder: (DateModel model) { dayWidgetBuilder: (DateModel model) {
double wd = (MediaQuery.of(context).size.width - 20) / 7; double wd = (MediaQuery.of(context).size.width - 20) / 7;
@ -101,9 +104,19 @@ class _MyHomePageState extends State<MyHomePage> {
); );
}, },
); );
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
controller.addExpandChangeListener((value) {
///
_isMonthSelected = value;
setState(() {});
});
});
super.initState(); super.initState();
} }
bool _isMonthSelected = false;
String _selectDate = ''; String _selectDate = '';
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -115,6 +128,7 @@ class _MyHomePageState extends State<MyHomePage> {
child: CustomScrollView( child: CustomScrollView(
slivers: <Widget>[ slivers: <Widget>[
_topButtons(), _topButtons(),
_topMonths(),
SliverToBoxAdapter( SliverToBoxAdapter(
child: calendar, child: calendar,
), ),
@ -139,9 +153,13 @@ class _MyHomePageState extends State<MyHomePage> {
crossAxisAlignment: WrapCrossAlignment.start, crossAxisAlignment: WrapCrossAlignment.start,
children: <Widget>[ children: <Widget>[
Text('请选择mode'), Text('请选择mode'),
Wrap(
spacing: 10,
runSpacing: 10,
children: <Widget>[
FlatButton( FlatButton(
child: Text( child: Text(
'singleSelect', '单选',
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
), ),
onPressed: () { onPressed: () {
@ -157,7 +175,7 @@ class _MyHomePageState extends State<MyHomePage> {
), ),
FlatButton( FlatButton(
child: Text( child: Text(
'multiSelect', '多选',
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
), ),
onPressed: () { onPressed: () {
@ -173,7 +191,7 @@ class _MyHomePageState extends State<MyHomePage> {
), ),
FlatButton( FlatButton(
child: Text( child: Text(
'mutltiStartToEndSelect', '多选 选择开始和结束',
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
), ),
onPressed: () { onPressed: () {
@ -186,7 +204,53 @@ class _MyHomePageState extends State<MyHomePage> {
CalendarSelectedMode.mutltiStartToEndSelect CalendarSelectedMode.mutltiStartToEndSelect
? Colors.teal ? Colors.teal
: Colors.black38, : Colors.black38,
) ),
],
),
],
),
);
}
Widget _topMonths() {
return SliverToBoxAdapter(
child: Wrap(
direction: Axis.vertical,
crossAxisAlignment: WrapCrossAlignment.start,
children: <Widget>[
Text('月视图和周视图'),
Wrap(
spacing: 10,
runSpacing: 10,
children: <Widget>[
FlatButton(
child: Text(
'月视图',
style: TextStyle(color: Colors.white),
),
onPressed: () {
setState(() {
controller.weekAndMonthViewChange(
CalendarConstants.MODE_SHOW_ONLY_WEEK);
});
},
color: _isMonthSelected ? Colors.teal : Colors.black38,
),
FlatButton(
child: Text(
'周视图',
style: TextStyle(color: Colors.white),
),
onPressed: () {
setState(() {
controller.weekAndMonthViewChange(
CalendarConstants.MODE_SHOW_ONLY_MONTH);
});
},
color: _isMonthSelected == false ? Colors.teal : Colors.black38,
),
],
),
], ],
), ),
); );

@ -72,10 +72,10 @@ packages:
flutter_custom_calendar: flutter_custom_calendar:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_custom_calendar path: ".."
url: "https://pub.flutter-io.cn" relative: true
source: hosted source: path
version: "1.0.4+0.2" version: "1.0.4+0.3"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter

@ -29,7 +29,8 @@ dependencies:
# The following adds the Cupertino Icons font to your application. # The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons. # Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.3 cupertino_icons: ^0.1.3
flutter_custom_calendar: ^1.0.4+0.3 flutter_custom_calendar:
path: ../
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 809 KiB

After

Width:  |  Height:  |  Size: 736 KiB

@ -106,6 +106,7 @@ class CalendarProvider extends ChangeNotifier {
// //
CalendarConfiguration calendarConfiguration; CalendarConfiguration calendarConfiguration;
void weekAndMonthViewChange(int mode) {}
void initData({ void initData({
Set<DateModel> selectedDateList, Set<DateModel> selectedDateList,

@ -111,6 +111,17 @@ class CalendarController {
maxYear, maxYear,
maxYearMonth, maxYearMonth,
))}"); ))}");
_weekAndMonthViewChange(showMode);
}
void _weekAndMonthViewChange(
int showMode,
) {
int minYear = calendarConfiguration.minYear;
int maxYear = calendarConfiguration.maxYear;
int minYearMonth = calendarConfiguration.minYearMonth;
int maxYearMonth = calendarConfiguration.maxYearMonth;
int nowYear = calendarConfiguration.nowYear;
int nowMonth = calendarConfiguration.nowMonth;
if (showMode != CalendarConstants.MODE_SHOW_ONLY_WEEK) { if (showMode != CalendarConstants.MODE_SHOW_ONLY_WEEK) {
//pageController,initialPage //pageController,initialPage
@ -183,11 +194,18 @@ class CalendarController {
"初始化星期视图的信息:一共有${weekList.length}个星期initialPage为$initialWeekPage"); "初始化星期视图的信息:一共有${weekList.length}个星期initialPage为$initialWeekPage");
this.weekController = new PageController(initialPage: initialWeekPage); this.weekController = new PageController(initialPage: initialWeekPage);
} }
calendarConfiguration.monthList = monthList; calendarConfiguration.monthList = monthList;
calendarConfiguration.weekList = weekList; calendarConfiguration.weekList = weekList;
calendarConfiguration.monthController = monthController; calendarConfiguration.monthController = monthController;
calendarConfiguration.weekController = weekController; calendarConfiguration.weekController = weekController;
calendarProvider.weekAndMonthViewChange(showMode);
}
void weekAndMonthViewChange(
int showMode,
) {
calendarProvider.expandStatus.value =
showMode == CalendarConstants.MODE_SHOW_ONLY_WEEK ? true : false;
} }
// //

@ -200,12 +200,12 @@ class ItemContainerState extends State<ItemContainer> {
setState(() { setState(() {
dateModel.isSelected = v; dateModel.isSelected = v;
}); });
}
if (widget.clickCall != null) { if (widget.clickCall != null) {
widget.clickCall(); widget.clickCall();
} }
} }
}
void _notifiCationUnCalendarSelect(DateModel element) { void _notifiCationUnCalendarSelect(DateModel element) {
if (configuration.unCalendarSelect != null) { if (configuration.unCalendarSelect != null) {
@ -261,7 +261,6 @@ class ItemContainerState extends State<ItemContainer> {
} }
dateModel.isSelected = !dateModel.isSelected; dateModel.isSelected = !dateModel.isSelected;
calendarProvider.selectedDateList.add(dateModel); calendarProvider.selectedDateList.add(dateModel);
// _notifiCationCalendarSelect(dateModel);
} }
// //
@ -277,6 +276,7 @@ class ItemContainerState extends State<ItemContainer> {
element.isSelected = false; element.isSelected = false;
_notifiCationUnCalendarSelect(element); _notifiCationUnCalendarSelect(element);
}); });
calendarProvider.selectedDateList.clear();
//item //item
if (calendarProvider.lastClickItemState != this) { if (calendarProvider.lastClickItemState != this) {

@ -76,25 +76,35 @@ class _WeekViewState extends State<WeekView> {
itemBuilder: (context, index) { itemBuilder: (context, index) {
DateModel dateModel = items[index]; DateModel dateModel = items[index];
// //
if (configuration.selectMode == CalendarConstants.MODE_MULTI_SELECT) { switch (configuration.selectMode) {
case CalendarSelectedMode.multiSelect:
if (calendarProvider.selectedDateList.contains(dateModel)) { if (calendarProvider.selectedDateList.contains(dateModel)) {
dateModel.isSelected = true; dateModel.isSelected = true;
} else { } else {
dateModel.isSelected = false; dateModel.isSelected = false;
} }
} else { break;
case CalendarSelectedMode.singleSelect:
if (calendarProvider.selectDateModel == dateModel) { if (calendarProvider.selectDateModel == dateModel) {
dateModel.isSelected = true; dateModel.isSelected = true;
} else { } else {
dateModel.isSelected = false; dateModel.isSelected = false;
} }
break;
case CalendarSelectedMode.mutltiStartToEndSelect:
if (calendarProvider.selectedDateList.contains(dateModel)) {
dateModel.isSelected = true;
} else {
dateModel.isSelected = false;
}
break;
} }
return ItemContainer( return ItemContainer(
dateModel: dateModel, dateModel: dateModel,
// configuration: configuration, clickCall: () {
// calendarProvider: calendarProvider, setState(() {});
); });
}); });
} }
} }

@ -1,6 +1,6 @@
name: flutter_custom_calendar name: flutter_custom_calendar
description: A calendar control of flutter that supports three selection modes。 description: A calendar control of flutter that supports three selection modes。
version: 1.0.4+0.3 version: 1.0.4+0.5
homepage: http://www.fgyong.cn homepage: http://www.fgyong.cn
author: fgyong author: fgyong
repository: https://github.com/ifgyong/flutter_custom_calendar repository: https://github.com/ifgyong/flutter_custom_calendar

Loading…
Cancel
Save