From b31a480b453ccba6dc62c0d04fa4de18014fab35 Mon Sep 17 00:00:00 2001 From: Marko Milosevic Date: Sun, 10 Oct 2021 16:26:51 +0200 Subject: [PATCH] Added helper for delete dilaog (currently only for log delete) --- lib/helpers/ui.dart | 47 +++++++++++++++++++++++++++++++++ lib/widgets/workouts/log.dart | 49 +++-------------------------------- 2 files changed, 50 insertions(+), 46 deletions(-) diff --git a/lib/helpers/ui.dart b/lib/helpers/ui.dart index cf305dd3..bfd3494a 100644 --- a/lib/helpers/ui.dart +++ b/lib/helpers/ui.dart @@ -20,7 +20,11 @@ import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:provider/provider.dart'; import 'package:wger/exceptions/http_exception.dart'; +import 'package:wger/models/exercises/exercise.dart'; +import 'package:wger/models/workouts/log.dart'; +import 'package:wger/providers/workout_plans.dart'; void showErrorDialog(dynamic exception, BuildContext context) { log('showErrorDialog: '); @@ -88,3 +92,46 @@ void showHttpExceptionErrorDialog(WgerHttpException exception, BuildContext cont // unless this dummy call is present showDialog(context: context, builder: (context) => Container()); } + +dynamic showDeleteDialog(BuildContext context, String confirmDeleteName, Log log, Exercise exercise, + Map> _exerciseData) async { + final res = await showDialog( + context: context, + builder: (BuildContext contextDialog) { + return AlertDialog( + content: Text( + AppLocalizations.of(context).confirmDelete(confirmDeleteName), + ), + actions: [ + TextButton( + child: Text(MaterialLocalizations.of(context).cancelButtonLabel), + onPressed: () => Navigator.of(contextDialog).pop(), + ), + TextButton( + child: Text( + AppLocalizations.of(context).delete, + style: TextStyle(color: Theme.of(context).errorColor), + ), + onPressed: () { + _exerciseData[exercise]!.removeWhere((el) => el.id == log.id); + Provider.of(context, listen: false).deleteLog( + log, + ); + + Navigator.of(contextDialog).pop(); + + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + AppLocalizations.of(context).successfullyDeleted, + textAlign: TextAlign.center, + ), + ), + ); + }, + ), + ], + ); + }); + return res; +} diff --git a/lib/widgets/workouts/log.dart b/lib/widgets/workouts/log.dart index a65c283e..f491e620 100644 --- a/lib/widgets/workouts/log.dart +++ b/lib/widgets/workouts/log.dart @@ -18,9 +18,9 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; +import 'package:wger/helpers/ui.dart'; import 'package:wger/models/exercises/exercise.dart'; import 'package:wger/models/workouts/log.dart'; import 'package:wger/models/workouts/session.dart'; @@ -100,51 +100,8 @@ class _DayLogWidgetState extends State { IconButton( icon: Icon(Icons.delete), onPressed: () async { - final res = await showDialog( - context: context, - builder: (BuildContext contextDialog) { - return AlertDialog( - content: Text( - AppLocalizations.of(context).confirmDelete(exercise.name), - ), - actions: [ - TextButton( - child: Text( - MaterialLocalizations.of(context).cancelButtonLabel), - onPressed: () => Navigator.of(contextDialog).pop(), - ), - TextButton( - child: Text( - AppLocalizations.of(context).delete, - style: TextStyle(color: Theme.of(context).errorColor), - ), - onPressed: () { - setState(() { - widget._exerciseData[exercise]! - .removeWhere((el) => el.id == log.id); - }); - Provider.of(context, - listen: false) - .deleteLog( - log, - ); - - Navigator.of(contextDialog).pop(); - - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text( - AppLocalizations.of(context).successfullyDeleted, - textAlign: TextAlign.center, - ), - ), - ); - }, - ), - ], - ); - }); - return res; + showDeleteDialog( + context, exercise.name, log, exercise, widget._exerciseData); }, ), ],