import 'package:equatable/equatable.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:scanktpflutter/repository/no-login-scan/no_login_scan_repository.dart'; import '../../provider/dio_provider.dart'; import '../../repository/base_repository.dart'; // 3. state provider final noLoginEditScanProvider = StateNotifierProvider( (ref) => NoLoginEditScanNotifier(ref: ref)); // 2. notifier class NoLoginEditScanNotifier extends StateNotifier { final Ref ref; NoLoginEditScanNotifier({required this.ref}) : super(NoLoginEditScanStateInit()); void editScan({ required String token, required String host, required String client_id, required String Person_ID, required String Person_NIK, required String Person_Name, required String Person_Dob, required String Person_Sex, }) async { try { state = NoLoginEditScanStateLoading(); final resp = await NoLoginScanRepository( dio: ref.read(dioProvider), ).prosesEdit( token: token, host: host, Person_ID: Person_ID, Person_NIK: Person_NIK, Person_Name: Person_Name, Person_Dob: Person_Dob, Person_Sex: Person_Sex, client_id: client_id, ); // print(resp); state = NoLoginEditScanStateDone(pesan: resp); } catch (e) { if (e is BaseRepositoryException) { state = NoLoginEditScanStateError(message: e.message); } else { state = NoLoginEditScanStateError(message: e.toString()); } } } } // 1. state abstract class NoLoginEditScanState extends Equatable { final DateTime date; const NoLoginEditScanState(this.date); @override List get props => [date]; } class NoLoginEditScanStateInit extends NoLoginEditScanState { NoLoginEditScanStateInit() : super(DateTime.now()); } class NoLoginEditScanStateLoading extends NoLoginEditScanState { NoLoginEditScanStateLoading() : super(DateTime.now()); } class NoLoginEditScanStateError extends NoLoginEditScanState { final String message; NoLoginEditScanStateError({ required this.message, }) : super(DateTime.now()); } class NoLoginEditScanStateDone extends NoLoginEditScanState { final String pesan; NoLoginEditScanStateDone({ required this.pesan, }) : super(DateTime.now()); }