Flutter TableCalendar选其他月份日期后跳回当前月问题求助
解决table_calendar选择跨月日期后视图跳回当前月的问题
问题原因
你的代码中focusedDay直接绑定DateTime.now(),每次触发setState时,这个值会被重新计算为当前日期,导致日历视图强制跳回当前月份。
修复方案
将focusedDay绑定到状态变量_focusedDay,初始化时把_focusedDay设为DateTime.now(),这样既能保留今日日期的标记,又能维持切换后的月份视图。
修改后的完整代码
TableCalendar( calendarFormat: _calendarFormat, firstDay: DateTime.utc(2010, 10, 16), lastDay: DateTime.utc(2030, 3, 14), // 关键修改:把focusedDay绑定到状态变量_focusedDay focusedDay: _focusedDay, selectedDayPredicate: (day) { return isSameDay(_selectedDay, day); }, onDaySelected: (selectedDay, focusedDay) { setState(() { _selectedDay = selectedDay; _focusedDay = focusedDay; context.read<Counter>().modify(_focusedDay); }); }, onFormatChanged: (format) { setState(() { _calendarFormat = format; }); }, onPageChanged: (focusedDay) { _focusedDay = focusedDay; }, )
补充说明
- 确保状态类中已正确初始化变量:
DateTime _focusedDay = DateTime.now(); table_calendar默认会高亮今日日期,无需额外配置,因为_focusedDay初始值为当前日期。
内容的提问来源于stack exchange,提问作者NeoFahrenheit
相关产品推荐
相关产品推荐

