step 20 : load list riwayat ketika proses sukses, display duration scan 3 detik
This commit is contained in:
@@ -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,
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -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),
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user