diff --git a/lib/app.dart b/lib/app.dart index 6e416fc..6cd350a 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -3,7 +3,7 @@ import 'package:flutter_redux/flutter_redux.dart'; import 'package:redux/redux.dart'; import 'package:time_progress_tracker/models/app_state.dart'; import 'package:time_progress_tracker/screens/progress_creation_screen.dart'; -import 'package:time_progress_tracker/screens/progress_dashboard_screen.dart'; +import 'package:time_progress_tracker/screens/home_screen.dart'; import 'package:time_progress_tracker/screens/progress_detail_screen.dart'; class TimeProgressTrackerApp extends StatelessWidget { @@ -28,10 +28,10 @@ class TimeProgressTrackerApp extends StatelessWidget { brightness: Brightness.light, visualDensity: VisualDensity.adaptivePlatformDensity, ), - initialRoute: ProgressDashboardScreen.routeName, + initialRoute: HomeScreen.routeName, routes: { - ProgressDashboardScreen.routeName: (BuildContext context) => - ProgressDashboardScreen(), + HomeScreen.routeName: (BuildContext context) => + HomeScreen(), ProgressDetailScreen.routeName: (BuildContext context) => ProgressDetailScreen(), ProgressCreationScreen.routeName: (BuildContext context) => diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart new file mode 100644 index 0000000..ee067d4 --- /dev/null +++ b/lib/screens/home_screen.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.dart'; +import 'package:time_progress_tracker/screens/progress_creation_screen.dart'; +import 'package:time_progress_tracker/widgets/home_widgets/home_bottom_navbar.dart'; +import 'package:time_progress_tracker/widgets/home_widgets/home_active_progresses_tab.dart'; +import 'package:time_progress_tracker/widgets/home_widgets/home_inactive_progresses_tab.dart'; +import 'package:time_progress_tracker/widgets/home_widgets/home_settings_tab.dart'; + +class HomeScreen extends StatefulWidget { + static const routeName = "/home"; + static const title = "Time Progress Tracker"; + + @override + State createState() { + return _HomeScreenState(); + } +} + +class _HomeScreenState extends State { + int _currentIndex = 0; + final List _children = [ + HomeActiveProgressesTab(), + HomeInactiveProgressesTab(), + HomeSettingsTab(), + ]; + + void onBottomTabTapped(int index) { + setState(() { + _currentIndex = index; + }); + } + + @override + Widget build(BuildContext context) { + ThemeData appTheme = Theme.of(context); + + return Scaffold( + appBar: AppBar( + title: Text(HomeScreen.title), + ), + body: _children[_currentIndex], + floatingActionButtonLocation: FloatingActionButtonLocation.endFloat, + floatingActionButton: _currentIndex != 2 + ? FloatingActionButton( + heroTag: "createProgressBTN", + child: Icon(Icons.add), + onPressed: () { + Navigator.pushNamed(context, ProgressCreationScreen.routeName); + }, + ) + : null, + bottomNavigationBar: HomeBottomNavBar( + currentIndex: _currentIndex, + onTap: onBottomTabTapped, + ), + ); + } +} \ No newline at end of file diff --git a/lib/screens/progress_creation_screen.dart b/lib/screens/progress_creation_screen.dart index a36f18c..e3aaac5 100644 --- a/lib/screens/progress_creation_screen.dart +++ b/lib/screens/progress_creation_screen.dart @@ -5,8 +5,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/progress_dashboard_screen.dart'; -import 'package:time_progress_tracker/widgets/app_drawer_widget.dart'; +import 'package:time_progress_tracker/screens/home_screen.dart'; class ProgressCreationScreen extends StatefulWidget { static const routeName = "/progress-creation"; @@ -40,7 +39,7 @@ class _ProgressCreationScreenState extends State { TimeProgress(_nameController.text, pickedStartTime, pickedEndTime); StoreProvider.of(context) .dispatch(AddTimeProgressAction(tpToCreate)); - Navigator.pushNamed(context, ProgressDashboardScreen.routeName); + Navigator.pushNamed(context, HomeScreen.routeName); } on TimeProgressInvalidNameException catch (e) { setState(() { _validName = false; @@ -151,7 +150,7 @@ class _ProgressCreationScreenState extends State { heroTag: "cancelTimeProgressCreationBTN", child: Icon(Icons.cancel), onPressed: () { - Navigator.pushNamed(context, ProgressDashboardScreen.routeName); + Navigator.pushNamed(context, HomeScreen.routeName); }, ), ) diff --git a/lib/screens/progress_dashboard_screen.dart b/lib/screens/progress_dashboard_screen.dart deleted file mode 100644 index cc33250..0000000 --- a/lib/screens/progress_dashboard_screen.dart +++ /dev/null @@ -1,180 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:redux/redux.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/progress_creation_screen.dart'; -import 'package:time_progress_tracker/selectors/time_progress_selectors.dart'; -import 'package:time_progress_tracker/widgets/home_widgets/home_bottom_navbar.dart'; -import 'package:time_progress_tracker/widgets/home_widgets/home_active_progresses_tab.dart'; -import 'package:time_progress_tracker/widgets/home_widgets/home_inactive_progresses_tab.dart'; -import 'package:time_progress_tracker/widgets/home_widgets/home_settings_tab.dart'; - -class ProgressDashboardScreen extends StatefulWidget { - static const routeName = "/progress-dashboard"; - static const title = "Time Progress Tracker"; - - @override - State createState() { - return _ProgressDashboardScreenState(); - } -} - -class _ProgressDashboardScreenState extends State { - int _currentIndex = 0; - final List _children = [ - HomeActiveProgressesTab(), - HomeInactiveProgressesTab(), - HomeSettingsTab(), - ]; - - void onBottomTabTapped(int index) { - setState(() { - _currentIndex = index; - }); - } - - @override - Widget build(BuildContext context) { - ThemeData appTheme = Theme.of(context); - - return Scaffold( - appBar: AppBar( - title: Text(ProgressDashboardScreen.title), - ), - body: _children[_currentIndex], - /* - StoreConnector( - converter: _ViewModel.fromStore, - onInit: loadTimeProgressListIfUnloaded, - builder: (BuildContext context, _ViewModel vm) { - if (!vm.hasLoaded) { - return Center( - child: CircularProgressIndicator(), - ); - } - - List startedProgressesTileList = List(); - - List futureProgressesTileList = List(); - if (vm.hasFutureProgresses) { - for (TimeProgress tp in vm.futureTimeProgresses) { - futureProgressesTileList.add( - Card( - child: ListTile( - title: Text(tp.name), - subtitle: Text( - "Starts in ${tp.startTime.difference(DateTime.now()).inDays} Days."), - onTap: () { - Navigator.pushNamed( - context, ProgressDetailScreen.routeName, - arguments: ProgressDetailScreenArguments(tp.id)); - }, - ), - ), - ); - } - } - - List pastProgressesTileList = List(); - if (vm.pastTimeProgresses.length > 0) { - for (TimeProgress tp in vm.pastTimeProgresses) { - pastProgressesTileList.add( - Card( - child: ListTile( - title: Text(tp.name), - subtitle: Text( - "Ended ${DateTime.now().difference(tp.endTime).inDays} Days ago."), - onTap: () { - Navigator.pushNamed(context, ProgressDetailScreen.routeName, - arguments: ProgressDetailScreenArguments(tp.id)); - }, - )), - ); - } - } - - double dividerHeight = 1; - double screenHeight = MediaQuery.of(context).size.height - - 50 - - dividerHeight - - 1; //Divider - - List columnChildren = List(); - int tpCount = vm.currentTimeProgresses.length + - vm.futureTimeProgresses.length + - vm.pastTimeProgresses.length; - if (vm.hasCurrentProgresses) { - columnChildren.add(Container( - height: screenHeight - 100, - child: ListView( - padding: EdgeInsets.all(8), - children: startedProgressesTileList, - ), - )); - } - - if (!vm.hasCurrentProgresses && - !vm.hasFutureProgresses && - vm.pastTimeProgresses.length < 1) { - columnChildren.add(Container( - margin: EdgeInsets.all(16), - child: Center( - child: Text("You don't have any tracked Progress."), - ), - )); - } - - return Column( - children: columnChildren, - ); - }, - ) - */ - floatingActionButtonLocation: FloatingActionButtonLocation.endFloat, - floatingActionButton: _currentIndex != 2 - ? FloatingActionButton( - heroTag: "createProgressBTN", - child: Icon(Icons.add), - onPressed: () { - Navigator.pushNamed(context, ProgressCreationScreen.routeName); - }, - ) - : null, - bottomNavigationBar: HomeBottomNavBar( - currentIndex: _currentIndex, - onTap: onBottomTabTapped, - ), - ); - } -} - -class _ViewModel { - final List currentTimeProgresses; - final bool hasCurrentProgresses; - final List futureTimeProgresses; - final bool hasFutureProgresses; - final List pastTimeProgresses; - final bool hasLoaded; - - _ViewModel({ - @required this.currentTimeProgresses, - @required this.hasCurrentProgresses, - @required this.futureTimeProgresses, - @required this.hasFutureProgresses, - @required this.pastTimeProgresses, - @required this.hasLoaded, - }); - - static _ViewModel fromStore(Store store) { - List currentTPList = currentTimeProgressSelector(store.state); - List futureTPList = futureTimeProgressesSelector(store.state); - return _ViewModel( - currentTimeProgresses: currentTPList, - hasCurrentProgresses: currentTPList.length > 0, - futureTimeProgresses: futureTPList, - hasFutureProgresses: futureTPList.length > 0, - pastTimeProgresses: pastTimeProgressesSelector(store.state), - hasLoaded: store.state.hasLoaded, - ); - } -} diff --git a/lib/screens/progress_detail_screen.dart b/lib/screens/progress_detail_screen.dart index f465a62..da96821 100644 --- a/lib/screens/progress_detail_screen.dart +++ b/lib/screens/progress_detail_screen.dart @@ -5,9 +5,8 @@ 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/progress_dashboard_screen.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_drawer_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_edit_dates_row_widget.dart'; @@ -111,7 +110,7 @@ class _ProgressDetailScreenState extends State { void _onDeleteTimeProgress(Store store, String id) { store.dispatch(DeleteTimeProgressAction(id)); - Navigator.popAndPushNamed(context, ProgressDashboardScreen.routeName); + Navigator.popAndPushNamed(context, HomeScreen.routeName); } void _onCloseDialog() { diff --git a/lib/widgets/app_drawer_widget.dart b/lib/widgets/app_drawer_widget.dart index 9cc7338..2bcda4f 100644 --- a/lib/widgets/app_drawer_widget.dart +++ b/lib/widgets/app_drawer_widget.dart @@ -7,7 +7,7 @@ import 'package:time_progress_tracker/actions/actions.dart'; import 'package:time_progress_tracker/app.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/progress_dashboard_screen.dart'; +import 'package:time_progress_tracker/screens/home_screen.dart'; import 'package:time_progress_tracker/screens/progress_detail_screen.dart'; import 'package:time_progress_tracker/selectors/time_progress_selectors.dart'; @@ -43,11 +43,11 @@ class AppDrawer extends StatelessWidget { color: appTheme.accentColor, margin: EdgeInsets.only(bottom: 8), child: ListTile( - title: Text(ProgressDashboardScreen.title), + title: Text(HomeScreen.title), trailing: Icon(Icons.dashboard), onTap: () { Navigator.pop(context); - Navigator.pushNamed(context, ProgressDashboardScreen.routeName); + Navigator.pushNamed(context, HomeScreen.routeName); }, ), ));