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_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<ProgressDetailScreen> {
void _onDeleteTimeProgress(Store<AppState> 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<ProgressDetailScreen> {
_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: <Widget>[
Expanded(
@ -170,7 +177,8 @@ class _ProgressDetailScreenState extends State<ProgressDetailScreen> {
: "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<ProgressDetailScreen> {
),
),
),
(vm.hasProgressStarted && !vm.hasEnded)
(vm.timeProgress.hasStarted() && !vm.timeProgress.hasEnded())
? Expanded(
flex: 2,
child: ProgressDetailCircularPercent(
@ -207,13 +215,13 @@ class _ProgressDetailScreenState extends State<ProgressDetailScreen> {
)
: 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<ProgressDetailScreen> {
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<AppState> 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),
);
}
}

View File

@ -45,5 +45,5 @@ List<TimeProgress> 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);
}

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.
# 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"