Added helper for delete dilaog (currently only for log delete)

This commit is contained in:
Marko Milosevic
2021-10-10 16:26:51 +02:00
parent 48063634cc
commit b31a480b45
2 changed files with 50 additions and 46 deletions

View File

@@ -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<Exercise, List<Log>> _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<WorkoutPlansProvider>(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;
}

View File

@@ -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<DayLogWidget> {
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<WorkoutPlansProvider>(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);
},
),
],