small bugfi

This commit is contained in:
Nico
2025-05-14 22:26:52 +02:00
parent 3084540b6d
commit 167eea363f
2 changed files with 231 additions and 170 deletions

4
devtools_options.yaml Normal file
View File

@@ -0,0 +1,4 @@
description: This file stores settings for Dart & Flutter DevTools.
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
extensions:
- shared_preferences: true

View File

@@ -9,196 +9,253 @@ import 'package:fforte/l10n/app_localizations.dart';
class AddEntriesDialogHelper { class AddEntriesDialogHelper {
// Function to show the dialog where the user has to choose if he want to safe his values as a template // Function to show the dialog where the user has to choose if he want to safe his values as a template
static Future<void> showTemplateDialog(BuildContext context, static Future<void> showTemplateDialog(
Map<String, String> saveData) async { BuildContext context,
Map<String, String> saveData,
) async {
return showDialog( return showDialog(
context: context, context: context,
barrierDismissible: false, barrierDismissible: false,
builder: (BuildContext context) { builder: (BuildContext context) {
return AlertDialog( return AlertDialog(
title: Text(AppLocalizations.of(context)!.fieldEmpty), title: Text(AppLocalizations.of(context)!.fieldEmpty),
actions: <Widget>[ actions: <Widget>[
TextButton( TextButton(
onPressed: () { onPressed: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
child: Text(AppLocalizations.of(context)!.cancel)), child: Text(AppLocalizations.of(context)!.cancel),
TextButton( ),
onPressed: () { TextButton(
saveTemplate(saveData, DatabasesEnum.place); onPressed: () {
Navigator.pushNamedAndRemoveUntil( saveTemplate(saveData, DatabasesEnum.place);
context, '/home', (route) => false); Navigator.pushNamedAndRemoveUntil(
}, context,
child: Text(AppLocalizations.of(context)!.template)) '/home',
], (route) => false,
); );
}); },
child: Text(AppLocalizations.of(context)!.template),
),
],
);
},
);
} }
static Future<dynamic> showServerErrorDialog( static Future<dynamic> showServerErrorDialog(
BuildContext context, Map<String, String> saveData, bool isTemplate, DatabasesEnum dbType) { BuildContext context,
Map<String, String> saveData,
bool isTemplate,
DatabasesEnum dbType,
) {
bool isLoading = false; bool isLoading = false;
return showDialog( return showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
return StatefulBuilder( return StatefulBuilder(
builder: (BuildContext context, StateSetter setState) { builder: (BuildContext context, StateSetter setState) {
return AlertDialog( return AlertDialog(
title: Text(AppLocalizations.of(context)!.servererrortitle), title: Text(AppLocalizations.of(context)!.servererrortitle),
content: isLoading content:
? const SizedBox( isLoading
? const SizedBox(
height: 100, height: 100,
child: Center(child: CircularProgressIndicator())) child: Center(child: CircularProgressIndicator()),
: null, )
actions: [ : null,
if (!isLoading) actions: [
TextButton( if (!isLoading)
onPressed: () async { TextButton(
setState(() => isLoading = true); onPressed: () async {
int errorCode = await HttpRequest.httpRequest( setState(() => isLoading = true);
saveDataMap: saveData); int errorCode = await HttpRequest.httpRequest(
setState(() => isLoading = false); saveDataMap: saveData,
);
setState(() => isLoading = false);
if (errorCode != 201 && context.mounted) { if (errorCode == 201 && context.mounted) {
showServerErrorDialog( Navigator.pop(context);
context, saveData, isTemplate, dbType); // saveData(true);
} else { SaveMainEntryMethod.saveEntry(
if (context.mounted) Navigator.pop(context); entryData: saveData,
// saveData(true); isTemplate: isTemplate,
SaveMainEntryMethod.saveEntry( dbType: dbType,
entryData: saveData, isTemplate: isTemplate, dbType: dbType); );
if (context.mounted) showSuccessDialog(context); showSuccessDialog(context);
} }
}, },
child: Text(AppLocalizations.of(context)!.sendagain)), child: Text(AppLocalizations.of(context)!.sendagain),
if (!isLoading) ),
TextButton( if (!isLoading)
onPressed: () { TextButton(
Navigator.pop(context); onPressed: () {
}, Navigator.pop(context);
child: Text(AppLocalizations.of(context)!.cancel)) },
], child: Text(AppLocalizations.of(context)!.cancel),
); ),
}, ],
); );
}); },
);
},
);
} }
static Future<void> showSaveOptionsDialog(BuildContext context, static Future<void> showSaveOptionsDialog(
Map<String, String> saveData, bool isTemplate, DatabasesEnum dbType) async { BuildContext context,
Map<String, String> saveData,
bool isTemplate,
DatabasesEnum dbType,
) async {
bool isLoading = false; bool isLoading = false;
return showDialog( return showDialog(
context: context, context: context,
barrierDismissible: barrierDismissible:
false, // Verhindert das Schließen des Dialogs durch den Benutzer false, // Verhindert das Schließen des Dialogs durch den Benutzer
builder: (BuildContext context) { builder: (BuildContext context) {
return StatefulBuilder( return StatefulBuilder(
builder: (context, setState) { builder: (context, setState) {
return AlertDialog( return AlertDialog(
title: isLoading title:
? Text(AppLocalizations.of(context)!.loading) isLoading
: Text(AppLocalizations.of(context)!.savemethod), ? Text(AppLocalizations.of(context)!.loading)
content: isLoading : Text(AppLocalizations.of(context)!.savemethod),
? const SizedBox( content:
isLoading
? const SizedBox(
height: 100, height: 100,
child: Center(child: CircularProgressIndicator())) child: Center(child: CircularProgressIndicator()),
: null, )
actions: [ : null,
if (!isLoading) actions: [
TextButton( if (!isLoading)
onPressed: () async { TextButton(
setState(() => isLoading = true); onPressed: () async {
saveTemplate( setState(() => isLoading = true);
saveData, DatabasesEnum.place); saveTemplate(saveData, DatabasesEnum.place);
Navigator.pushNamedAndRemoveUntil( Navigator.pushNamedAndRemoveUntil(
context, '/home', (route) => false); context,
}, '/home',
child: Text(AppLocalizations.of(context)!.template)), (route) => false,
if (!isLoading) );
TextButton( },
onPressed: () async { child: Text(AppLocalizations.of(context)!.template),
setState(() => isLoading = true); ),
int errorCode = await HttpRequest.httpRequest( if (!isLoading)
saveDataMap: saveData); TextButton(
setState(() => isLoading = false); onPressed: () async {
setState(() => isLoading = true);
int errorCode = await HttpRequest.httpRequest(
saveDataMap: saveData,
);
setState(() => isLoading = false);
if (errorCode != 201 || !context.mounted) { if (errorCode != 201 || !context.mounted) {
SaveMainEntryMethod.saveEntry( SaveMainEntryMethod.saveEntry(
entryData: saveData, isTemplate: isTemplate, dbType: dbType); entryData: saveData,
if (context.mounted) { isTemplate: isTemplate,
AddEntriesDialogHelper.showServerErrorDialog( dbType: dbType,
context, saveData, isTemplate, dbType); );
} if (context.mounted) {
} else { AddEntriesDialogHelper.showServerErrorDialog(
SaveMainEntryMethod.saveEntry( context,
entryData: saveData, saveData,
isTemplate: isTemplate, isTemplate,
dbType: dbType, dbType,
sent: true); );
showSuccessDialog(context); }
} } else {
}, SaveMainEntryMethod.saveEntry(
child: entryData: saveData,
Text(AppLocalizations.of(context)!.sendtoserver)), isTemplate: isTemplate,
if (!isLoading) dbType: dbType,
TextButton( sent: true,
onPressed: () async { );
setState(() => isLoading = true); showSuccessDialog(context);
}
},
child: Text(AppLocalizations.of(context)!.sendtoserver),
),
if (!isLoading)
TextButton(
onPressed: () async {
setState(() => isLoading = true);
try { try {
SaveMainEntryMethod.saveEntry( SaveMainEntryMethod.saveEntry(
entryData: saveData, isTemplate: isTemplate, dbType: dbType); entryData: saveData,
SaveFileMethod.saveFile( isTemplate: isTemplate,
saveData, dbType: dbType,
AppLocalizations.of(context)!.savefilefailed, );
saveData["CID"]!); SaveFileMethod.saveFile(
setState(() => isLoading = false); saveData,
AppLocalizations.of(context)!.savefilefailed,
} catch (e) { saveData["CID"]!,
SnackBarHelper.showSnackBarMessage(context, AppLocalizations.of(context)!.savefilefailed); );
} setState(() => isLoading = false);
} catch (e) {
}, SnackBarHelper.showSnackBarMessage(
child: Text(AppLocalizations.of(context)!.saveasfile)), context,
if (!isLoading) AppLocalizations.of(context)!.savefilefailed,
TextButton( );
onPressed: () { }
SaveMainEntryMethod.saveEntry( },
entryData: saveData, isTemplate: isTemplate, dbType: dbType); child: Text(AppLocalizations.of(context)!.saveasfile),
Navigator.pushNamedAndRemoveUntil( ),
context, '/home', (route) => false); if (!isLoading)
}, TextButton(
child: Text(AppLocalizations.of(context)!.justsave)), onPressed: () {
if (!isLoading) SaveMainEntryMethod.saveEntry(
TextButton( entryData: saveData,
onPressed: () { isTemplate: isTemplate,
Navigator.pop(context); dbType: dbType,
}, );
child: Text(AppLocalizations.of(context)!.cancel)), Navigator.pushNamedAndRemoveUntil(
], context,
); '/home',
}, (route) => false,
); );
}); },
child: Text(AppLocalizations.of(context)!.justsave),
),
if (!isLoading)
TextButton(
onPressed: () {
Navigator.pop(context);
},
child: Text(AppLocalizations.of(context)!.cancel),
),
],
);
},
);
},
);
} }
static Future<void> showSuccessDialog(BuildContext context) async { static Future<void> showSuccessDialog(BuildContext context) async {
return showDialog( return showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
return AlertDialog( return AlertDialog(
title: Text(AppLocalizations.of(context)!.successful), title: Text(AppLocalizations.of(context)!.successful),
actions: [ actions: [
TextButton( TextButton(
onPressed: () { onPressed: () {
Navigator.pushNamedAndRemoveUntil( Navigator.pushNamedAndRemoveUntil(
context, '/home', (route) => false); context,
}, '/home',
child: Text(AppLocalizations.of(context)!.continueB)) (route) => false,
], );
); },
}); child: Text(AppLocalizations.of(context)!.continueB),
),
],
);
},
);
} }
} }