Business Login Flutter Apps
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 

68 řádky
2.3 KiB

  1. import 'dart:async';
  2. import 'dart:io';
  3. import 'package:bloc/bloc.dart';
  4. import 'package:meta/meta.dart';
  5. import 'package:unitstocks/Utils/keys.dart';
  6. import '../../main.dart';
  7. import 'package:path_provider/path_provider.dart';
  8. import 'package:path/path.dart';
  9. part 'cabang_event.dart';
  10. part 'cabang_state.dart';
  11. class CabangBloc extends Bloc<CabangEvent, CabangState> {
  12. CabangBloc() : super(CabangInitial()) {
  13. on<CabangEvent>((event, emit) async {
  14. if(event is CabangInit){
  15. emit(CabangLoading());
  16. List<dynamic> cabangs = event.cabangList??[];
  17. if(cabangs.isEmpty){
  18. var cabangList = await util.JsonDataPostRaw({"company":event.company,"User":event.userId}, '${prefs.getString(Keys.hostAddress)}/user/cabangs/',timeout: true);
  19. if(cabangList['STATUS']==1){
  20. cabangs = cabangList['DATA'];
  21. emit(CabangDisplay(cabangList: cabangs));
  22. }
  23. else {
  24. emit(CabangError(err: "Gagal mengambil akses cabang. Pastikan anda memiliki akses!!"));
  25. }
  26. }
  27. else emit(CabangDisplay(cabangList: cabangs));
  28. }
  29. else if (event is CabangPicked){
  30. String lastCabang = prefs.getString(Keys.cabangId)??'';
  31. if(lastCabang!=event.cabangId){
  32. prefs.setString(Keys.cabangId, event.cabangId);
  33. await Future.sync(()async{
  34. try{
  35. Directory? documentsDirectory = await getApplicationDocumentsDirectory();
  36. String path = join(documentsDirectory.path, "UnitStocking.db");
  37. File db = File(path);
  38. if(db.existsSync()){
  39. db.deleteSync();
  40. }
  41. await prefs.remove(Keys.lastDownload);
  42. await prefs.remove(Keys.lastUpload);
  43. await prefs.remove(Keys.targetProccess);
  44. await prefs.remove(Keys.submitProccess);
  45. emit(CabangFinished(cabangChanged: lastCabang!=event.cabangId));
  46. }
  47. catch(e){
  48. // print(e);
  49. prefs.setString(Keys.cabangId, lastCabang);
  50. emit(const CabangFinished(cabangChanged: false));
  51. }
  52. });
  53. }
  54. else {
  55. emit(const CabangFinished(cabangChanged: false));
  56. }
  57. }
  58. else if (event is CabangCanceled){
  59. emit(CabangInitial());
  60. }
  61. });
  62. }
  63. }