gpt4 book ai didi

flutter - 缺少具体实现 'getter Equatable'/props 问题

转载 作者:行者123 更新时间:2023-12-03 04:24:20 24 4
gpt4 key购买 nike

我正在研究 bloc with flutter 上的许多教程,但遇到了一些不一致的地方。

我正在使用 Android Studio 并使用 Intellij v1.6.0 中的插件创建 bloc 代码。

对于 bloc_event,我继续看到类似这样的示例。

@immutable
abstract class FruitEvent extends Equatable {
FruitEvent([List props = const []]) : super(props);
}

当我生成我的 bloc 文件并查看生成的初始 _event 文件时,它看起来像这样。

@immutable
abstract class SongEvent extends Equatable {
const SongEvent();
}

如果我修改生成的代码以包含以下...

[List props = const []]) : super(props)

然后我收到以下错误“位置参数过多,预​​期为 0,已找到 1”,它引用了上面显示的行末尾的 Prop 。

如果我保留由 bloc 插件生成的代码,然后尝试通过添加以下内容来实现我的事件...

class AddSong extends SongEvent {}

然后我得到一个错误“Missing concrete implementation of 'getter Equatable.props'

这是我当前的 bloc/song_event.dart

import 'package:equatable/equatable.dart';
import 'package:meta/meta.dart';

@immutable
abstract class SongEvent extends Equatable {
const SongEvent();
}

class AddSong extends SongEvent {}

问题我是否应该使用 FuitEvent 示例中所示的包含 props 的行?

我不明白我在这里遗漏了什么以及为什么当我尝试使用与许多教程中所示相同的方法时它显示错误。

最佳答案

Equatable overrides == and hashCode for you so you don't have to waste your time writing lots of boilerplate code.

基本上它有助于对对象进行相等比较。

Equatable 是一个抽象类,它有一个 getter List<Object> get props; .扩展 Equatable 的具体类必须覆盖该 getter。

import 'package:equatable/equatable.dart';
import 'package:meta/meta.dart';

@immutable
abstract class SongEvent extends Equatable {
const SongEvent();
}

class AddSong extends SongEvent {}

在这种情况下,SongEvent 是一个抽象类,因此即使它扩展了 Equatable,它也不必实现 props getter。但是 AddSong 是一个具体的类,扩展了扩展 Equatable 的 SongEvent,因此 AddSong 必须在 Equatable 中实现 getter。

import 'package:equatable/equatable.dart';
import 'package:meta/meta.dart';

@immutable
abstract class SongEvent extends Equatable {
const SongEvent();
}

// Something like this
class AddSong extends SongEvent {
final Song song;

const AddSong(this.song);

@override
List<Object> get props => [song];
}

关于flutter - 缺少具体实现 'getter Equatable'/props 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60701509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com