import 'package:equatable/equatable.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:scanktpflutter/model/no-login/no_login_sex_model.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 noLoginSexProvider = StateNotifierProvider( (ref) => NoLoginSexNotifier(ref: ref)); // 2. notifier class NoLoginSexNotifier extends StateNotifier { final Ref ref; NoLoginSexNotifier({required this.ref}) : super(NoLoginSexStateInit()); void sex({ required String host, required String client_id, required String token, }) async { try { state = NoLoginSexStateLoading(); final resp = await NoLoginScanRepository( dio: ref.read(dioProvider), ).sexRepo( host: host, client_id: client_id, token: token, ); // print(resp); state = NoLoginSexStateDone(model: resp); } catch (e) { if (e is BaseRepositoryException) { state = NoLoginSexStateError(message: e.message); } else { state = NoLoginSexStateError(message: e.toString()); } } } } // 1. state abstract class NoLoginSexState extends Equatable { final DateTime date; const NoLoginSexState(this.date); @override List get props => [date]; } class NoLoginSexStateInit extends NoLoginSexState { NoLoginSexStateInit() : super(DateTime.now()); } class NoLoginSexStateLoading extends NoLoginSexState { NoLoginSexStateLoading() : super(DateTime.now()); } class NoLoginSexStateError extends NoLoginSexState { final String message; NoLoginSexStateError({ required this.message, }) : super(DateTime.now()); } class NoLoginSexStateDone extends NoLoginSexState { final List model; NoLoginSexStateDone({ required this.model, }) : super(DateTime.now()); }