// 搜索状态 — SearchBloc 输出的 UI 状态 part of 'search_bloc.dart'; /// 搜索状态基类 sealed class SearchState { const SearchState(); } /// 初始状态 — 未执行任何搜索 final class SearchInitial extends SearchState { const SearchInitial(); } /// 加载中 — 正在查询日记 final class SearchLoading extends SearchState { const SearchLoading(); } /// 搜索结果已加载 final class SearchLoaded extends SearchState { /// 搜索结果列表(空列表表示无匹配) final List results; /// 当前活跃的心情筛选条件 final String? activeMood; /// 当前活跃的标签筛选条件 final String? activeTag; const SearchLoaded({ this.results = const [], this.activeMood, this.activeTag, }); /// 是否有活跃的筛选条件 bool get hasActiveFilter => activeMood != null || activeTag != null; SearchLoaded copyWith({ List? results, String? activeMood, String? activeTag, }) => SearchLoaded( results: results ?? this.results, activeMood: activeMood ?? this.activeMood, activeTag: activeTag ?? this.activeTag, ); } /// 搜索出错 final class SearchError extends SearchState { final String message; const SearchError(this.message); }