From 6887db41592cdbb6f83fe86a45a1fd6201b4a0a2 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Sun, 31 Jan 2021 17:32:36 +0100 Subject: [PATCH] Don't load entries with a future All the data is now loaded on first login and should be always kept in sync when entries are added or edited. This makes the application more responsive. --- lib/screens/nutritional_plan_screen.dart | 19 +++---------------- lib/screens/nutritional_plans_screen.dart | 6 +++--- lib/screens/weight_screen.dart | 9 ++------- .../nutrition/nutritional_plans_list.dart | 11 ++++++----- lib/widgets/weight/entries_list.dart | 3 +-- 5 files changed, 15 insertions(+), 33 deletions(-) diff --git a/lib/screens/nutritional_plan_screen.dart b/lib/screens/nutritional_plan_screen.dart index 8041f016..84530b66 100644 --- a/lib/screens/nutritional_plan_screen.dart +++ b/lib/screens/nutritional_plan_screen.dart @@ -39,13 +39,6 @@ class NutritionalPlanScreen extends StatefulWidget { } class _NutritionalPlanScreenState extends State { - Future _loadNutritionalPlanDetail(BuildContext context, int planId) async { - var plan = Provider.of(context, listen: false).findById(planId); - await Provider.of(context, listen: false).fetchAndSetLogs(plan); - - return plan; - } - Widget getAppBar(NutritionalPlan plan) { return AppBar( title: Text(AppLocalizations.of(context).nutritionalPlan), @@ -90,16 +83,10 @@ class _NutritionalPlanScreenState extends State { final nutritionalPlan = ModalRoute.of(context).settings.arguments as NutritionalPlan; return Scaffold( - appBar: getAppBar(nutritionalPlan), + //appBar: getAppBar(nutritionalPlan), //drawer: AppDrawer(), - body: FutureBuilder( - future: _loadNutritionalPlanDetail(context, nutritionalPlan.id), - builder: (context, AsyncSnapshot snapshot) => - snapshot.connectionState == ConnectionState.waiting - ? Center(child: CircularProgressIndicator()) - : Consumer( - builder: (context, nutrition, _) => NutritionalPlanDetailWidget(snapshot.data), - ), + body: Consumer( + builder: (context, nutrition, _) => NutritionalPlanDetailWidget(nutritionalPlan), ), ); } diff --git a/lib/screens/nutritional_plans_screen.dart b/lib/screens/nutritional_plans_screen.dart index 1734d094..b386dd87 100644 --- a/lib/screens/nutritional_plans_screen.dart +++ b/lib/screens/nutritional_plans_screen.dart @@ -20,7 +20,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:wger/locale/locales.dart'; import 'package:wger/models/nutrition/nutritional_plan.dart'; -import 'package:wger/providers/workout_plans.dart'; +import 'package:wger/providers/nutrition.dart'; import 'package:wger/widgets/app_drawer.dart'; import 'package:wger/widgets/core/bottom_sheet.dart'; import 'package:wger/widgets/nutrition/forms.dart'; @@ -56,8 +56,8 @@ class _NutritionScreenState extends State { //await showNutritionalPlanSheet(context, nutritionalPlan); }, ), - body: Consumer( - builder: (context, productsData, child) => NutritionalPlansList(), + body: Consumer( + builder: (context, nutritionProvider, child) => NutritionalPlansList(nutritionProvider), ), ); } diff --git a/lib/screens/weight_screen.dart b/lib/screens/weight_screen.dart index c6ebacc9..c40c5501 100644 --- a/lib/screens/weight_screen.dart +++ b/lib/screens/weight_screen.dart @@ -57,13 +57,8 @@ class _WeightScreenState extends State { ); }, ), - body: FutureBuilder( - future: Provider.of(context, listen: false).fetchAndSetEntries(), - builder: (context, snapshot) => snapshot.connectionState == ConnectionState.waiting - ? Center(child: CircularProgressIndicator()) - : Consumer( - builder: (context, weightProvider, child) => WeightEntriesList(weightProvider), - ), + body: Consumer( + builder: (context, weightProvider, child) => WeightEntriesList(weightProvider), ), ); } diff --git a/lib/widgets/nutrition/nutritional_plans_list.dart b/lib/widgets/nutrition/nutritional_plans_list.dart index 4044a8bd..a23bd5fc 100644 --- a/lib/widgets/nutrition/nutritional_plans_list.dart +++ b/lib/widgets/nutrition/nutritional_plans_list.dart @@ -18,24 +18,25 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; -import 'package:provider/provider.dart'; import 'package:wger/providers/nutrition.dart'; import 'package:wger/screens/nutritional_plan_screen.dart'; class NutritionalPlansList extends StatelessWidget { + Nutrition _nutritrionProvider; + NutritionalPlansList(this._nutritrionProvider); + @override Widget build(BuildContext context) { - final nutritrionalPlansData = Provider.of(context); return ListView.builder( padding: const EdgeInsets.all(10.0), - itemCount: nutritrionalPlansData.items.length, + itemCount: _nutritrionProvider.items.length, itemBuilder: (context, index) { - final currentPlan = nutritrionalPlansData.items[index]; + final currentPlan = _nutritrionProvider.items[index]; return Dismissible( key: Key(currentPlan.id.toString()), onDismissed: (direction) { // Delete workout from DB - Provider.of(context, listen: false).deletePlan(currentPlan.id); + _nutritrionProvider.deletePlan(currentPlan.id); // and inform the user Scaffold.of(context).showSnackBar( diff --git a/lib/widgets/weight/entries_list.dart b/lib/widgets/weight/entries_list.dart index f4abef9a..c726591c 100644 --- a/lib/widgets/weight/entries_list.dart +++ b/lib/widgets/weight/entries_list.dart @@ -18,7 +18,6 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; -import 'package:provider/provider.dart'; import 'package:wger/locale/locales.dart'; import 'package:wger/providers/body_weight.dart'; import 'package:wger/widgets/core/bottom_sheet.dart'; @@ -51,7 +50,7 @@ class WeightEntriesList extends StatelessWidget { onDismissed: (direction) { if (direction == DismissDirection.endToStart) { // Delete entry from DB - Provider.of(context, listen: false).deleteEntry(currentEntry.id); + _weightProvider.deleteEntry(currentEntry.id); // and inform the user Scaffold.of(context).showSnackBar(