step 24 : camera scan qr code, perbaharui state btn kembali, move scan_provider.dart ke no_login_scan_provider.dart
This commit is contained in:
72
lib/screen/no-login-scan/no_login_upload_scan_provider.dart
Normal file
72
lib/screen/no-login-scan/no_login_upload_scan_provider.dart
Normal file
@@ -0,0 +1,72 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import '../../repository/no-login-scan/no_login_scan_repository.dart';
|
||||
import '../../model/sukses_person_model.dart';
|
||||
|
||||
import '../../provider/dio_provider.dart';
|
||||
import '../../repository/base_repository.dart';
|
||||
|
||||
// 3. state provider
|
||||
final noLoginUploadScanProvider = StateNotifierProvider<NoLoginUploadScanNotifier, NoLoginUploadScanState>(
|
||||
(ref) => NoLoginUploadScanNotifier(ref: ref));
|
||||
|
||||
// 2. notifier
|
||||
class NoLoginUploadScanNotifier extends StateNotifier<NoLoginUploadScanState> {
|
||||
final Ref ref;
|
||||
NoLoginUploadScanNotifier({required this.ref}) : super(NoLoginUploadScanStateInit());
|
||||
void uploadScan({
|
||||
required String host,
|
||||
required String userId,
|
||||
required String base64File,
|
||||
}) async {
|
||||
try {
|
||||
state = NoLoginUploadScanStateLoading();
|
||||
final resp = await NoLoginScanRepository(
|
||||
dio: ref.read(dioProvider),
|
||||
).prosesScan(
|
||||
host: host,
|
||||
base64File: base64File,
|
||||
userId: userId,
|
||||
);
|
||||
|
||||
// print(resp);
|
||||
state = NoLoginUploadScanStateDone(model: resp);
|
||||
} catch (e) {
|
||||
if (e is BaseRepositoryException) {
|
||||
state = NoLoginUploadScanStateError(message: e.message);
|
||||
} else {
|
||||
state = NoLoginUploadScanStateError(message: e.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 1. state
|
||||
abstract class NoLoginUploadScanState extends Equatable {
|
||||
final DateTime date;
|
||||
const NoLoginUploadScanState(this.date);
|
||||
@override
|
||||
List<Object?> get props => [date];
|
||||
}
|
||||
|
||||
class NoLoginUploadScanStateInit extends NoLoginUploadScanState {
|
||||
NoLoginUploadScanStateInit() : super(DateTime.now());
|
||||
}
|
||||
|
||||
class NoLoginUploadScanStateLoading extends NoLoginUploadScanState {
|
||||
NoLoginUploadScanStateLoading() : super(DateTime.now());
|
||||
}
|
||||
|
||||
class NoLoginUploadScanStateError extends NoLoginUploadScanState {
|
||||
final String message;
|
||||
NoLoginUploadScanStateError({
|
||||
required this.message,
|
||||
}) : super(DateTime.now());
|
||||
}
|
||||
|
||||
class NoLoginUploadScanStateDone extends NoLoginUploadScanState {
|
||||
final List<SuksesPersonModel> model;
|
||||
NoLoginUploadScanStateDone({
|
||||
required this.model,
|
||||
}) : super(DateTime.now());
|
||||
}
|
||||
Reference in New Issue
Block a user