From fb8083912fa66cbf17b329fbadbe3a240857d024 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Tue, 26 Jan 2021 20:23:48 +0100 Subject: [PATCH] Remove RefreshIndicator and some work on providers (still not the optimal solution) --- lib/locale/locales.dart | 8 ++++++++ lib/screens/dashboard.dart | 2 +- lib/screens/nutritional_plan_screen.dart | 9 +++------ lib/screens/nutritional_plans_screen.dart | 12 ++---------- lib/screens/weight_screen.dart | 15 ++++----------- lib/screens/workout_plan_screen.dart | 17 ++++++++--------- lib/screens/workout_plans_screen.dart | 11 ++--------- lib/widgets/weight/entries_list.dart | 11 +++++++---- lib/widgets/workouts/workout_plans_list.dart | 12 +++++++----- 9 files changed, 42 insertions(+), 55 deletions(-) diff --git a/lib/locale/locales.dart b/lib/locale/locales.dart index aa1dce96..3ee5551d 100644 --- a/lib/locale/locales.dart +++ b/lib/locale/locales.dart @@ -323,6 +323,14 @@ class AppLocalizations { ); } + String get loadingText { + return Intl.message( + 'Loading...', + name: 'loadingText', + desc: 'Text to show when entries are being loaded in the background', + ); + } + String get delete { return Intl.message( 'Delete', diff --git a/lib/screens/dashboard.dart b/lib/screens/dashboard.dart index 366dd086..57b0d5e6 100644 --- a/lib/screens/dashboard.dart +++ b/lib/screens/dashboard.dart @@ -65,7 +65,7 @@ class _DashboardScreenState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Text( - 'Loading...', + AppLocalizations.of(context).loadingText, style: Theme.of(context).textTheme.headline5, ), Padding(padding: EdgeInsets.symmetric(vertical: 8)), diff --git a/lib/screens/nutritional_plan_screen.dart b/lib/screens/nutritional_plan_screen.dart index 36fa53c9..8041f016 100644 --- a/lib/screens/nutritional_plan_screen.dart +++ b/lib/screens/nutritional_plan_screen.dart @@ -48,7 +48,7 @@ class _NutritionalPlanScreenState extends State { Widget getAppBar(NutritionalPlan plan) { return AppBar( - title: Text(plan.description), + title: Text(AppLocalizations.of(context).nutritionalPlan), actions: [ PopupMenuButton( icon: Icon(Icons.more_vert), @@ -97,11 +97,8 @@ class _NutritionalPlanScreenState extends State { builder: (context, AsyncSnapshot snapshot) => snapshot.connectionState == ConnectionState.waiting ? Center(child: CircularProgressIndicator()) - : RefreshIndicator( - onRefresh: () => _loadNutritionalPlanDetail(context, nutritionalPlan.id), - child: Consumer( - builder: (context, workout, _) => NutritionalPlanDetailWidget(snapshot.data), - ), + : Consumer( + builder: (context, nutrition, _) => NutritionalPlanDetailWidget(snapshot.data), ), ), ); diff --git a/lib/screens/nutritional_plans_screen.dart b/lib/screens/nutritional_plans_screen.dart index 1375ac96..1734d094 100644 --- a/lib/screens/nutritional_plans_screen.dart +++ b/lib/screens/nutritional_plans_screen.dart @@ -20,7 +20,6 @@ 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/nutrition.dart'; import 'package:wger/providers/workout_plans.dart'; import 'package:wger/widgets/app_drawer.dart'; import 'package:wger/widgets/core/bottom_sheet.dart'; @@ -35,10 +34,6 @@ class NutritionScreen extends StatefulWidget { } class _NutritionScreenState extends State { - Future _refreshPlans(BuildContext context) async { - await Provider.of(context, listen: false).fetchAndSetPlans(); - } - Widget getAppBar() { return AppBar( title: Text(AppLocalizations.of(context).nutritionalPlans), @@ -61,11 +56,8 @@ class _NutritionScreenState extends State { //await showNutritionalPlanSheet(context, nutritionalPlan); }, ), - body: RefreshIndicator( - onRefresh: () => _refreshPlans(context), - child: Consumer( - builder: (context, productsData, child) => NutritionalPlansList(), - ), + body: Consumer( + builder: (context, productsData, child) => NutritionalPlansList(), ), ); } diff --git a/lib/screens/weight_screen.dart b/lib/screens/weight_screen.dart index f1da0e2c..c6ebacc9 100644 --- a/lib/screens/weight_screen.dart +++ b/lib/screens/weight_screen.dart @@ -34,15 +34,11 @@ class WeightScreen extends StatefulWidget { } class _WeightScreenState extends State { - Future _refreshWeightEntries(BuildContext context) async { - await Provider.of(context, listen: false).fetchAndSetEntries(); - } - WeightEntry weightEntry = WeightEntry(); Widget getAppBar() { return AppBar( - title: Text('Weight'), + title: Text(AppLocalizations.of(context).weight), ); } @@ -62,14 +58,11 @@ class _WeightScreenState extends State { }, ), body: FutureBuilder( - future: _refreshWeightEntries(context), + future: Provider.of(context, listen: false).fetchAndSetEntries(), builder: (context, snapshot) => snapshot.connectionState == ConnectionState.waiting ? Center(child: CircularProgressIndicator()) - : RefreshIndicator( - onRefresh: () => _refreshWeightEntries(context), - child: Consumer( - builder: (context, productsData, child) => WeightEntriesList(), - ), + : Consumer( + builder: (context, weightProvider, child) => WeightEntriesList(weightProvider), ), ), ); diff --git a/lib/screens/workout_plan_screen.dart b/lib/screens/workout_plan_screen.dart index b0b6c218..219ee29a 100644 --- a/lib/screens/workout_plan_screen.dart +++ b/lib/screens/workout_plan_screen.dart @@ -55,12 +55,6 @@ class _WorkoutPlanScreenState extends State { }); } - Future _loadWorkoutPlanDetail(BuildContext context, int workoutId) async { - var workout = - await Provider.of(context, listen: false).fetchAndSetFullWorkout(workoutId); - return workout; - } - Widget getAppBar(WorkoutPlan plan) { return AppBar( title: Text(plan.description), @@ -115,10 +109,14 @@ class _WorkoutPlanScreenState extends State { Widget getBody(WorkoutPlan plan) { switch (_mode) { case WorkoutScreenMode.workout: - return WorkoutPlanDetail(plan, _changeMode); + return Consumer( + builder: (context, value, child) => WorkoutPlanDetail(plan, _changeMode), + ); break; case WorkoutScreenMode.log: - return WorkoutLogs(plan, _changeMode); + return Consumer( + builder: (context, value, child) => WorkoutLogs(plan, _changeMode), + ); break; case WorkoutScreenMode.gym: return Text('Gym Mode'); @@ -133,7 +131,8 @@ class _WorkoutPlanScreenState extends State { return Scaffold( appBar: getAppBar(workoutPlan), body: FutureBuilder( - future: _loadWorkoutPlanDetail(context, workoutPlan.id), + future: Provider.of(context, listen: false) + .fetchAndSetFullWorkout(workoutPlan.id), builder: (context, AsyncSnapshot snapshot) => snapshot.connectionState == ConnectionState.waiting ? Center(child: CircularProgressIndicator()) diff --git a/lib/screens/workout_plans_screen.dart b/lib/screens/workout_plans_screen.dart index edd23db7..5bf91ee7 100644 --- a/lib/screens/workout_plans_screen.dart +++ b/lib/screens/workout_plans_screen.dart @@ -35,10 +35,6 @@ class WorkoutPlansScreen extends StatefulWidget { } class _WorkoutPlansScreenState extends State { - Future _refreshWorkoutPlans(BuildContext context) async { - await Provider.of(context, listen: false).fetchAndSetWorkouts(); - } - Widget getAppBar() { return AppBar( title: Text(AppLocalizations.of(context).labelWorkoutPlans), @@ -60,11 +56,8 @@ class _WorkoutPlansScreenState extends State { ); }, ), - body: RefreshIndicator( - onRefresh: () => _refreshWorkoutPlans(context), - child: Consumer( - builder: (context, productsData, child) => WorkoutPlansList(), - ), + body: Consumer( + builder: (context, workoutProvider, child) => WorkoutPlansList(workoutProvider), ), ); } diff --git a/lib/widgets/weight/entries_list.dart b/lib/widgets/weight/entries_list.dart index b7e80614..3cca74c3 100644 --- a/lib/widgets/weight/entries_list.dart +++ b/lib/widgets/weight/entries_list.dart @@ -26,23 +26,26 @@ import 'package:wger/widgets/weight/charts.dart'; import 'package:wger/widgets/weight/forms.dart'; class WeightEntriesList extends StatelessWidget { + final BodyWeight _weightProvider; + + WeightEntriesList(this._weightProvider); + @override Widget build(BuildContext context) { - final weightEntriesData = Provider.of(context); return Column( children: [ Container( padding: EdgeInsets.all(15), height: 220, - child: WeightChartWidget(weightEntriesData.items), + child: WeightChartWidget(_weightProvider.items), ), Divider(), Expanded( child: ListView.builder( padding: const EdgeInsets.all(10.0), - itemCount: weightEntriesData.items.length, + itemCount: _weightProvider.items.length, itemBuilder: (context, index) { - final currentEntry = weightEntriesData.items[index]; + final currentEntry = _weightProvider.items[index]; return Dismissible( key: Key(currentEntry.id.toString()), onDismissed: (direction) { diff --git a/lib/widgets/workouts/workout_plans_list.dart b/lib/widgets/workouts/workout_plans_list.dart index 4b556219..b2cf0c8f 100644 --- a/lib/widgets/workouts/workout_plans_list.dart +++ b/lib/widgets/workouts/workout_plans_list.dart @@ -23,15 +23,17 @@ import 'package:wger/providers/workout_plans.dart'; import 'package:wger/screens/workout_plan_screen.dart'; class WorkoutPlansList extends StatelessWidget { + final WorkoutPlans _workoutProvider; + + WorkoutPlansList(this._workoutProvider); + @override Widget build(BuildContext context) { - final workoutPlansData = Provider.of(context); - return ListView.builder( padding: const EdgeInsets.all(10.0), - itemCount: workoutPlansData.items.length, + itemCount: _workoutProvider.items.length, itemBuilder: (context, index) { - final currentWorkout = workoutPlansData.items[index]; + final currentWorkout = _workoutProvider.items[index]; return Dismissible( key: Key(currentWorkout.id.toString()), confirmDismiss: (direction) async { @@ -94,7 +96,7 @@ class WorkoutPlansList extends StatelessWidget { child: Card( child: ListTile( onTap: () { - workoutPlansData.setCurrentPlan(currentWorkout.id); + _workoutProvider.setCurrentPlan(currentWorkout.id); return Navigator.of(context) .pushNamed(WorkoutPlanScreen.routeName, arguments: currentWorkout);