update edit and list and detail view

This commit is contained in:
2026-01-16 14:57:14 +01:00
parent 6df0da2776
commit 3a2dcfd7fc
7 changed files with 136 additions and 85 deletions

View File

@@ -5,13 +5,13 @@ import '../helpers/filament_repository.dart';
class EditController extends GetxController {
Rx<FilamentModel?> originalFilament = Rx<FilamentModel?>(null);
// Form Controllers
final nameController = TextEditingController();
final typeController = TextEditingController();
final colorController = TextEditingController();
final weightController = TextEditingController();
final weightUsedController = TextEditingController();
final currentUsageController = TextEditingController();
final priceController = TextEditingController();
final manufacturerController = TextEditingController();
final purchaseDateController = TextEditingController();
@@ -20,6 +20,9 @@ class EditController extends GetxController {
final printingTempController = TextEditingController();
final bedTempController = TextEditingController();
// Reactive color for UI updates
final selectedColor = 'White'.obs;
// Validation
final formKey = GlobalKey<FormState>();
final isSaving = false.obs;
@@ -27,6 +30,7 @@ class EditController extends GetxController {
// Available options
final List<String> filamentTypes = [
'PLA',
'PLA+',
'ABS',
'PETG',
'TPU',
@@ -64,7 +68,8 @@ class EditController extends GetxController {
if (filament != null) {
nameController.text = filament.name;
typeController.text = filament.type;
colorController.text = filament.color;
selectedColor.value = filament.color;
selectedColor.value = filament.color;
weightController.text = filament.weight.toString();
weightUsedController.text = filament.weightUsed.toString();
priceController.text = filament.price.toString();
@@ -83,26 +88,33 @@ class EditController extends GetxController {
isSaving.value = true;
try {
// Berechne den neuen Gesamtverbrauch
final currentWeightUsed = double.tryParse(weightUsedController.text) ?? 0;
final additionalUsage = double.tryParse(currentUsageController.text) ?? 0;
final totalWeightUsed = currentWeightUsed + additionalUsage;
final updatedFilament = FilamentModel(
id: originalFilament.value?.id ?? DateTime.now().millisecondsSinceEpoch.toString(),
id:
originalFilament.value?.id ??
DateTime.now().millisecondsSinceEpoch.toString(),
name: nameController.text.trim(),
type: typeController.text.trim(),
color: colorController.text.trim(),
color: selectedColor.value.trim(),
weight: double.tryParse(weightController.text) ?? 0,
weightUsed: double.tryParse(weightUsedController.text) ?? 0,
weightUsed: totalWeightUsed,
price: double.tryParse(priceController.text) ?? 0,
manufacturer: manufacturerController.text.trim().isEmpty
? null
manufacturer: manufacturerController.text.trim().isEmpty
? null
: manufacturerController.text.trim(),
purchaseDate: purchaseDateController.text.trim().isEmpty
? null
purchaseDate: purchaseDateController.text.trim().isEmpty
? null
: purchaseDateController.text.trim(),
notes: notesController.text.trim().isEmpty
? null
notes: notesController.text.trim().isEmpty
? null
: notesController.text.trim(),
pices: int.tryParse(piecesController.text),
printingTemp: int.tryParse(printingTempController.text),
bedTemp: int.tryParse(bedTempController.text),
pices: int.tryParse(piecesController.text) ?? 0,
printingTemp: int.tryParse(printingTempController.text) ?? 0,
bedTemp: int.tryParse(bedTempController.text) ?? 0,
);
bool success;
@@ -116,7 +128,7 @@ class EditController extends GetxController {
Get.back(result: updatedFilament);
Get.snackbar(
'Erfolg',
originalFilament.value != null
originalFilament.value != null
? 'Filament wurde aktualisiert'
: 'Filament wurde erstellt',
snackPosition: SnackPosition.BOTTOM,
@@ -149,9 +161,9 @@ class EditController extends GetxController {
void onClose() {
nameController.dispose();
typeController.dispose();
colorController.dispose();
weightController.dispose();
weightUsedController.dispose();
currentUsageController.dispose();
priceController.dispose();
manufacturerController.dispose();
purchaseDateController.dispose();