From f8f14019d7733d67ec8b73d52c85ca30cdb0997c Mon Sep 17 00:00:00 2001 From: CHAN Kelwin Hillary <5429312+ckelwin@users.noreply.github.com> Date: Mon, 10 Oct 2022 08:13:50 +0800 Subject: [PATCH] Added `Start from template` button on calendar_screen.dart. Can still `Start new workout` even when templates exists. resolves EXERLOG/exer_log#28 --- lib/UI/workout/workout_page.dart | 5 ++- .../calendar/view/calendar_screen.dart | 39 +++++++++++++++---- lib/src/utils/text_constants.dart | 1 + 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/lib/UI/workout/workout_page.dart b/lib/UI/workout/workout_page.dart index 63ce24e..eb9e8a5 100644 --- a/lib/UI/workout/workout_page.dart +++ b/lib/UI/workout/workout_page.dart @@ -16,9 +16,10 @@ import 'package:exerlog/src/widgets/theme/theme_provider.dart'; import 'package:flutter/material.dart'; class WorkoutPage extends StatefulWidget { - WorkoutPage(this.workout, {Key? key}) : super(key: key); + WorkoutPage(this.workout, {Key? key, this.isTemplateMode = false}) : super(key: key); Workout? workout; + bool isTemplateMode; @override _WorkoutPageState createState() => _WorkoutPageState(); @@ -136,7 +137,7 @@ class _WorkoutPageState extends State { child: Text('Something went wrong'), ); } else { - if (snapshot.data!.isEmpty) { + if (!widget.isTemplateMode) { firstLoad = false; Future.delayed( Duration.zero, diff --git a/lib/src/feature/calendar/view/calendar_screen.dart b/lib/src/feature/calendar/view/calendar_screen.dart index 995ccae..48c8cfc 100644 --- a/lib/src/feature/calendar/view/calendar_screen.dart +++ b/lib/src/feature/calendar/view/calendar_screen.dart @@ -52,13 +52,28 @@ class _CalendarScreenState extends ConsumerState { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ CalendarWidget(), - RaisedGradientButton( - width: context.width * .8, - onPressed: _navigateToWorkoutScreen, - child: Text( - Texts.startNewWorkout.toUpperCase(), - style: buttonTextSmall, - ), + Column( + children: [ + RaisedGradientButton( + width: context.width * .8, + onPressed: _navigateToExerciseScreen, + child: Text( + Texts.startNewWorkout.toUpperCase(), + style: buttonTextSmall, + ), + ), + const SizedBox( + height: 15, + ), + RaisedGradientButton( + width: context.width * .8, + onPressed: _navigateToWorkoutScreen, + child: Text( + Texts.startFromTemplate.toUpperCase(), + style: buttonTextSmall, + ), + ), + ], ) ], ), @@ -68,10 +83,18 @@ class _CalendarScreenState extends ConsumerState { ); } + void _navigateToExerciseScreen() { + Navigator.of(context).push( + MaterialPageRoute( + builder: (BuildContext context) => WorkoutPage(null), + ), + ); + } + void _navigateToWorkoutScreen() { Navigator.of(context).push( MaterialPageRoute( - builder: (context) => WorkoutPage(null), + builder: (BuildContext context) => WorkoutPage(null, isTemplateMode: true), ), ); } diff --git a/lib/src/utils/text_constants.dart b/lib/src/utils/text_constants.dart index b2fde9d..3467346 100644 --- a/lib/src/utils/text_constants.dart +++ b/lib/src/utils/text_constants.dart @@ -5,6 +5,7 @@ class Texts { /// Calendar Screen static const startNewWorkout = 'Start new workout'; + static const startFromTemplate = 'Start from template'; /// Workout Screen }