add two views
This commit is contained in:
@@ -1,17 +1,95 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
import '../helper/input_validators.dart';
|
||||
import '../models/anwendung_model.dart';
|
||||
import '../models/kauf_filament_model.dart';
|
||||
import '../services/get_storage_services.dart';
|
||||
import 'home_controller.dart';
|
||||
|
||||
class AnwendungController extends GetxController {
|
||||
final count = 0.obs;
|
||||
AnwendungController({required this.filamentId});
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
static const storageKey = 'filament_anwendungen';
|
||||
final String filamentId;
|
||||
final storage = Get.find<GetStorageService>();
|
||||
final formKey = GlobalKey<FormState>();
|
||||
final druckbettController = TextEditingController();
|
||||
final druckController = TextEditingController();
|
||||
final bauraumController = TextEditingController();
|
||||
final sonstigesController = TextEditingController();
|
||||
final bauraumGeschlossen = false.obs;
|
||||
final isSaving = false.obs;
|
||||
final message = RxnString();
|
||||
final hasError = false.obs;
|
||||
final filament = Rxn<KaufFilamentModel>();
|
||||
final anwendungen = <AnwendungModel>[].obs;
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
final filamente = storage
|
||||
.getModelList(HomeController.storageKey)
|
||||
.map(KaufFilamentModel.fromJson)
|
||||
.toList();
|
||||
filament.value = filamente.firstWhereOrNull(
|
||||
(item) => item.filamentId == filamentId,
|
||||
);
|
||||
anwendungen.assignAll(
|
||||
storage
|
||||
.getModelList(storageKey)
|
||||
.map(AnwendungModel.fromJson)
|
||||
.where((item) => item.filamentId == filamentId),
|
||||
);
|
||||
anwendungen.sort((a, b) => b.erstelltAm.compareTo(a.erstelltAm));
|
||||
}
|
||||
|
||||
Future<void> saveAnwendung() async {
|
||||
if (isSaving.value || filament.value == null) return;
|
||||
if (!(formKey.currentState?.validate() ?? false)) return;
|
||||
isSaving.value = true;
|
||||
message.value = null;
|
||||
try {
|
||||
final entry = AnwendungModel(
|
||||
anwendungId: const Uuid().v4(),
|
||||
filamentId: filamentId,
|
||||
erstelltAm: DateTime.now(),
|
||||
druckbettTemperatur: InputValidators.number(druckbettController.text)!,
|
||||
druckTemperatur: InputValidators.number(druckController.text)!,
|
||||
bauraumGeschlossen: bauraumGeschlossen.value,
|
||||
bauraumTemperatur: InputValidators.number(bauraumController.text),
|
||||
sonstiges: sonstigesController.text.trim(),
|
||||
);
|
||||
final entries = storage.getModelList(storageKey);
|
||||
await storage.saveModelList(storageKey, [...entries, entry.toJson()]);
|
||||
anwendungen.insert(0, entry);
|
||||
resetForm();
|
||||
hasError.value = false;
|
||||
message.value = 'Verarbeitungsprofil gespeichert.';
|
||||
} catch (_) {
|
||||
hasError.value = true;
|
||||
message.value = 'Speichern fehlgeschlagen. Bitte erneut versuchen.';
|
||||
} finally {
|
||||
isSaving.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void onReady() {}
|
||||
|
||||
@override
|
||||
void onClose() {}
|
||||
void resetForm() {
|
||||
formKey.currentState?.reset();
|
||||
druckbettController.clear();
|
||||
druckController.clear();
|
||||
bauraumController.clear();
|
||||
sonstigesController.clear();
|
||||
bauraumGeschlossen.value = false;
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
druckbettController.dispose();
|
||||
druckController.dispose();
|
||||
bauraumController.dispose();
|
||||
sonstigesController.dispose();
|
||||
super.onClose();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user