Flutter Dart项目中如何设置TableCalendar的firstDay为当月首日?
解决TableCalendar设置firstDay为当前月份第一天的问题
你可以通过基于当前日期构造新的DateTime对象来实现,步骤如下:
获取当前时间实例:
final now = DateTime.now();构造当前月份第一天的DateTime(如果需要UTC时间就用
DateTime.utc,本地时间直接用DateTime):final firstDayOfCurrentMonth = DateTime.utc(now.year, now.month, 1);顺带可以自动计算当前月份的最后一天,避免手动写死日期:
final lastDayOfCurrentMonth = DateTime.utc(now.year, now.month, DateTime(now.year, now.month + 1, 0).day);
修改后的完整代码示例:
final now = DateTime.now(); final firstDayOfCurrentMonth = DateTime.utc(now.year, now.month, 1); final lastDayOfCurrentMonth = DateTime.utc(now.year, now.month, DateTime(now.year, now.month + 1, 0).day); TableCalendar( firstDay: firstDayOfCurrentMonth, lastDay: lastDayOfCurrentMonth, focusedDay: now, ),
原理说明:DateTime(year, month + 1, 0)会自动返回当前月份的最后一天,因为传入0作为日期参数时,会回退到上一个月的最后一天,这样就不用处理不同月份天数不同的问题了。
内容的提问来源于stack exchange,提问作者A_K
相关产品推荐
相关产品推荐

