|
- import 'dart:async';
- import 'package:bloc/bloc.dart';
- import 'package:zhiying_comm/util/global_config.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}) : super(InitialLoginState());
-
-
-
- @override
- Stream<LoginState> mapEventToState(
- LoginEvent event,
- ) async* {
- /// 初始化
- if (event is LoginInitEvent) {
- yield* _mapLoginInitEventToState(event);
- }
-
- /// 淘宝登录
- if (event is LoginThirdAliEvent) {
- yield* _mapLoginAliEventToState(event);
- }
-
- /// 苹果登录
- if (event is LoginThirdAppleEvent) {
- yield* _mapLoginAppleEventToState(event);
- }
-
- /// QQ登录
- if (event is LoginThirdQQEvent) {
- yield* _mapLoginQQEventToState(event);
- }
-
- /// 微信登录
- if (event is LoginThirdWeChatEvent) {
- yield* _mapLoginWeChatEventToState(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();
- }
-
- /// 淘宝登录
- Stream<LoginState> _mapLoginAliEventToState(LoginThirdAliEvent event) async* {
- var result = await repository.aliLogin(
- nick: event.nick,
- avatarUrl: event.avatarUrl,
- openId: event.openId,
- openSid: event.openSid,
- topAccessToken: event.topAccessToken,
- topAuthCode: event.topAuthCode,
- );
-
- if(!EmptyUtil.isEmpty(result)){
- yield LoginThirdLoginSuccessState(model: result, thirdType: GlobalConfig.LOGIN_THIRD_ALI);
- }else{
- yield LoginThirdLoginErrorState();
- }
- }
-
- /// 微信登录
- Stream<LoginState> _mapLoginWeChatEventToState(LoginThirdWeChatEvent event) async* {
- var result = await repository.weChatLogin(event?.model);
- if(!EmptyUtil.isEmpty(result)){
- yield LoginThirdLoginSuccessState(model: result, thirdType: GlobalConfig.LOGIN_THIRD_WECHAT);
- }else{
- yield LoginThirdLoginErrorState();
- }
- }
-
- /// QQ 登录
- Stream<LoginState> _mapLoginQQEventToState(LoginThirdQQEvent event) async* {
- var result = await repository.qqLogin(event?.model);
- if(!EmptyUtil.isEmpty(result)){
- yield LoginThirdLoginSuccessState(model: result, thirdType: GlobalConfig.LOGIN_THIRD_QQ);
- }else{
- yield LoginThirdLoginErrorState();
- }
- }
-
- /// 苹果登录
- Stream<LoginState> _mapLoginAppleEventToState(LoginThirdAppleEvent event) async* {
- var result = await repository.appleLogin(identityToken: event.identityToken);
- if(!EmptyUtil.isEmpty(result)){
- yield LoginThirdLoginSuccessState(model: result, thirdType: GlobalConfig.LOGIN_THIRD_APPLE);
- }else{
- yield LoginThirdLoginErrorState();
- }
- }
- }
|