Flutter使用Equatable遇参数错误,求确认替代方案是否等效
Equatable父类构造函数传参报错的解决与效果验证
你碰到的这个报错是因为Equatable的版本差异:旧版Equatable支持通过父类构造函数传入props列表,但2.0及以上的新版本已经移除了带参数的构造函数,要求子类必须重写props getter方法来提供相等性判断的依据。
你的修改方案是完全正确的,和原教程的写法效果完全一致——两种方式都是告诉Equatable,要基于text和number这两个属性来判断NumberTrivia对象是否相等。
报错的旧版写法(不适用于新版Equatable)
import 'package:equatable/equatable.dart'; import 'package:meta/meta.dart'; class NumberTrivia extends Equatable { final String text; final int number; NumberTrivia({required this.text, required this.number}) : super([text, number]); }
修正后的新版标准写法
import 'package:equatable/equatable.dart'; import 'package:meta/meta.dart'; class NumberTrivia extends Equatable { final String text; final int number; NumberTrivia({required this.text, required this.number}); @override List<Object?> get props => [text, number]; }
补充:Equatable的核心是自动帮你实现==运算符和hashCode方法,不管是旧版传参还是新版重写props,最终都是让Equatable基于你指定的属性生成这两个方法,功能上没有任何区别。
内容的提问来源于stack exchange,提问作者Mad Life
相关产品推荐
相关产品推荐

