Flutter 自定义日期范围选择组件,使用更加灵活,满足UI设计需要

一、实现的效果图

二、虽然Flutter也为我们提供了日期范围选择组件showDateRangePicker,但是毕竟系统的UI不符合我们的设计风格,所以被迫只能自己实现一个了

  • 系统样式

三、日历整体实现逻辑其实也很简单,如下:

  • 首先获取每个月份具体有多少天
int _getMonthDays(DateTime time) {
  final start = DateTime(time.year, time.month);
  DateTime end;
  if (time.month == 12) {
    end = DateTime(time.year + 1);
  } else {
    end = DateTime(time.year, time.month + 1);
  }
  return end.difference(start).inDays;
}
  • 在就是获取当月的1号是星期几

因为日历从左到右是:日, 一, 二, 三, 四, 五, 六,所以我们就可以根据1号是星期几来确定起始位置在哪里

int _getOffset(DateTime month){
  return [0, 1, 2, 3, 4, 5, 6, 0][month.weekday];
}

这样基本的日历绘制就没什么问题了,剩下的就是选中的逻辑处理了,完整代码请查看源代码

源代码下载地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code-Porter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值