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( (ref) => EditScanNotifier(ref: ref)); // 2. notifier class EditScanNotifier extends StateNotifier { 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 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()); }