step 20 : load list riwayat ketika proses sukses, display duration scan 3 detik
This commit is contained in:
@@ -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<bool>(false);
|
||||
final listScanArr = useState<List<PersonKtp>>(
|
||||
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(
|
||||
|
||||
@@ -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<ListRiwayatScanState> {
|
||||
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);
|
||||
|
||||
@@ -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