如何为从父widget传递到子widget的DataTable全局设置textstyle?
方案1:直接配置DataTable自带样式属性(最推荐)
DataTable本身自带两个文本样式参数,直接赋值就可以作用于内部所有表头/表格内容文本:
headingTextStyle:控制表头行的文本样式dataTextStyle:控制内容行的文本样式
修改后的父组件代码示例:
DataTable( headingRowHeight: 0, // 配置表头文本样式(你这里表头高度设为0了不需要的话可以省略) headingTextStyle: TextStyle(fontSize: 14, color: Colors.grey), // 配置内容文本样式 dataTextStyle: TextStyle(fontSize: 16, color: Colors.black87, fontWeight: FontWeight.normal), columns: [ DataColumn(label: Text(' ')), DataColumn(label: Text(' ')), ], rows: [ DataRow( cells: [DataCell(Text('John')), DataCell(Text('department1'))] ) ] )
用这个方案不管你把DataTable传到哪个子组件,样式都会跟着生效,不需要改子组件代码。
方案2:子组件统一包裹默认文本样式
如果父组件不能修改,要在子组件侧统一给传入的DataTable加文本样式,用DefaultTextStyle包裹即可,子树内所有未单独指定style的Text组件都会自动继承该样式:
修改后的子组件代码示例:
Container( child: DefaultTextStyle( // 你要设置的全局文本样式 style: TextStyle(fontSize: 16, color: Colors.black87), child: widget.dataTable, ), )
注意事项
如果DataTable内部的单个Text组件单独指定了style属性,它的优先级会高于上面两种全局设置,要覆盖的话要么删除单个Text的style,要么单独调整对应组件的样式即可。
内容的提问来源于stack exchange,提问作者Pretty Girl
相关产品推荐
相关产品推荐

