Commit f597dee
Changed files (3)
lib
components
dialoges
model
export_import
screens
subsettings
export_import
lib/components/dialoges/add_export_column_dialoge.dart
@@ -8,7 +8,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
/// Dialoge widget for creating and editing a [UserColumn].
///
-/// For further documentation please refer to [showAddMeasurementDialoge].
+/// For further documentation please refer to [showAddExportColumnDialoge].
class AddExportColumnDialoge extends StatefulWidget {
/// Create a widget for creating and editing a [UserColumn].
const AddExportColumnDialoge({super.key, this.initialColumn});
@@ -56,8 +56,10 @@ class _AddExportColumnDialogeState extends State<AddExportColumnDialoge> {
onPressed: () {
if (formKey.currentState?.validate() ?? false) {
formKey.currentState!.save();
- final column = UserColumn(widget.initialColumn?.internalIdentifier ?? csvTitle,
- csvTitle, formatPattern);
+ final column = (widget.initialColumn != null) ?
+ UserColumn.explicit(widget.initialColumn!.internalIdentifier, csvTitle, formatPattern) :
+ UserColumn(csvTitle, csvTitle, formatPattern);
+
Navigator.pop(context, column);
}
},
@@ -159,7 +161,7 @@ class _AddExportColumnDialogeState extends State<AddExportColumnDialoge> {
/// Internal identifier and display title are generated from
/// the CSV title. There is no check whether a userColumn
/// with the generated title exists.
-Future<UserColumn?> showAddMeasurementDialoge(BuildContext context, [ExportColumn? initialColumn]) =>
+Future<UserColumn?> showAddExportColumnDialoge(BuildContext context, [ExportColumn? initialColumn]) =>
showDialog<UserColumn?>(context: context, builder: (context) => Dialog.fullscreen(
child: AddExportColumnDialoge(initialColumn: initialColumn,),
));
\ No newline at end of file
lib/model/export_import/column.dart
@@ -228,10 +228,14 @@ class UserColumn extends ExportColumn {
formatter = ScriptedFormatter(formatPattern),
internalIdentifier = 'userColumn.$internalIdentifier';
+ /// UserColumn constructor that keeps the internalIdentifier.
+ UserColumn.explicit(this.internalIdentifier, this.csvTitle, String formatPattern):
+ formatter = ScriptedFormatter(formatPattern);
+
@override
/// Unique identifier of userColumn.
///
- /// Is automatically be prefixed with `userColumn.` to avoid name collisions with build-ins.
+ /// Is automatically prefixed with `userColumn.` to avoid name collisions with build-ins.
final String internalIdentifier;
@override
lib/screens/subsettings/export_import/export_column_management_screen.dart
@@ -1,4 +1,5 @@
import 'package:blood_pressure_app/components/dialoges/add_export_column_dialoge.dart';
+import 'package:blood_pressure_app/model/export_import/column.dart';
import 'package:blood_pressure_app/model/storage/export_columns_store.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@@ -39,16 +40,24 @@ class ExportColumnsManagementScreen extends StatelessWidget {
title: Text(column.userTitle(localizations)),
subtitle: Text(column.formatPattern.toString()),
trailing: const Icon(Icons.edit),
- onTap: () {
- // TODO: implement tile editing
+ onTap: () async {
+ final editedColumn = await showAddExportColumnDialoge(context, column);
+ if (editedColumn != null) {
+ columnsManager.addOrUpdate(editedColumn);
+ } // TODO: deleting
},
),
ListTile(
leading: const Icon(Icons.add),
title: Text(localizations.addExportformat),
- onTap: () {
- Navigator.push(context, MaterialPageRoute(builder: (context) => AddExportColumnDialoge()));
- // TODO: reimplement tile adding
+ onTap: () async{
+ UserColumn? editedColumn = await showAddExportColumnDialoge(context);
+ if (editedColumn != null) {
+ while (columnsManager.userColumns.containsKey(editedColumn!.internalIdentifier)) {
+ editedColumn = UserColumn('${editedColumn.internalIdentifier}I', editedColumn.csvTitle, editedColumn.formatPattern!);
+ }
+ columnsManager.addOrUpdate(editedColumn);
+ }
},
)
],