flutter - 为什么这些 BLOC 事件中的对象实例化不同?
问题描述
我正在关注 Felix Angelov 关于 Flutter Bloc 模式的教程“https://www.hidigital.io/blog/2020/06/flutter-login-tutorial-with-flutter-bloc”。
为什么AuthenticationEvent
实例化的类是这样的:
import 'package:meta/meta.dart';
import 'package:equatable/equatable.dart';
abstract class AuthenticationEvent extends Equatable {
AuthenticationEvent([List props = const []]) : super(props); <--------- this line
}
class AppStarted extends AuthenticationEvent {
@override
String toString() => 'AppStarted';
}
class LoggedIn extends AuthenticationEvent {
final String token;
LoggedIn({@required this.token}) : super([token]);
@override
String toString() => 'LoggedIn { token: $token }';
}
class LoggedOut extends AuthenticationEvent {
@override
String toString() => 'LoggedOut';
}
而对于 LoginEvent 类,它的实例化如下:
import 'package:meta/meta.dart';
import 'package:equatable/equatable.dart';
abstract class LoginEvent extends Equatable {
const LoginEvent(); <----------------------------------------- this line
}
class LoginButtonPressed extends LoginEvent {
final String username;
final String password;
const LoginButtonPressed({
@required this.username,
@required this.password,
});
@override
List<Object> get props => [username, password];
@override
String toString() =>
'LoginButtonPressed { username: $username, password: $password }';
}
这里有什么区别?
解决方案
AuthenticationEvent 是用旧版本的 Equatable 库编写的。您不能在当前版本中使用该语法。
推荐阅读
- sql - 如何使用单个 SQL 查询使用封装的对象类型或集合类型填充 PL/SQL 对象类型
- php - 使用 php 在数据库中插入下一个最大值
- google-cloud-platform - 减少实例的开始时间
- c++ - QLabel 从文件中加载图像
- c# - 无法检测内容输入的语言,错误 401
- reactjs - 在带有按钮的 App Bar 中 material-ui / core ': v3.9.1 裁剪背景图片
- javascript - 使用遗留反应时,Reaction commerce 2.0(repo 上的最新提交)是否仍与 1.16.0 文档兼容?
- html - 如何更改css以显示两个相邻的小部件?
- google-apps-script - GoogleAppsScript | setPictureFill 在 Google 幻灯片中不起作用
- python - 根据用户输入创建具有整数值的字符串列表