You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 23:25:19