Flutter开发报错:未定义命名参数'color',附代码求助排查问题
问题排查与解决方案
报错原因
你将color: _color参数传递给了Padding组件,但Flutter官方的Padding组件未提供color配置项,因此触发The named parameter 'color' isn't defined(未定义名为'color'的参数)编译错误。
修复方案
根据你的实际需求选择对应方案即可:
方案1:给Card卡片设置背景色(适配绝大多数场景)
如果你是想修改点击后卡片的背景色,只需要把color: _color参数从Padding的构造参数中,挪到Card的构造参数里即可,Card组件原生支持color属性配置背景色,修正后代码如下:
Widget _buildTodoItem(String title) { return Padding( padding: const EdgeInsets.fromLTRB(16.0, 16.0, 16.0, 0.0), child: GestureDetector( onTap: () => setState(() { _color = Colors.black; }), child: Card( // color参数移到此处 color: _color, child: Padding( padding: const EdgeInsets.all(8.0), child: Text(title, style: const TextStyle(color: Colors.white)), ), ), ), ); }
注:上述代码额外修改了Text的文字颜色为白色,避免黑色背景下文字无法识别。
方案2:给Padding包裹的内容区单独设置背景色
如果你确实需要给Padding对应的区域单独设置背景色,需要额外嵌套一层Container组件,Container原生支持color属性配置,修正后代码如下:
Widget _buildTodoItem(String title) { return Padding( padding: const EdgeInsets.fromLTRB(16.0, 16.0, 16.0, 0.0), child: GestureDetector( onTap: () => setState(() { _color = Colors.black; }), child: Card( child: Container( color: _color, padding: const EdgeInsets.all(8.0), child: Text(title, style: const TextStyle(color: Colors.white)), ), ), ), ); }
内容的提问来源于stack exchange,提问作者meltdown_ultra
相关产品推荐
相关产品推荐

