step 20 : load list riwayat ketika proses sukses, display duration scan 3 detik

This commit is contained in:
sindhu
2025-02-19 13:18:52 +07:00
parent 952934ed67
commit 8018bd89c6
9 changed files with 153 additions and 43 deletions

View File

@@ -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,
);
}
});

View File

@@ -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),
);
}
});

View File

@@ -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<UploadScanState> {
);
// 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<SuksesPersonModel> model;
UploadScanStateDone({
required this.pesan,
required this.model,
}) : super(DateTime.now());
}