Flutter @immutable类构造器优先用const字面量警告怎么解决?
问题原因
这个警告触发的核心原因是:Row、Expanded、Column都属于被@immutable注解标记的不可变类,Flutter规范推荐这类类的构造参数优先使用const常量,让组件在编译阶段完成初始化,避免每次页面build时重复创建对象,从而提升运行性能。
你当前代码中虽然给两个Text组件单独加了const修饰,但包含这些组件的上层数组、组件都没有添加const标记,因此触发了规则警告。
解决方法
方案1:遵循规范添加const标记(推荐)
只需要给上层可标记为const的节点添加修饰即可,修改后的代码如下:
Widget titleSection = Container( child: Row( //need to expand the rows on the column children: const [ Expanded( child: Column( children: [ Text( 'Hello1', ), Text( 'Hello2', ), ], ) ], ), );
注意:当你给Row的children数组添加const修饰后,数组内部所有参数为常量的不可变组件会自动被识别为常量,内部的Text不需要再单独添加const标记,代码更简洁。
方案2:屏蔽警告(不推荐)
如果不需要遵循该规范,可以选择两种方式屏蔽:
- 单处忽略:在触发警告的代码行上方添加注释
// ignore: prefer_const_literals_to_create_immutables - 全局关闭:在项目的
analysis_options.yaml文件的规则配置中添加prefer_const_literals_to_create_immutables: false
内容的提问来源于stack exchange,提问作者Mi7ai
相关产品推荐
相关产品推荐

