You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Dart项目中如何设置TableCalendar的firstDay为当月首日?

解决TableCalendar设置firstDay为当前月份第一天的问题

你可以通过基于当前日期构造新的DateTime对象来实现,步骤如下:

  1. 获取当前时间实例:

    final now = DateTime.now();
    
  2. 构造当前月份第一天的DateTime(如果需要UTC时间就用DateTime.utc,本地时间直接用DateTime):

    final firstDayOfCurrentMonth = DateTime.utc(now.year, now.month, 1);
    
  3. 顺带可以自动计算当前月份的最后一天,避免手动写死日期:

    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:01:17