Flutter 日历组件简单实现

作者:zeqinjie 时间:2023-10-21 11:04:35 

前言

近期有个业务需求,涉及用户付费相关的计算,需要一个日历组件,组件功能如下:

  • 仅支持从明天开始选择预定日期

  • 仅支持可选范围内的日期

  • 日期的选择是连续的

  • 有个推荐日期,需要联动更新

  • todo:

    • 支持不连续的日期选择

Github:tw_calendar

安装

dependencies:
 tw_calendar: latest_version

效果

demo 演示

Flutter 日历组件简单实现

业务使用 headerView

Flutter 日历组件简单实现

使用

配置属性

/// 开始的年月份
 final DateTime firstDate;
 /// 结束的年月份
 final DateTime lastDate;
 /// 选择开始日期
 final DateTime? selectedStartDate;
 /// 选择结束日期
 final DateTime? selectedEndDate;
 /// 点击方法回调
 final Function? onSelectFinish;
 /// 头部组件
 final Widget? headerView;
 /// 选择模式
 final TWCalendarListSeletedMode? seletedMode;
 /// 月视图高度,为空则占满剩余空间
 final double? monthBodyHeight;
 /// 周视图高度, 默认 48
 final double? weekDayHeight;
 /// 水平间隙
 final double? horizontalSpace;
 /// 确认周视图高度, 默认 66
 final double? ensureViewHeight;
 /// 确认按钮的间隙
 final EdgeInsetsGeometry? ensureViewPadding;
 /// 确认按钮选中颜色
 final Color? ensureViewSelectedColor;
 /// 确认未按钮选中颜色
 final Color? ensureViewUnSelectedColor;
 /// 今天的日期的背景颜色
 final Color? dayNumberTodayColor;
 /// 选中日期背景颜色
 final Color? dayNumberSelectedColor;
 /// 确认按钮字体大小
 final double? ensureTitleFontSize;
 /// 点击回调
 final void Function(DateTime seletedDate, int seletedDays)? onSelectDayRang;
 /// 选择确认按钮 title 回调
 final String Function(
         DateTime? selectStartTime, DateTime? selectEndTime, int seletedDays)?
     onSelectDayTitle;

DEMO

TWCalendarList(
     firstDate: TWCalendarTool.tomorrow,
     lastDate: DateTime(2022, 11, 21),
     selectedStartDate: DateTime(2022, 9, 2),
     selectedEndDate: DateTime(2022, 9, 10),
     monthBodyHeight: 300.w,
     seletedMode: TWCalendarListSeletedMode.singleSerial,
     headerView: Container(
       alignment: Alignment.center,
       height: 55.w,
       child: Text(
         '日历组件',
         style: TextStyle(
           color: TWColors.tw333333,
           fontSize: 18.w,
         ),
       ),
     ),
     onSelectDayRang: ((seletedDate, seletedDays) {
       print('seletedDate : $seletedDate, seletedDays : $seletedDays');
     }),
     onSelectFinish: (selectStartTime, selectEndTime) {
       print(
           'selectStartTime : $selectStartTime, selectEndTime : $selectEndTime');
       Navigator.pop(context);
     },
   )

感谢

参考及修改至 demo: flutter_calendar_list

来源:https://juejin.cn/post/7127970073897074702

标签:Flutter,日历,组件
0
投稿

猜你喜欢

  • RabbitMQ延迟队列及消息延迟推送实现详解

    2023-11-15 15:31:31
  • Java Socket 编程详解

    2022-06-13 12:06:57
  • Spring Data Jpa的四种查询方式详解

    2021-10-10 10:35:26
  • Java并发包之CopyOnWriteArrayList类的深入讲解

    2022-10-06 09:15:21
  • struts2实现多文件上传的示例代码

    2022-03-09 23:40:54
  • Android编程实现圆角边框布局效果的方法

    2021-06-07 08:54:01
  • Unity3D选择本地图片并加载

    2023-11-20 09:25:05
  • 详解Java利用同步块synchronized()保证并发安全

    2021-09-12 12:15:07
  • JavaWeb中使用JavaMail实现发送邮件功能实例详解

    2023-01-07 13:54:37
  • C#实现异步GET的方法

    2022-08-17 11:52:55
  • Spring Data JPA实现动态查询的两种方法

    2022-08-04 17:02:27
  • Android仿微信图片选择器ImageSelector使用详解

    2023-04-08 22:28:02
  • Map集合之HashMap的使用及说明

    2022-07-23 15:56:56
  • SpringMVC整合mybatis实例代码

    2022-09-24 08:22:03
  • C# 获取IP及判断IP是否在区间

    2021-10-06 23:44:50
  • C#实现把图片转换成二进制以及把二进制转换成图片的方法示例

    2023-08-10 15:25:51
  • log4j配置失效日志中打印Debug信息问题

    2022-10-12 10:13:12
  • Android 更新RecyclerView的好方法

    2023-11-24 09:39:59
  • mybatis sum(参数) 列名作为参数的问题

    2022-06-16 01:45:44
  • Java用邻接矩阵存储图的示例代码

    2021-10-05 21:39:18
  • asp之家 软件编程 m.aspxhome.com