diff --git a/lib/model/cabin_manager.dart b/lib/model/cabin_manager.dart index 239acd21..b5d1b56a 100644 --- a/lib/model/cabin_manager.dart +++ b/lib/model/cabin_manager.dart @@ -89,9 +89,11 @@ class CabinManager with ChangeNotifier, FileManager { } } - void loadCabinsFromFile() async { + Future loadCabinsFromFile() async { cabins = await readCabinsFromFile(); notifyListeners(); + + return true; } } diff --git a/lib/widgets/layout/time_table.dart b/lib/widgets/layout/time_table.dart index b48fd63b..53ad7a1a 100644 --- a/lib/widgets/layout/time_table.dart +++ b/lib/widgets/layout/time_table.dart @@ -1,3 +1,4 @@ +import 'package:cabin_booking/l10n/app_localizations.dart'; import 'package:cabin_booking/model/cabin_manager.dart'; import 'package:cabin_booking/widgets/booking/bookings_table.dart'; import 'package:cabin_booking/widgets/cabin/cabins_row.dart'; @@ -10,20 +11,33 @@ class TimeTable extends StatelessWidget { Widget build(BuildContext context) { final cabinManager = Provider.of(context, listen: false); - cabinManager - ..loadCabinsFromFile() - ..addListener(() { - cabinManager.writeCabinsToFile(); - }); + cabinManager.addListener(() { + cabinManager.writeCabinsToFile(); + }); - return SingleChildScrollView( - child: Column( - children: [ - DayNavigation(), - CabinsRow(), - BookingsTable(), - ], - ), + return FutureBuilder( + future: cabinManager.loadCabinsFromFile(), + builder: (context, snapshot) { + if (snapshot.hasError) + return Center( + child: Text( + AppLocalizations.of(context).dataCouldNotBeLoaded, + style: Theme.of(context).textTheme.headline4, + ), + ); + else if (snapshot.hasData) + return SingleChildScrollView( + child: Column( + children: [ + DayNavigation(), + CabinsRow(), + BookingsTable(), + ], + ), + ); + else + return Center(child: CircularProgressIndicator()); + }, ); } }