Flutter常量构造函数报错:“被调用的构造函数不是常量构造函数”
解决Flutter中“the constructor being called isn't a const constructor”错误
嘿,这个问题我之前也碰到过!让我给你拆解一下原因和解决办法~
问题根源
你试图用const修饰BorderRadius.circular(_rowHeight / 2),但**BorderRadius.circular这个构造函数本身并不是const构造函数**——哪怕你传入的_rowHeight是const变量,也没法让整个表达式变成const类型。
两种解决方案
方案一:用
final替代const(最直接简单)
既然BorderRadius.circular不支持const构造,我们直接去掉const修饰符,改用final来保证变量只被赋值一次:const _rowHeight = 100.0; final _cornerRadius = BorderRadius.circular(_rowHeight / 2);方案二:使用支持const的构造组合(如果必须要const常量)
如果你确实需要_cornerRadius是const类型,可以改用BorderRadius.all搭配const Radius.circular,只要计算值是编译时常量就行:const _rowHeight = 100.0; const _cornerRadius = BorderRadius.all(Radius.circular(_rowHeight / 2));这里
Radius.circular是const构造函数,且_rowHeight / 2是编译时就能确定的常量,所以整个表达式可以安全地用const修饰。
补充说明
Flutter里要求const变量的初始化表达式必须完全由const构造函数和编译时常量组成。BorderRadius.circular的内部实现没有标记为const,所以哪怕参数是const,也没法用const来修饰这个调用——这就是你看到报错的核心原因啦。
内容的提问来源于stack exchange,提问作者Muhammad Touseef
相关产品推荐
相关产品推荐

