{"id":13549833,"url":"https://github.com/OpenFlutter/mini_calendar","last_synced_at":"2025-04-02T23:31:17.035Z","repository":{"id":52909472,"uuid":"226799487","full_name":"OpenFlutter/mini_calendar","owner":"OpenFlutter","description":"Date component developed with Flutter, plans to support display, swipe left and right, add date mark, radio, display week, etc.","archived":false,"fork":false,"pushed_at":"2024-06-24T13:08:30.000Z","size":3890,"stargazers_count":115,"open_issues_count":2,"forks_count":18,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-03T19:37:17.419Z","etag":null,"topics":["calender","dart","flutter","package"],"latest_commit_sha":null,"homepage":"https://pub.flutter-io.cn/packages/mini_calendar","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenFlutter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-09T06:21:12.000Z","updated_at":"2024-10-28T08:15:42.000Z","dependencies_parsed_at":"2024-08-01T12:17:30.095Z","dependency_job_id":"1f65f12a-f2fe-4e34-960c-0f07d02e24c8","html_url":"https://github.com/OpenFlutter/mini_calendar","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Fmini_calendar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Fmini_calendar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Fmini_calendar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Fmini_calendar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenFlutter","download_url":"https://codeload.github.com/OpenFlutter/mini_calendar/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246910951,"owners_count":20853652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calender","dart","flutter","package"],"created_at":"2024-08-01T12:01:26.053Z","updated_at":"2025-04-02T23:31:13.936Z","avatar_url":"https://github.com/OpenFlutter.png","language":"Dart","readme":"## mini_calendar\n\n[![](https://img.shields.io/pub/v/mini_calendar#align=left\u0026display=inline\u0026height=20\u0026originHeight=20\u0026originWidth=76\u0026status=done\u0026style=none\u0026width=76)](https://pub.flutter-io.cn/packages/mini_calendar) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/OpenFlutter/mini_calendar?style=plastic)\n\nDate component developed with Flutter, plans to support display, swipe left and right, add date mark, radio, display week, etc.\n\n使用Flutter开发的日期组件，计划支持显示，左右滑动，添加日期标记，单选，显示星期等功能。\n\n- [更新记录](CHANGELOG.md)\n\n\n### 主要想实现的内容\n\n![功能设计](https://upload-images.jianshu.io/upload_images/14097955-e322a37f80d25deb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)\n\n## 使用\n### 引入库\n\n```dart\ndependencies:\n  mini_calendar: ^2.0.0\n```\n\n### 导包\n```dart\nimport 'package:mini_calendar/mini_calendar.dart';\n```\n\n### 月视图(MonthWidget)\n```dart\nMonthWidget();// 默认当月\n```\n\n\n- 可通过控制器参数来控制显示的月份以及选择的日期\n\n```dart\nMonthWidget(\n  controller: MonthController.init(\n      MonthOption\u003cString\u003e(\n        currentDay: DateDay.now().copyWith(month: index + 1, day: Random().nextInt(27) + 1),\n        currentMonth: DateMonth.now().copyWith(month: index + 1),\n      )\n  ),\n)\n```\n\n\n- 支持显示连选\n\n```dart\nMonthWidget(\n  controller: MonthController.init(MonthOption(\n    currentMonth: DateMonth.now().copyWith(month: 1),\n    enableContinuous: true,\n    firstSelectDay: DateDay.now().copyWith(month: 1, day: 8),\n    secondSelectDay: DateDay.now().copyWith(month: 1, day: 18),\n  )),\n)\n```\n- 支持多选\n\n```dart\nMonthWidget(\n  controller: MonthController.init(MonthOption(\n    currentMonth: DateMonth.now().copyWith(month: 1),\n    enableMultiple: true,\n    multipleDays: [\n            DateDay.now().copyWith(month: 1, day: 3),\n            DateDay.now().copyWith(month: 1, day: 5),\n            DateDay.now().copyWith(month: 1, day: 8),\n          ],\n  )),\n)\n```\n\n- 支持添加标记\n- ……\n\n![image.png](https://cdn.nlark.com/yuque/0/2019/png/179485/1576584797091-8f86bb0c-b470-49c7-85dd-00f68febca94.png)\n\n\n### 滚动日历(MonthPageView)\n\n\u003e 控制器需要创建后获取 `onCreated`\n\n```dart\nMonthPageView\u003cT\u003e(\n  padding: EdgeInsets.all(1),\n  scrollDirection: Axis.horizontal,// 水平滑动或者竖直滑动\n  option: MonthOption\u003cT\u003e(\n    enableContinuous: true,// 单选、连选控制\n    marks: { \n      DateDay.now().copyWith(day: 1): '111',\n      DateDay.now().copyWith(day: 5): '222',\n      DateDay.now().copyWith(day: 13): '333',\n      DateDay.now().copyWith(day: 19): '444',\n      DateDay.now().copyWith(day: 26): '444',\n    },\n  ),\n  showWeekHead: true, // 显示星期头部\n  onContinuousSelectListen: (DateDay？firstDay,DateDay？endFay) {\n  },// 连选回调\n  onMultipleSelectListen: (list) {\n  },// 多选回调\n  onMonthChange: (month) {\n  },// 月份更改回调\n  onDaySelected: (DateDay day, T? markData, bool enable) {\n    // enable : 是否是可选日期\n  },// 日期选中会迪欧啊\n  onCreated: (controller){\n  }, // 控制器回调\n  onClear: () {\n  }// 点击清空按钮，设置为空时不显示清空按钮\n),\n```\n\n### 控制器\n#### 参数初始化\n```dart\nMonthOption({\n    DateDay currentDay,//选择的日期\n    DateMonth currentMonth,//当前月份\n    int firstWeek = 7,//第一列显示的星期 [1,7]\n    DateDay firstSelectDay,//连选第一个日期\n    DateDay secondSelectDay,//连选第二个日期\n    bool enableContinuous = false,//是否支持连选\n    Map\u003cDateDay, T\u003e marks = const {},//标记\n    List\u003cDateDay\u003e? multipleDays, // 多选日期\n    List\u003cDateDay\u003e? enableDays, // 能选择的日期集合\n    bool enableMultiple = false,//是否支持多选\n    DateDay minDay,//可选的最小日期\n    DateDay maxDay,//可选的最大日期\n  });\n```\n#### 注销\n```dart\nMonthPageController#dispose();\n```\n#### 更新\n```dart\nMonthPageController#reLoad();\n```\n#### 下一月\n```dart\nMonthPageController#next();\n```\n#### 上一月\n```dart\nMonthPageController#last();\n```\n#### 跳转到指定月份\n```dart\nMonthPageController#goto(DateMonth month);\n```\n\n![演示](https://upload-images.jianshu.io/upload_images/14097955-88d9957dbdc0c533.gif?imageMogr2/auto-orient/strip|imageView2/2/w/499/format/webp)\n\n### 高级功能\n\u003e 自定义\n\n#### 自定义月视图背景\n```dart\nbuildMonthBackground: (_, width, height, month) =\u003e Image.network(\n    'https://ssyerv1.oss-cn-hangzhou.aliyuncs.com/picture/b0c57bd90abd49d59920924010ab66a9.png!sswm',\n    height: height,\n    width: width,\n    fit: BoxFit.cover,\n    ),\n```\n\n#### 自定义月视图头部\n\n```dart\nbuildMonthHead: (ctx, width, height, month) =\u003e Container(\npadding: EdgeInsets.all(5),\nchild: Row(\n  mainAxisAlignment: MainAxisAlignment.start,\n  children: \u003cWidget\u003e[\n    Text(\n      \"${month.year}年\",\n      style: TextStyle(fontSize: 40, color: Colors.white),\n    ),\n    Container(\n      margin: EdgeInsets.only(left: 5, right: 5),\n      width: 1,\n      color: Colors.yellow,\n      height: 50,\n    ),\n    Column(\n      crossAxisAlignment: CrossAxisAlignment.start,\n      children: \u003cWidget\u003e[\n        Text(\n          \"${month.month}月\",\n          style: TextStyle(fontSize: 18, color: Colors.orange),\n        ),\n        Text(\"这是一个自定义的月头部\"),\n      ],\n    )\n  ],\n),\n),\n```\n\n- 自定义星期头部\n- 自定义日视图\n- ……\n\n|![image.png](https://cdn.nlark.com/yuque/0/2019/png/179485/1576584839283-c713cc7e-c932-4d7f-8033-888a7b7505f2.png)|![image.png](https://cdn.nlark.com/yuque/0/2019/png/179485/1576584857241-5a4a8bb1-fe4b-4fd2-b4c6-be03b68ddefc.png)|\n| :---: | :---: |\n\n\n\u003e 更多功能clone项目，运行demo\n\n### 开源不易，老铁们多多支持，点赞也是支持 😃 ！\n\n","funding_links":[],"categories":["Dart"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOpenFlutter%2Fmini_calendar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOpenFlutter%2Fmini_calendar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOpenFlutter%2Fmini_calendar/lists"}