如何为Flutter的table_calendar添加左右及底部内边距?
解决table_calendar高亮区域的间距问题
你提到的cellMargin和rowHeight确实没法解决这个问题——前者是控制单个日期单元格之间的间距,后者是调整每行的高度,都和整个高亮区域(深色背景部分)与组件边缘的间距无关。
要给高亮区域的左侧、右侧和底部添加间距,最简单的方法是给TableCalendar套一层Padding,让整个日历内容和外层的Card边缘拉开距离。具体修改如下:
在你的代码里,把TableCalendar用Padding包裹,设置对应的内边距:
Card( // 保持原有Card属性不变 clipBehavior: Clip.antiAliasWithSaveLayer, margin: const EdgeInsets.symmetric( vertical: 15, horizontal: 12, ), elevation: 5.0, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.all( Radius.circular(10), ), side: BorderSide(color: Color(0xFF1f1f1f), width: 3), ), child: Padding( // 这里设置左、右、底部的间距,可根据需求调整数值 padding: const EdgeInsets.only(left: 8, right: 8, bottom: 8), child: TableCalendar( // 保持原有TableCalendar所有属性不变 focusedDay: _focusedDay, firstDay: DateTime.utc(2022, 9, 1), lastDay: DateTime.utc(2022, 9, 30), // ... 其他属性省略 ), ), )
这样修改后,rowDecoration、headerStyle.decoration这些深色高亮区域就会和Card的左、右、底部产生间距,符合你的需求。另外因为你的Card设置了clipBehavior: Clip.antiAliasWithSaveLayer,Padding的内边距会被正确裁剪,不会出现内容溢出的问题。
内容的提问来源于stack exchange,提问作者shaderone
相关产品推荐
相关产品推荐

