import 'package:dio/dio.dart'; import 'package:equatable/equatable.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:fluttervoice2text/model/voice_to_text_model.dart'; import 'package:fluttervoice2text/repository/voice_to_text_repository.dart'; import '../../provider/dio_provider.dart'; import '../../repository/base_repository.dart'; // 3. state provider final editRekamProvider = StateNotifierProvider( (ref) => EditRekamNotifier(ref: ref)); // 2. notifier class EditRekamNotifier extends StateNotifier { final Ref ref; EditRekamNotifier({required this.ref}) : super(EditRekamStateInit()); void editRekam({ required String host, required String Voice2text_ID, required String Voice2text_Note, required String Voice2text_Text, }) async { try { state = EditRekamStateLoading(); final resp = await VoiceToTextRepository( dio: ref.read(dioProvider), ).prosesEdit( host: host, Voice2text_Note: Voice2text_Note, Voice2text_ID: Voice2text_ID, Voice2text_Text:Voice2text_Text, ); // print(resp); state = EditRekamStateDone(pesan: resp); } catch (e) { if (e is BaseRepositoryException) { state = EditRekamStateError(message: e.message); } else { state = EditRekamStateError(message: e.toString()); } } } } // 1. state abstract class EditRekamState extends Equatable { final DateTime date; const EditRekamState(this.date); @override List get props => [date]; } class EditRekamStateInit extends EditRekamState { EditRekamStateInit() : super(DateTime.now()); } class EditRekamStateLoading extends EditRekamState { EditRekamStateLoading() : super(DateTime.now()); } class EditRekamStateError extends EditRekamState { final String message; EditRekamStateError({ required this.message, }) : super(DateTime.now()); } class EditRekamStateDone extends EditRekamState { final String pesan; EditRekamStateDone({ required this.pesan, }) : super(DateTime.now()); }