Fixed Delete Time Progress Bug

Signed-off-by: Andreas Fahrecker <AndreasFahrecker@gmail.com>
This commit is contained in:
Andreas Fahrecker 2021-02-11 15:30:48 +01:00
parent fad8d8b49b
commit 6dde08d74d
3 changed files with 18 additions and 19 deletions

View File

@ -1,3 +1,5 @@
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
import 'package:redux/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_exceptions.dart';
import 'package:time_progress_tracker/models/app_state.dart'; import 'package:time_progress_tracker/models/app_state.dart';
import 'package:time_progress_tracker/models/time_progress.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/selectors/time_progress_selectors.dart';
import 'package:time_progress_tracker/widgets/app_yes_no_dialog_widget.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'; import 'package:time_progress_tracker/widgets/progress_detail_widgets/progress_detail_circular_percent_widget.dart';
@ -109,7 +112,7 @@ class _ProgressDetailScreenState extends State<ProgressDetailScreen> {
void _onDeleteTimeProgress(Store<AppState> store, String id) { void _onDeleteTimeProgress(Store<AppState> store, String id) {
store.dispatch(DeleteTimeProgressAction(id)); store.dispatch(DeleteTimeProgressAction(id));
Navigator.pop(context); Navigator.popUntil(context, ModalRoute.withName(HomeScreen.routeName));
} }
void _onCloseDialog() { void _onCloseDialog() {
@ -155,6 +158,10 @@ class _ProgressDetailScreenState extends State<ProgressDetailScreen> {
_ViewModel.fromStoreAndArg(store, args), _ViewModel.fromStoreAndArg(store, args),
onInit: loadTimeProgressListIfUnloaded, onInit: loadTimeProgressListIfUnloaded,
builder: (BuildContext context, _ViewModel vm) { builder: (BuildContext context, _ViewModel vm) {
if (vm.timeProgress == null)
return Center(
child: Text("Error Invalid Time Progress"),
);
return Column( return Column(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
@ -170,7 +177,8 @@ class _ProgressDetailScreenState extends State<ProgressDetailScreen> {
: "The Name of the Time Progress has to be set.", : "The Name of the Time Progress has to be set.",
), ),
) )
: (vm.hasProgressStarted && !vm.hasEnded) : (vm.timeProgress.hasStarted() &&
!vm.timeProgress.hasEnded())
? FittedBox( ? FittedBox(
fit: BoxFit.fitWidth, fit: BoxFit.fitWidth,
child: Text( child: Text(
@ -196,7 +204,7 @@ class _ProgressDetailScreenState extends State<ProgressDetailScreen> {
), ),
), ),
), ),
(vm.hasProgressStarted && !vm.hasEnded) (vm.timeProgress.hasStarted() && !vm.timeProgress.hasEnded())
? Expanded( ? Expanded(
flex: 2, flex: 2,
child: ProgressDetailCircularPercent( child: ProgressDetailCircularPercent(
@ -207,13 +215,13 @@ class _ProgressDetailScreenState extends State<ProgressDetailScreen> {
) )
: Expanded( : Expanded(
flex: 2, flex: 2,
child: !vm.hasEnded child: !vm.timeProgress.hasEnded()
? Text( ? Text(
"Starts in ${vm.timeProgress.startTime.difference(DateTime.now()).inDays} Days.") "Starts in ${vm.timeProgress.startTime.difference(DateTime.now()).inDays} Days.")
: Text( : Text(
"Ended ${DateTime.now().difference(vm.timeProgress.endTime).inDays} Days ago."), "Ended ${DateTime.now().difference(vm.timeProgress.endTime).inDays} Days ago."),
), ),
(vm.hasProgressStarted && !vm.hasEnded) (vm.timeProgress.hasStarted() && !vm.timeProgress.hasEnded())
? Expanded( ? Expanded(
flex: 1, flex: 1,
child: ProgressDetailLinearPercent( child: ProgressDetailLinearPercent(
@ -271,22 +279,13 @@ class _ProgressDetailScreenState extends State<ProgressDetailScreen> {
class _ViewModel { class _ViewModel {
final TimeProgress timeProgress; final TimeProgress timeProgress;
final bool hasProgressStarted;
final bool hasEnded;
_ViewModel({ _ViewModel({@required this.timeProgress});
@required this.timeProgress,
@required this.hasProgressStarted,
@required this.hasEnded,
});
static _ViewModel fromStoreAndArg( static _ViewModel fromStoreAndArg(
Store<AppState> store, ProgressDetailScreenArguments args) { Store<AppState> store, ProgressDetailScreenArguments args) {
int currentTime = DateTime.now().millisecondsSinceEpoch;
TimeProgress tp = timeProgressByIdSelector(store.state, args.id);
return _ViewModel( return _ViewModel(
timeProgress: tp, timeProgress: timeProgressByIdSelector(store.state, args.id),
hasProgressStarted: currentTime > tp.startTime.millisecondsSinceEpoch, );
hasEnded: tp.endTime.millisecondsSinceEpoch < currentTime);
} }
} }

View File

@ -45,5 +45,5 @@ List<TimeProgress> pastTimeProgressesSelector(AppState state) =>
TimeProgress timeProgressByIdSelector(AppState state, String id) { TimeProgress timeProgressByIdSelector(AppState state, String id) {
if (state.timeProgressList.length < 1) return null; if (state.timeProgressList.length < 1) return null;
return state.timeProgressList return state.timeProgressList
.firstWhere((timeProgress) => timeProgress.id == id); .firstWhere((timeProgress) => timeProgress.id == id, orElse: () => null);
} }

View File

@ -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. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at # Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 0.0.9+9 version: 0.0.10+10
environment: environment:
sdk: ">=2.7.0 <3.0.0" sdk: ">=2.7.0 <3.0.0"