From 6dde08d74d8f5919db89b9bcab32ad497f0c23c8 Mon Sep 17 00:00:00 2001 From: Andreas Fahrecker Date: Thu, 11 Feb 2021 15:30:48 +0100 Subject: [PATCH] Fixed Delete Time Progress Bug Signed-off-by: Andreas Fahrecker --- lib/screens/progress_detail_screen.dart | 33 +++++++++++----------- lib/selectors/time_progress_selectors.dart | 2 +- pubspec.yaml | 2 +- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/lib/screens/progress_detail_screen.dart b/lib/screens/progress_detail_screen.dart index 9ae1ddb..737b85b 100644 --- a/lib/screens/progress_detail_screen.dart +++ b/lib/screens/progress_detail_screen.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:flutter_redux/flutter_redux.dart'; import 'package:redux/redux.dart'; @@ -5,6 +7,7 @@ import 'package:time_progress_tracker/actions/actions.dart'; import 'package:time_progress_tracker/models/app_exceptions.dart'; import 'package:time_progress_tracker/models/app_state.dart'; import 'package:time_progress_tracker/models/time_progress.dart'; +import 'package:time_progress_tracker/screens/home_screen.dart'; import 'package:time_progress_tracker/selectors/time_progress_selectors.dart'; import 'package:time_progress_tracker/widgets/app_yes_no_dialog_widget.dart'; import 'package:time_progress_tracker/widgets/progress_detail_widgets/progress_detail_circular_percent_widget.dart'; @@ -109,7 +112,7 @@ class _ProgressDetailScreenState extends State { void _onDeleteTimeProgress(Store store, String id) { store.dispatch(DeleteTimeProgressAction(id)); - Navigator.pop(context); + Navigator.popUntil(context, ModalRoute.withName(HomeScreen.routeName)); } void _onCloseDialog() { @@ -155,6 +158,10 @@ class _ProgressDetailScreenState extends State { _ViewModel.fromStoreAndArg(store, args), onInit: loadTimeProgressListIfUnloaded, builder: (BuildContext context, _ViewModel vm) { + if (vm.timeProgress == null) + return Center( + child: Text("Error Invalid Time Progress"), + ); return Column( children: [ Expanded( @@ -170,7 +177,8 @@ class _ProgressDetailScreenState extends State { : "The Name of the Time Progress has to be set.", ), ) - : (vm.hasProgressStarted && !vm.hasEnded) + : (vm.timeProgress.hasStarted() && + !vm.timeProgress.hasEnded()) ? FittedBox( fit: BoxFit.fitWidth, child: Text( @@ -196,7 +204,7 @@ class _ProgressDetailScreenState extends State { ), ), ), - (vm.hasProgressStarted && !vm.hasEnded) + (vm.timeProgress.hasStarted() && !vm.timeProgress.hasEnded()) ? Expanded( flex: 2, child: ProgressDetailCircularPercent( @@ -207,13 +215,13 @@ class _ProgressDetailScreenState extends State { ) : Expanded( flex: 2, - child: !vm.hasEnded + child: !vm.timeProgress.hasEnded() ? Text( "Starts in ${vm.timeProgress.startTime.difference(DateTime.now()).inDays} Days.") : Text( "Ended ${DateTime.now().difference(vm.timeProgress.endTime).inDays} Days ago."), ), - (vm.hasProgressStarted && !vm.hasEnded) + (vm.timeProgress.hasStarted() && !vm.timeProgress.hasEnded()) ? Expanded( flex: 1, child: ProgressDetailLinearPercent( @@ -271,22 +279,13 @@ class _ProgressDetailScreenState extends State { class _ViewModel { final TimeProgress timeProgress; - final bool hasProgressStarted; - final bool hasEnded; - _ViewModel({ - @required this.timeProgress, - @required this.hasProgressStarted, - @required this.hasEnded, - }); + _ViewModel({@required this.timeProgress}); static _ViewModel fromStoreAndArg( Store store, ProgressDetailScreenArguments args) { - int currentTime = DateTime.now().millisecondsSinceEpoch; - TimeProgress tp = timeProgressByIdSelector(store.state, args.id); return _ViewModel( - timeProgress: tp, - hasProgressStarted: currentTime > tp.startTime.millisecondsSinceEpoch, - hasEnded: tp.endTime.millisecondsSinceEpoch < currentTime); + timeProgress: timeProgressByIdSelector(store.state, args.id), + ); } } diff --git a/lib/selectors/time_progress_selectors.dart b/lib/selectors/time_progress_selectors.dart index 328679a..ecf939b 100644 --- a/lib/selectors/time_progress_selectors.dart +++ b/lib/selectors/time_progress_selectors.dart @@ -45,5 +45,5 @@ List pastTimeProgressesSelector(AppState state) => TimeProgress timeProgressByIdSelector(AppState state, String id) { if (state.timeProgressList.length < 1) return null; return state.timeProgressList - .firstWhere((timeProgress) => timeProgress.id == id); + .firstWhere((timeProgress) => timeProgress.id == id, orElse: () => null); } diff --git a/pubspec.yaml b/pubspec.yaml index cb5574e..5ff120a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 0.0.9+9 +version: 0.0.10+10 environment: sdk: ">=2.7.0 <3.0.0"