Barcode Printing Utility Done
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
import 'dart:async';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import '../../../core/network/dio_client.dart';
|
||||
import '../domain/barcode_template.dart';
|
||||
|
||||
class BarcodeTemplatesNotifier extends AsyncNotifier<List<BarcodeTemplate>> {
|
||||
@override
|
||||
FutureOr<List<BarcodeTemplate>> build() async {
|
||||
return _fetchTemplates();
|
||||
}
|
||||
|
||||
Future<List<BarcodeTemplate>> _fetchTemplates() async {
|
||||
try {
|
||||
final response = await DioClient().dio.get('/barcode-templates');
|
||||
if (response.statusCode == 200) {
|
||||
final List<dynamic> data = response.data;
|
||||
return data.map((e) => BarcodeTemplate.fromJson(e)).toList();
|
||||
}
|
||||
return [];
|
||||
} catch (e) {
|
||||
print('Error fetching barcode templates: $e');
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> refresh() async {
|
||||
state = const AsyncValue.loading();
|
||||
try {
|
||||
final templates = await _fetchTemplates();
|
||||
state = AsyncValue.data(templates);
|
||||
} catch (e, stack) {
|
||||
state = AsyncValue.error(e, stack);
|
||||
}
|
||||
}
|
||||
|
||||
Future<BarcodeTemplate?> saveTemplate(BarcodeTemplate template) async {
|
||||
try {
|
||||
if (template.id != null) {
|
||||
final response = await DioClient().dio.put(
|
||||
'/barcode-templates/${template.id}',
|
||||
data: template.toJson(),
|
||||
);
|
||||
await refresh();
|
||||
if (response.data != null) {
|
||||
return BarcodeTemplate.fromJson(response.data);
|
||||
}
|
||||
} else {
|
||||
final response = await DioClient().dio.post(
|
||||
'/barcode-templates',
|
||||
data: template.toJson(),
|
||||
);
|
||||
await refresh();
|
||||
if (response.data != null) {
|
||||
return BarcodeTemplate.fromJson(response.data);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
} catch (e) {
|
||||
print('Error saving barcode template: $e');
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
Future<bool> deleteTemplate(int id) async {
|
||||
try {
|
||||
final response = await DioClient().dio.delete('/barcode-templates/$id');
|
||||
await refresh();
|
||||
return response.statusCode == 200 || response.statusCode == 204;
|
||||
} catch (e) {
|
||||
print('Error deleting barcode template: $e');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final barcodeTemplatesProvider =
|
||||
AsyncNotifierProvider<BarcodeTemplatesNotifier, List<BarcodeTemplate>>(() {
|
||||
return BarcodeTemplatesNotifier();
|
||||
});
|
||||
Reference in New Issue
Block a user