基础组件库
 
 
 
 
 

39 lines
1011 B

  1. import 'dart:async';
  2. import 'package:bloc/bloc.dart';
  3. import './bloc.dart';
  4. import 'login_repository.dart';
  5. import 'package:zhiying_comm/util/empty_util.dart';
  6. class LoginBloc extends Bloc<LoginEvent, LoginState> {
  7. LoginRepository repository;
  8. LoginBloc({this.repository});
  9. @override
  10. LoginState get initialState => InitialLoginState();
  11. @override
  12. Stream<LoginState> mapEventToState(
  13. LoginEvent event,
  14. ) async* {
  15. // TODO: Add Logic
  16. final currentState = state;
  17. /// 初始化
  18. if (event is LoginInitEvent) {
  19. yield* _mapLoginInitEventToState(event);
  20. }
  21. }
  22. /// 获取页面数据
  23. Stream<LoginState> _mapLoginInitEventToState(LoginInitEvent event) async* {
  24. var cache = await repository.fetchCachePageData();
  25. if (!EmptyUtil.isEmpty(cache)) yield LoginCacheState( model: cache);
  26. var result = await repository.fetchNetPageData();
  27. if (!EmptyUtil.isEmpty(result))
  28. yield LoginLoadedState(model: result);
  29. else
  30. yield LoginErrorState();
  31. }
  32. }