import 'dart:async'; import 'package:bloc/bloc.dart'; import './bloc.dart'; import 'login_repository.dart'; import 'package:zhiying_comm/util/empty_util.dart'; class LoginBloc extends Bloc<LoginEvent, LoginState> { LoginRepository repository; LoginBloc({this.repository}); @override LoginState get initialState => InitialLoginState(); @override Stream<LoginState> mapEventToState( LoginEvent event, ) async* { // TODO: Add Logic final currentState = state; /// 初始化 if (event is LoginInitEvent) { yield* _mapLoginInitEventToState(event); } } /// 获取页面数据 Stream<LoginState> _mapLoginInitEventToState(LoginInitEvent event) async* { var cache = await repository.fetchCachePageData(); if (!EmptyUtil.isEmpty(cache)) yield LoginCacheState( model: cache); var result = await repository.fetchNetPageData(); if (!EmptyUtil.isEmpty(result)) yield LoginLoadedState(model: result); else yield LoginErrorState(); } }