Files
scan-ktp/lib/screen/no-login-scan/no_login_sex_provider.dart
sindhu 29c38b011a step 25 : upload ktp, qrcode string, edit data,
check token expired 10 menit dari expired_date
2025-02-28 05:21:17 +07:00

74 lines
2.0 KiB
Dart

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<NoLoginSexNotifier, NoLoginSexState>(
(ref) => NoLoginSexNotifier(ref: ref));
// 2. notifier
class NoLoginSexNotifier extends StateNotifier<NoLoginSexState> {
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<Object?> 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<NoLoginSexModel> model;
NoLoginSexStateDone({
required this.model,
}) : super(DateTime.now());
}