import 'dart:async'; import 'package:flutter/material.dart'; import '../../main.dart'; import '../../Utils/keys.dart'; import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; part 'login_event.dart'; part 'login_state.dart'; class LoginBloc extends Bloc { LoginBloc() : super(LoginInit()) { on((event, emit) async { if(event is LoginInitiated){ emit(LoginLoading()); var result = await util.JsonDataPostRaw({"User":event.email,"Pass":event.password}, '${prefs.getString(Keys.hostAddress)}/user//login/'); Map obj = {}; obj["SUCCESS"] = (result["STATUS"]==1&&result["DATA"]['status'] =='OK'); if(result["STATUS"]==1&&obj["SUCCESS"]){ prefs.setString(Keys.loginId, result['DATA'][Keys.loginId.toLowerCase()]); prefs.setString(Keys.company, result['DATA'][Keys.company.toLowerCase()]); obj[Keys.company] = result["DATA"][Keys.company.toLowerCase()]; obj[Keys.loginId] = result["DATA"][Keys.loginId.toLowerCase()]; } else{ obj["MESSAGE"] = (result["DATA"] is String)?result["DATA"]:result["DATA"]['info']; } emit(LoginFinish(data: obj)); } else if(event is LoginError){ prefs.setBool(Keys.loggedIn, false); prefs.remove(Keys.cabangId); prefs.remove(Keys.company); prefs.remove(Keys.loginId); if(event.err != ''){ util.showFlushbar(event.context, event.err); } emit(LoginInit()); } else if (event is LoginSuccess){ prefs.setBool(Keys.loggedIn, true); var cabangList = await util.JsonDataPostRaw({"company":event.company,"User":event.userId}, '${prefs.getString(Keys.hostAddress)}/user/cabangs/'); if(cabangList['STATUS']==1){ emit(LoginFinalize(cabangList: cabangList['DATA'])); } else{ Map obj = {}; obj["SUCCESS"] = false; obj["MESSAGE"] = cabangList['DATA']; emit(LoginFinish(data: obj)); } } }); } }