From 8018bd89c609465b7d2afb559678014d9b98469e Mon Sep 17 00:00:00 2001 From: sindhu Date: Wed, 19 Feb 2025 13:18:52 +0700 Subject: [PATCH] step 20 : load list riwayat ketika proses sukses, display duration scan 3 detik --- images/logoapk.png | Bin 0 -> 9510 bytes lib/model/sukses_person_model.dart | 45 +++++++++++++ lib/provider/scan_provider.dart | 8 +++ lib/repository/scan_repository.dart | 15 +++-- lib/screen/home/home_screen.dart | 13 ++-- .../home/list_riwayat_scan_provider.dart | 7 +- lib/screen/scan/edit_scan_screen.dart | 40 ++++++++---- lib/screen/scan/scan_screen.dart | 61 +++++++++++++++--- lib/screen/scan/upload_scan_provider.dart | 7 +- 9 files changed, 153 insertions(+), 43 deletions(-) create mode 100644 images/logoapk.png create mode 100644 lib/model/sukses_person_model.dart diff --git a/images/logoapk.png b/images/logoapk.png new file mode 100644 index 0000000000000000000000000000000000000000..e2620a3dee335c8f378525890653128a8a4189f3 GIT binary patch literal 9510 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 Waqzsg0};oX00kLU=_*OH(EkP5|5z9R literal 0 HcmV?d00001 diff --git a/lib/model/sukses_person_model.dart b/lib/model/sukses_person_model.dart new file mode 100644 index 0000000..45a92d1 --- /dev/null +++ b/lib/model/sukses_person_model.dart @@ -0,0 +1,45 @@ +class SuksesPersonModel { + final String personID; + final String personNIK; + final String personName; + final String personDob; + final String personSex; + final String personUrl; + final String m_sexname; + + SuksesPersonModel({ + required this.personID, + required this.personNIK, + required this.personName, + required this.personDob, + required this.personSex, + required this.personUrl, + required this.m_sexname, + }); + + // Convert JSON to Model + factory SuksesPersonModel.fromJson(Map json) { + return SuksesPersonModel( + personID: json['Person_ID'] ?? "", + personNIK: json['Person_NIK'] ?? "", + personName: json['Person_Name'] ?? "", + personDob: json['Person_Dob'] ?? DateTime.now(), + personSex: json['Person_Sex'] ?? "", + personUrl: json['Person_Url'] ?? "", + m_sexname: json['m_sexname'] ?? "", + ); + } + + // Convert Model to JSON + Map toJson() { + return { + 'Person_ID':personID, + 'Person_NIK': personNIK, + 'Person_Name': personName, + 'Person_Dob': personDob, + 'Person_Sex': personSex, + 'Person_Url': personUrl, + 'm_sexname':m_sexname, + }; + } +} diff --git a/lib/provider/scan_provider.dart b/lib/provider/scan_provider.dart index 15bce8a..057259c 100644 --- a/lib/provider/scan_provider.dart +++ b/lib/provider/scan_provider.dart @@ -3,6 +3,14 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:scanktpflutter/model/sex_model.dart'; import '../model/edit_person_model.dart'; +import '../model/person_ktp_model.dart'; + +// list scan +final listScanRwt = StateProvider>( + (ref) => List.empty( + growable: true, + ), +); final selectedPersonIdx = StateProvider((ref) => "0"); final selectedEdit = StateProvider( diff --git a/lib/repository/scan_repository.dart b/lib/repository/scan_repository.dart index d80bf66..4e1297d 100644 --- a/lib/repository/scan_repository.dart +++ b/lib/repository/scan_repository.dart @@ -1,6 +1,7 @@ import '../../model/sex_model.dart'; import '../model/person_ktp_model.dart'; +import '../model/sukses_person_model.dart'; import 'base_repository.dart'; class ScanRepository extends BaseRepository { @@ -23,7 +24,7 @@ class ScanRepository extends BaseRepository { return result; } - Future prosesScan({ + Future> prosesScan({ required String host, required String base64File, required String userId, @@ -34,13 +35,13 @@ class ScanRepository extends BaseRepository { "userId": userId, }, service: service); - if (resp['status'] == "OK") { - return "Sukses Upload File"; - } else { - resp['message']; - } + final result = List.empty(growable: true); + resp['data'].forEach((e) { + final model = SuksesPersonModel.fromJson(e); + result.add(model); + }); - return resp['message']; + return result; } // sex diff --git a/lib/screen/home/home_screen.dart b/lib/screen/home/home_screen.dart index 8a076ec..4cafc58 100644 --- a/lib/screen/home/home_screen.dart +++ b/lib/screen/home/home_screen.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import '../../model/person_ktp_model.dart'; +import '../../provider/scan_provider.dart'; import '../../screen/home/card_riwayat_scan.dart'; import '../../screen/home/list_riwayat_scan_provider.dart'; @@ -24,9 +24,7 @@ class HomeScreen extends HookConsumerWidget { // final username = currentUser?.model.username ?? "-"; final host = currentUser?.host ?? ""; final isLoading = useState(false); - final listScanArr = useState>( - List.empty(growable: true), - ); + final listScanArr = ref.watch(listScanRwt); final userId = currentUser?.model.userId ?? ""; useEffect(() { @@ -57,7 +55,6 @@ class HomeScreen extends HookConsumerWidget { ); } else if (next is ListRiwayatScanStateDone) { isLoading.value = false; - listScanArr.value = next.model; } }); @@ -212,7 +209,7 @@ class HomeScreen extends HookConsumerWidget { ), ) // belum ada riwayat - else if (listScanArr.value.isEmpty) + else if (listScanArr.isEmpty) Expanded( child: RefreshIndicator( color: Constant.bgButton, @@ -260,9 +257,9 @@ class HomeScreen extends HookConsumerWidget { child: ListView.builder( physics: AlwaysScrollableScrollPhysics(), shrinkWrap: true, - itemCount: listScanArr.value.length, + itemCount: listScanArr.length, itemBuilder: (context, i) { - final obj = listScanArr.value[i]; + final obj = listScanArr[i]; return Padding( padding: EdgeInsets.only( top: Constant.getActualYPhone( diff --git a/lib/screen/home/list_riwayat_scan_provider.dart b/lib/screen/home/list_riwayat_scan_provider.dart index 147c566..ea07824 100644 --- a/lib/screen/home/list_riwayat_scan_provider.dart +++ b/lib/screen/home/list_riwayat_scan_provider.dart @@ -1,5 +1,6 @@ import 'package:equatable/equatable.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../provider/scan_provider.dart'; import '../../repository/scan_repository.dart'; import '../../model/person_ktp_model.dart'; @@ -24,13 +25,11 @@ class ListRiwayatScanNotifier extends StateNotifier { state = ListRiwayatScanStateLoading(); final resp = await ScanRepository( dio: ref.read(dioProvider), - ).listRiwayatScanRepo( - host: host, - userId:userId - ); + ).listRiwayatScanRepo(host: host, userId: userId); // print(resp); state = ListRiwayatScanStateDone(model: resp); + ref.read(listScanRwt.notifier).state = resp; } catch (e) { if (e is BaseRepositoryException) { state = ListRiwayatScanStateError(message: e.message); diff --git a/lib/screen/scan/edit_scan_screen.dart b/lib/screen/scan/edit_scan_screen.dart index 180175f..ba13cef 100644 --- a/lib/screen/scan/edit_scan_screen.dart +++ b/lib/screen/scan/edit_scan_screen.dart @@ -13,6 +13,7 @@ import '../../app/app_extension.dart'; import '../../app/constant.dart'; import '../../app/route.dart'; import '../../provider/current_user_provider.dart'; +import '../home/list_riwayat_scan_provider.dart'; class EditScanScreen extends HookConsumerWidget { const EditScanScreen({super.key}); @@ -167,6 +168,30 @@ class EditScanScreen extends HookConsumerWidget { } } + // listRiwayProvider + ref.listen(listRiwayatScanProvider, (prev, next) { + if (next is ListRiwayatScanStateLoading) { + // isLoading.value = true; + } else if (next is ListRiwayatScanStateError) { + // isLoading.value = false; + // errorMessage.value = next.message; + snackbarWidget( + context, + next.message, + snackbarType.error, + Duration(seconds: 3), + ); + } else if (next is ListRiwayatScanStateDone) { + // isLoading.value = false; + + Navigator.of(context).pop(); + Navigator.of(context).pushNamedAndRemoveUntil( + homeRoute, + (route) => false, + ); + } + }); + // proses edit ref.listen(editScanProvider, (prev, next) { if (next is EditScanStateLoading) { @@ -182,17 +207,10 @@ class EditScanScreen extends HookConsumerWidget { ); } else if (next is EditScanStateDone) { isLoading.value = false; - snackbarWidget( - context, - next.pesan, - snackbarType.success, - Duration(seconds: 3), - ); - Navigator.of(context).pushNamedAndRemoveUntil( - homeRoute, - (route) => false, - ); - return; + ref.read(listRiwayatScanProvider.notifier).listRiwayatScan( + host: host, + userId: userId, + ); } }); diff --git a/lib/screen/scan/scan_screen.dart b/lib/screen/scan/scan_screen.dart index de4e5c5..77c5884 100644 --- a/lib/screen/scan/scan_screen.dart +++ b/lib/screen/scan/scan_screen.dart @@ -9,8 +9,12 @@ import 'package:image/image.dart' as img; import '../../app/route.dart'; import '../../app/constant.dart'; +import '../../model/edit_person_model.dart'; +import '../../model/sex_model.dart'; import '../../provider/current_user_provider.dart'; +import '../../provider/scan_provider.dart'; import '../../widget/customsnackbarwidget.dart'; +import '../home/list_riwayat_scan_provider.dart'; import 'upload_scan_provider.dart'; class ScanScreen extends HookConsumerWidget { @@ -149,6 +153,29 @@ class ScanScreen extends HookConsumerWidget { } } + // listRiwayProvider + ref.listen(listRiwayatScanProvider, (prev, next) { + if (next is ListRiwayatScanStateLoading) { + // isLoading.value = true; + } else if (next is ListRiwayatScanStateError) { + // isLoading.value = false; + // errorMessage.value = next.message; + snackbarWidget( + context, + next.message, + snackbarType.error, + Duration(seconds: 3), + ); + } else if (next is ListRiwayatScanStateDone) { + // isLoading.value = false; + + Navigator.of(context).pop(); + Navigator.of(context).pushNamed( + editScanRoute, + ); + } + }); + // proses upload ref.listen(uploadScanProvider, (prev, next) { if (next is UploadScanStateLoading) { @@ -165,27 +192,41 @@ class ScanScreen extends HookConsumerWidget { ); } else if (next is UploadScanStateDone) { isLoadingUpload.value = false; - snackbarWidget( - context, - next.pesan, - snackbarType.success, - Duration(seconds: 3), + ref.read(selectedPersonIdx.notifier).state = next.model[0].personID; + + // set SEX + ref.read(eSexSelected.notifier).state = SexModel( + M_SexID: next.model[0].personSex, + M_SexCode: "", + m_sexname: next.model[0].m_sexname, + M_SexNameLang: ""); + + ref.read(selectedEdit.notifier).state = EditPersonModel( + personID: next.model[0].personID, + personNIK: next.model[0].personNIK, + personName: next.model[0].personName, + m_sexname: next.model[0].m_sexname, + personDob: next.model[0].personDob, + personSex: next.model[0].personSex, + personUrl: next.model[0].personUrl, ); - Navigator.of(context) - .pushNamedAndRemoveUntil(homeRoute, (route) => false); + + ref.read(listRiwayatScanProvider.notifier).listRiwayatScan( + host: host, + userId: userId, + ); } }); // loading proses upload useEffect useEffect(() { - WidgetsBinding.instance.addPostFrameCallback((_) { + WidgetsBinding.instance.addPostFrameCallback((timestamp) { if (isLoadingUpload.value == true) { snackbarWidget( context, 'Sedang Upload Foto...', snackbarType.warning, - // Duration(seconds: 3), - Duration(days: 1), + Duration(seconds: 3), ); } }); diff --git a/lib/screen/scan/upload_scan_provider.dart b/lib/screen/scan/upload_scan_provider.dart index 2c28a60..d29971b 100644 --- a/lib/screen/scan/upload_scan_provider.dart +++ b/lib/screen/scan/upload_scan_provider.dart @@ -1,5 +1,6 @@ import 'package:equatable/equatable.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../model/sukses_person_model.dart'; import '../../repository/scan_repository.dart'; import '../../provider/dio_provider.dart'; @@ -29,7 +30,7 @@ class UploadScanNotifier extends StateNotifier { ); // print(resp); - state = UploadScanStateDone(pesan: resp); + state = UploadScanStateDone(model: resp); } catch (e) { if (e is BaseRepositoryException) { state = UploadScanStateError(message: e.message); @@ -64,8 +65,8 @@ class UploadScanStateError extends UploadScanState { } class UploadScanStateDone extends UploadScanState { - final String pesan; + final List model; UploadScanStateDone({ - required this.pesan, + required this.model, }) : super(DateTime.now()); }