Flutter升级后FlatButton缺失必填child参数问题求助
问题原因
你的FlatButton代码确实缺少必填的child参数,Flutter中所有按钮组件都要求传入子组件(用于承载按钮显示内容,比如文本、图标)。旧版本能运行大概率是当时的lint规则未严格校验必填参数,新版本Flutter强化了参数检查,因此触发报错。
无需大幅改动的两种解决方案
方案1:给现有FlatButton补充child参数
如果按钮不需要显示任何内容,直接传入空的SizedBox.shrink()即可,改动极小:
Expanded buildKey(Color a, int num){ return Expanded( child: FlatButton( color: a, child: const SizedBox.shrink(), // 添加空的子组件 onPressed: () { playSound(num); }), ); }
如果需要显示数字,也可以替换为Text(num.toString())作为child。
方案2:替换为官方推荐的TextButton(兼容新版本)
FlatButton在Flutter 2.0+已被标记为废弃,官方推荐使用TextButton替代,只需调整样式参数即可匹配原效果,改动同样很小:
Expanded buildKey(Color a, int num){ return Expanded( child: TextButton( style: TextButton.styleFrom(backgroundColor: a), // 对应原FlatButton的color参数 child: const SizedBox.shrink(), onPressed: () { playSound(num); }), ); }
内容的提问来源于stack exchange,提问作者Shon22
相关产品推荐
相关产品推荐

