Flutter重构TextStyle时出现Invalid constant value错误如何解决
报错根因
你给Padding组件加了const修饰符,要求该组件的所有子属性都必须是编译时常量。但你封装的boldTextStyle()是普通函数,Dart编译器无法在编译阶段确认普通函数的返回值属于常量范畴,哪怕函数内部返回的是const TextStyle也不符合const常量的校验规则,因此触发Invalid constant value报错。
解决方案
方案1:移除Padding的const修饰(改动最小)
直接去掉调用侧Padding前的const关键字即可,修改后调用侧代码如下:
Text(' '), Padding( padding: EdgeInsets.only(left: 35.0), child: Text( 'Cape Coast', style: boldTextStyle(), ), )
方案2:将样式封装改为常量声明(保留const优化性能)
如果想要保留Padding的const修饰来优化性能,可以把原本的函数式封装改为常量变量封装:
修改封装代码:
// 替换原本的函数封装,直接声明为编译时常量 const TextStyle boldTextStyle = TextStyle( fontSize: 40, fontFamily: 'Dongle', fontWeight: FontWeight.w700, );
对应调用侧代码修改为直接引用常量:
Text(' '), const Padding( padding: EdgeInsets.only(left: 35.0), child: Text( 'Cape Coast', style: boldTextStyle, ), )
内容的提问来源于stack exchange,提问作者user15683006
相关产品推荐
相关产品推荐

