mirror of
https://github.com/wger-project/flutter.git
synced 2026-02-18 23:42:00 +01:00
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.
This commit is contained in:
@@ -39,13 +39,6 @@ class NutritionalPlanScreen extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _NutritionalPlanScreenState extends State<NutritionalPlanScreen> {
|
||||
Future<NutritionalPlan> _loadNutritionalPlanDetail(BuildContext context, int planId) async {
|
||||
var plan = Provider.of<Nutrition>(context, listen: false).findById(planId);
|
||||
await Provider.of<Nutrition>(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<NutritionalPlanScreen> {
|
||||
final nutritionalPlan = ModalRoute.of(context).settings.arguments as NutritionalPlan;
|
||||
|
||||
return Scaffold(
|
||||
appBar: getAppBar(nutritionalPlan),
|
||||
//appBar: getAppBar(nutritionalPlan),
|
||||
//drawer: AppDrawer(),
|
||||
body: FutureBuilder<NutritionalPlan>(
|
||||
future: _loadNutritionalPlanDetail(context, nutritionalPlan.id),
|
||||
builder: (context, AsyncSnapshot<NutritionalPlan> snapshot) =>
|
||||
snapshot.connectionState == ConnectionState.waiting
|
||||
? Center(child: CircularProgressIndicator())
|
||||
: Consumer<Nutrition>(
|
||||
builder: (context, nutrition, _) => NutritionalPlanDetailWidget(snapshot.data),
|
||||
),
|
||||
body: Consumer<Nutrition>(
|
||||
builder: (context, nutrition, _) => NutritionalPlanDetailWidget(nutritionalPlan),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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<NutritionScreen> {
|
||||
//await showNutritionalPlanSheet(context, nutritionalPlan);
|
||||
},
|
||||
),
|
||||
body: Consumer<WorkoutPlans>(
|
||||
builder: (context, productsData, child) => NutritionalPlansList(),
|
||||
body: Consumer<Nutrition>(
|
||||
builder: (context, nutritionProvider, child) => NutritionalPlansList(nutritionProvider),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -57,13 +57,8 @@ class _WeightScreenState extends State<WeightScreen> {
|
||||
);
|
||||
},
|
||||
),
|
||||
body: FutureBuilder(
|
||||
future: Provider.of<BodyWeight>(context, listen: false).fetchAndSetEntries(),
|
||||
builder: (context, snapshot) => snapshot.connectionState == ConnectionState.waiting
|
||||
? Center(child: CircularProgressIndicator())
|
||||
: Consumer<BodyWeight>(
|
||||
builder: (context, weightProvider, child) => WeightEntriesList(weightProvider),
|
||||
),
|
||||
body: Consumer<BodyWeight>(
|
||||
builder: (context, weightProvider, child) => WeightEntriesList(weightProvider),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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<Nutrition>(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<Nutrition>(context, listen: false).deletePlan(currentPlan.id);
|
||||
_nutritrionProvider.deletePlan(currentPlan.id);
|
||||
|
||||
// and inform the user
|
||||
Scaffold.of(context).showSnackBar(
|
||||
|
||||
@@ -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<BodyWeight>(context, listen: false).deleteEntry(currentEntry.id);
|
||||
_weightProvider.deleteEntry(currentEntry.id);
|
||||
|
||||
// and inform the user
|
||||
Scaffold.of(context).showSnackBar(
|
||||
|
||||
Reference in New Issue
Block a user