Skip to content

Commit

Permalink
feat(time_table): implement data loading state
Browse files Browse the repository at this point in the history
  • Loading branch information
albertms10 committed Nov 16, 2020
1 parent 60ca296 commit 99838f1
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 14 deletions.
4 changes: 3 additions & 1 deletion lib/model/cabin_manager.dart
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,11 @@ class CabinManager with ChangeNotifier, FileManager {
}
}

void loadCabinsFromFile() async {
Future<bool> loadCabinsFromFile() async {
cabins = await readCabinsFromFile();

notifyListeners();

return true;
}
}
40 changes: 27 additions & 13 deletions lib/widgets/layout/time_table.dart
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -10,20 +11,33 @@ class TimeTable extends StatelessWidget {
Widget build(BuildContext context) {
final cabinManager = Provider.of<CabinManager>(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());
},
);
}
}

0 comments on commit 99838f1

Please sign in to comment.