From 0da8eedbf0c6aad2cacd8f6ecd0a2f3d048f68ad Mon Sep 17 00:00:00 2001 From: amannegi Date: Fri, 28 Oct 2022 17:12:45 +0530 Subject: [PATCH] Add Helper text to Empty Tabs #281 --- assets/images/no_items.svg | 1 + lib/l10n/app_en.arb | 3 ++- lib/screens/workout_plans_screen.dart | 4 ++- lib/widgets/core/no_items.dart | 27 +++++++++++++++++++ lib/widgets/gallery/overview.dart | 6 ++++- .../nutrition/nutritional_plans_list.dart | 4 +++ lib/widgets/workouts/workout_plans_list.dart | 5 ++++ 7 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 assets/images/no_items.svg create mode 100644 lib/widgets/core/no_items.dart diff --git a/assets/images/no_items.svg b/assets/images/no_items.svg new file mode 100644 index 00000000..a899abb8 --- /dev/null +++ b/assets/images/no_items.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 084c925b..a1b39c88 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -648,5 +648,6 @@ "quads": "Quads", "arms": "Arms", "sz_bar": "SZ-Bar", - "aboutPageTitle": "About Wger" + "aboutPageTitle": "About Wger", + "noItems": "No Items" } diff --git a/lib/screens/workout_plans_screen.dart b/lib/screens/workout_plans_screen.dart index 4d3dbfdf..9e00a3a3 100644 --- a/lib/screens/workout_plans_screen.dart +++ b/lib/screens/workout_plans_screen.dart @@ -47,7 +47,9 @@ class WorkoutPlansScreen extends StatelessWidget { }, ), body: Consumer( - builder: (context, workoutProvider, child) => WorkoutPlansList(workoutProvider), + builder: (context, workoutProvider, child) { + return WorkoutPlansList(workoutProvider); + }, ), ); } diff --git a/lib/widgets/core/no_items.dart b/lib/widgets/core/no_items.dart new file mode 100644 index 00000000..8af2b33c --- /dev/null +++ b/lib/widgets/core/no_items.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +class NoItemsWidget extends StatelessWidget { + static const String routeName = '/NoDataPage'; + const NoItemsWidget({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final deviceSize = MediaQuery.of(context).size; + + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Center( + child: SvgPicture.asset( + 'assets/images/no_items.svg', + height: 0.15 * deviceSize.height, + ), + ), + SizedBox(height: 0.025 * deviceSize.height), + Text(AppLocalizations.of(context).noItems), + ], + ); + } +} diff --git a/lib/widgets/gallery/overview.dart b/lib/widgets/gallery/overview.dart index 8aac73f5..28528fbb 100644 --- a/lib/widgets/gallery/overview.dart +++ b/lib/widgets/gallery/overview.dart @@ -17,13 +17,13 @@ */ import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; import 'package:wger/providers/gallery.dart'; import 'package:wger/screens/form_screen.dart'; +import 'package:wger/widgets/core/no_items.dart'; import 'forms.dart'; @@ -34,6 +34,10 @@ class Gallery extends StatelessWidget { Widget build(BuildContext context) { final provider = Provider.of(context); + if (provider.images.isEmpty) { + return const NoItemsWidget(); + } + return Padding( padding: const EdgeInsets.all(5), child: MasonryGridView.count( diff --git a/lib/widgets/nutrition/nutritional_plans_list.dart b/lib/widgets/nutrition/nutritional_plans_list.dart index c74683c6..4a769421 100644 --- a/lib/widgets/nutrition/nutritional_plans_list.dart +++ b/lib/widgets/nutrition/nutritional_plans_list.dart @@ -21,6 +21,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:intl/intl.dart'; import 'package:wger/providers/nutrition.dart'; import 'package:wger/screens/nutritional_plan_screen.dart'; +import 'package:wger/widgets/core/no_items.dart'; class NutritionalPlansList extends StatelessWidget { final NutritionPlansProvider _nutritionProvider; @@ -28,6 +29,9 @@ class NutritionalPlansList extends StatelessWidget { @override Widget build(BuildContext context) { + if (_nutritionProvider.items.isEmpty) { + return const NoItemsWidget(); + } return ListView.builder( padding: const EdgeInsets.all(10.0), itemCount: _nutritionProvider.items.length, diff --git a/lib/widgets/workouts/workout_plans_list.dart b/lib/widgets/workouts/workout_plans_list.dart index 07efe5ad..309c7612 100644 --- a/lib/widgets/workouts/workout_plans_list.dart +++ b/lib/widgets/workouts/workout_plans_list.dart @@ -22,6 +22,7 @@ import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; import 'package:wger/providers/workout_plans.dart'; import 'package:wger/screens/workout_plan_screen.dart'; +import 'package:wger/widgets/core/no_items.dart'; class WorkoutPlansList extends StatelessWidget { final WorkoutPlansProvider _workoutProvider; @@ -30,6 +31,10 @@ class WorkoutPlansList extends StatelessWidget { @override Widget build(BuildContext context) { + if (_workoutProvider.items.isEmpty) { + return const NoItemsWidget(); + } + return ListView.builder( padding: const EdgeInsets.all(10.0), itemCount: _workoutProvider.items.length,