重写Dart ==运算符触发avoid_renaming_method_parameters警告如何解决
警告触发原因
avoid_renaming_method_parameters lint规则要求重写父类方法时,参数名必须和父类定义的参数名完全一致。
你重写的是Dart根类Object的==运算符,该方法在父类中的原生签名为:
bool operator ==(Object other)
你将参数名从原生定义的other修改为了o,属于参数重命名行为,因此触发该警告。
修复方案
方案1(推荐):对齐父类参数名
直接将方法参数名从o改为other即可,修改后代码如下:
@override bool operator ==(Object other) { if (identical(this, other)) return true; return other is Song && other.id == id && other.name == name && other.lyrics == lyrics && other.url == url; }
修改后警告会自动消除,同时符合Dart官方代码规范。
方案2(特殊场景使用):主动忽略警告
如果有特殊需求必须保留参数名o,可以在方法上方添加忽略注释,跳过当前lint检查:
// ignore: avoid_renaming_method_parameters @override bool operator ==(Object o) { if (identical(this, o)) return true; return o is Song && o.id == id && o.name == name && o.lyrics == lyrics && o.url == url; }
内容的提问来源于stack exchange,提问作者Suragch
相关产品推荐
相关产品推荐

