Widget构造函数参数疑问:ReusableCard的cardChild默认值应设为?
解决ReusableCard中cardChild的默认值问题
cardChild是Widget类型,你可以根据实际需求选择以下几种默认值方案:
1. 空占位(推荐)
用SizedBox.shrink()作为默认值,它是一个不占用任何空间的轻量Widget,适合作为默认空内容,不会影响布局结构:
class ReusableCard extends StatelessWidget { ReusableCard({ @required this.colour = Colors.red, this.cardChild = const SizedBox.shrink(), }); final Widget cardChild; final Color colour; @override Widget build(BuildContext context) { return Container( child: cardChild, margin: const EdgeInsets.all(15.0), decoration: BoxDecoration( color: colour, borderRadius: BorderRadius.circular(10.0), ), ); } }
2. 带提示的占位
如果需要默认显示提示性内容,比如一个文本占位:
this.cardChild = const Center(child: Text('请传入自定义内容')),
在主类中抽象复用
主类里可以根据不同业务场景,灵活传入不同的Widget实现抽象复用,示例如下:
// 主类调用示例 ReusableCard( colour: Colors.blue, cardChild: Column( mainAxisAlignment: MainAxisAlignment.center, children: const [ Icon(Icons.access_alarm, size: 80), SizedBox(height: 15), Text('自定义卡片内容'), ], ), )
内容的提问来源于stack exchange,提问作者mahin khan
相关产品推荐
相关产品推荐

