diff --git a/lib/screens/measurement_entries_screen.dart b/lib/screens/measurement_entries_screen.dart index 688bd868..550a3238 100644 --- a/lib/screens/measurement_entries_screen.dart +++ b/lib/screens/measurement_entries_screen.dart @@ -19,7 +19,9 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:wger/core/wide_screen_wrapper.dart'; +import 'package:wger/exceptions/no_such_entry_exception.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; +import 'package:wger/models/measurements/measurement_category.dart'; import 'package:wger/providers/measurement.dart'; import 'package:wger/screens/form_screen.dart'; import 'package:wger/widgets/measurements/entries.dart'; @@ -38,7 +40,19 @@ class MeasurementEntriesScreen extends StatelessWidget { @override Widget build(BuildContext context) { final categoryId = ModalRoute.of(context)!.settings.arguments as int; - final category = Provider.of(context).findCategoryById(categoryId); + final provider = Provider.of(context); + MeasurementCategory? category; + + try { + category = provider.findCategoryById(categoryId); + } on NoSuchEntryException { + Future.microtask(() { + if (context.mounted && Navigator.of(context).canPop()) { + Navigator.of(context).pop(); + } + }); + return const SizedBox(); // Return empty widget until pop happens + } return Scaffold( appBar: AppBar( @@ -65,7 +79,7 @@ class MeasurementEntriesScreen extends StatelessWidget { builder: (BuildContext contextDialog) { return AlertDialog( content: Text( - AppLocalizations.of(context).confirmDelete(category.name), + AppLocalizations.of(context).confirmDelete(category!.name), ), actions: [ TextButton( @@ -84,11 +98,12 @@ class MeasurementEntriesScreen extends StatelessWidget { Provider.of( context, listen: false, - ).deleteCategory(category.id!); - + ).deleteCategory(category!.id!); // Close the popup Navigator.of(contextDialog).pop(); + Navigator.of(context).pop(); // Exit detail screen + // and inform the user ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -138,7 +153,7 @@ class MeasurementEntriesScreen extends StatelessWidget { body: WidescreenWrapper( child: SingleChildScrollView( child: Consumer( - builder: (context, provider, child) => EntriesList(category), + builder: (context, provider, child) => EntriesList(category!), ), ), ),