Flutter嵌套Container设置decoration触发color冲突报错如何解决
错误原因
Flutter 框架对Container组件做了明确的参数校验:color属性本质是decoration配置项中BoxDecoration的color属性的快捷语法糖,二者不能同时赋值,否则就会触发如下断言失败:
错误:不可同时设置color和decoration属性。若需同时配置两者,请使用"decoration: BoxDecoration(color: color)"的写法。
'package:flutter/src/widgets/container.dart':断言失败,第274行第15位:'color == null || decoration == null'
修复方案
将单独定义在Container层级的color属性移动到BoxDecoration的内部配置中,删除Container层级的color属性即可同时实现背景色和圆角效果。
修改后完整代码
Container( height: 250, child: PageView.builder( controller: _pageController, itemCount: listTmp.length, itemBuilder: (context, index) { return Padding( padding: const EdgeInsets.only(left: 5, right: 5), child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), color: Colors.red, // 背景色移到此处配置 ), height: 100, child: Text(listTmp[index]), ), ); }, onPageChanged: (index) { setState(() { _currentIndex = index; }); }, ), )
注意事项
- 仅当
Container没有配置decoration属性时,才能直接在Container层级设置color属性 - 后续需要给
Container添加边框、渐变、阴影等装饰效果时,所有样式统一在BoxDecoration中配置即可
内容的提问来源于stack exchange,提问作者Lê Duy Tuấn Vũ
相关产品推荐
相关产品推荐

