bbo*_*w73 5 dart flutter bloc flutter-bloc
我正在使用 flutter 完成许多关于 bloc 的教程,但遇到了一些不一致的情况。
我正在使用 Android studio 并使用 Intellij v1.6.0 的插件创建块代码。
对于 bloc_event,我继续看到类似这样的示例。
@immutable
abstract class FruitEvent extends Equatable {
FruitEvent([List props = const []]) : super(props);
}
Run Code Online (Sandbox Code Playgroud)
当我生成 bloc 文件并查看生成的初始 _event 文件时,它看起来像这样。
@immutable
abstract class SongEvent extends Equatable {
const SongEvent();
}
Run Code Online (Sandbox Code Playgroud)
如果我修改生成的代码以包含以下内容...
[List props = const []]) : super(props)
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误“位置参数太多,预期 0 个,找到 1 个”,该错误引用了上面显示的行末尾的 props。
如果我保留由 bloc 插件生成的代码,然后尝试通过添加以下内容来实现我的事件...
class AddSong extends SongEvent {}
Run Code Online (Sandbox Code Playgroud)
然后我收到错误“缺少‘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 {}
Run Code Online (Sandbox Code Playgroud)
问题 我是否应该使用包含 props 的行,如 FuitEvent 示例中所示?
我不明白我在这里缺少什么,也不明白为什么当我尝试使用与许多教程中所示的相同方法时它会显示错误。
Equatable 会为您覆盖 == 和 hashCode,这样您就不必浪费时间编写大量样板代码。
基本上它有助于对对象进行相等比较。
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 {}
Run Code Online (Sandbox Code Playgroud)
在本例中,SongEvent 是一个抽象类,因此即使它扩展了 Equatable,也不必实现 props getter。但是AddSong是一个扩展SongEvent的具体类,而SongEvent又扩展了Equatable,因此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];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4224 次 |
| 最近记录: |