Files
scan-ktp/lib/screen/scan/edit_scan_provider.dart
2025-02-18 07:48:09 +07:00

80 lines
2.1 KiB
Dart

import 'package:equatable/equatable.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../repository/scan_repository.dart';
import '../../provider/dio_provider.dart';
import '../../repository/base_repository.dart';
// 3. state provider
final editScanProvider = StateNotifierProvider<EditScanNotifier, EditScanState>(
(ref) => EditScanNotifier(ref: ref));
// 2. notifier
class EditScanNotifier extends StateNotifier<EditScanState> {
final Ref ref;
EditScanNotifier({required this.ref}) : super(EditScanStateInit());
void editScan({
required String host,
required String userId,
required String Person_ID,
required String Person_NIK,
required String Person_Name,
required String Person_Dob,
required String Person_Sex,
}) async {
try {
state = EditScanStateLoading();
final resp = await ScanRepository(
dio: ref.read(dioProvider),
).prosesEdit(
host: host,
Person_ID: Person_ID,
Person_NIK: Person_NIK,
Person_Name: Person_Name,
Person_Dob: Person_Dob,
Person_Sex: Person_Sex,
userId: userId,
);
// print(resp);
state = EditScanStateDone(pesan: resp);
} catch (e) {
if (e is BaseRepositoryException) {
state = EditScanStateError(message: e.message);
} else {
state = EditScanStateError(message: e.toString());
}
}
}
}
// 1. state
abstract class EditScanState extends Equatable {
final DateTime date;
const EditScanState(this.date);
@override
List<Object?> get props => [date];
}
class EditScanStateInit extends EditScanState {
EditScanStateInit() : super(DateTime.now());
}
class EditScanStateLoading extends EditScanState {
EditScanStateLoading() : super(DateTime.now());
}
class EditScanStateError extends EditScanState {
final String message;
EditScanStateError({
required this.message,
}) : super(DateTime.now());
}
class EditScanStateDone extends EditScanState {
final String pesan;
EditScanStateDone({
required this.pesan,
}) : super(DateTime.now());
}