【发布时间】:2023-03-23 00:30:01
【问题描述】:
我正在尝试找出定义我的 Search Bloc 状态以在所有状态类中保留 text 属性(搜索键)的最佳方法。
目前,它看起来像这样:
import 'package:equatable/equatable.dart';
import 'package:project/models/searchResults.dart';
class SearchState extends Equatable {
SearchState([List props = const []]) : super(props);
}
class SearchStateEmpty extends SearchState {
final String text;
SearchStateEmpty({this.text});
@override
String toString() => 'SearchStateEmpty';
}
class SearchStateLoading extends SearchState {
final String text;
SearchStateLoading({this.text});
@override
String toString() => 'SearchStateLoading';
}
class SearchStateSuccess extends SearchState {
final String text;
final List<RestaurantSearchItem> items;
SearchStateSuccess({this.text, this.items}) : super([text, items]);
@override
String toString() => 'SearchStateSuccess { items: ${items.length} }';
}
class SearchStateError extends SearchState {
final String text;
final String error;
SearchStateError({this.text, this.error}) : super([text, error]);
@override
String toString() => 'SearchStateError';
}
有没有比在所有状态类中定义 text 属性更好的方法?
如果我不必每次事件没有它时都使用currentState 属性,这不会像现在那么糟糕。例如:
SearchStateEmpty(text: currentState.text);
...
SearchStateLoading(text: event.text);
...
SearchStateSuccess(text: currentState.text, items: results.items);
我一直在寻找 Flutter 文档中的示例,但我能找到的只是我应该使用不同的 bloc 或放弃 equatable(我想保留它,因为它非常好)。
任何带有示例的建议都将受到高度赞赏。谢谢。
【问题讨论】: