add two views

This commit is contained in:
atseirjo
2026-10-27 15:00:16 +01:00
parent 864da57537
commit 07a1bb02fd
42 changed files with 3582 additions and 346 deletions
+86 -8
View File
@@ -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();
}
}