Flutter添加含空Row的Container时报错const构造函数问题咨询
Flutter报错 "Try using a constructor or factory that is 'const'" 原因及解决
为啥会报错?
问题出在你的代码处于const上下文里,但你添加的Container和Row没使用const构造函数。
具体来说:
- 要是你的
Column或者它的父级widget带了const(比如写的是const Column(...)),Flutter就要求children列表里的所有子组件都必须用const构造,以此保证整个组件树的不可变性。 - 视频里没报错,大概率是因为视频中的
Column没加const,或者使用的Flutter版本对这个规则的检查没那么严格。
怎么解决?
有两种方案可选:
方案1:移除外层的const限制
如果不需要让这个Column保持不可变,直接把Column前面的const删掉(如果有的话),这样子组件就不用强制加const了。
方案2:给Container和Row添加const
要是得保留const上下文,给你添加的代码补上const关键字:
const Container(child: const Row(children: [],),)
额外说明
Flutter中,被标记为const的组件,它的所有子元素、参数都必须是编译时常量,这样Flutter可以在编译阶段就确定组件结构,提升运行性能。新版本Flutter对这个规则的检查会更严格,这也是你和视频操作相同但结果不同的可能原因之一。
内容的提问来源于stack exchange,提问作者Sergio
相关产品推荐
相关产品推荐

