Renamed ProgressDashboardScreen to HomeScreen
Signed-off-by: Andreas Fahrecker <AndreasFahrecker@gmail.com>
This commit is contained in:
parent
409ccbcdda
commit
d289cfc4d5
@ -3,7 +3,7 @@ import 'package:flutter_redux/flutter_redux.dart';
|
|||||||
import 'package:redux/redux.dart';
|
import 'package:redux/redux.dart';
|
||||||
import 'package:time_progress_tracker/models/app_state.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_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';
|
import 'package:time_progress_tracker/screens/progress_detail_screen.dart';
|
||||||
|
|
||||||
class TimeProgressTrackerApp extends StatelessWidget {
|
class TimeProgressTrackerApp extends StatelessWidget {
|
||||||
@ -28,10 +28,10 @@ class TimeProgressTrackerApp extends StatelessWidget {
|
|||||||
brightness: Brightness.light,
|
brightness: Brightness.light,
|
||||||
visualDensity: VisualDensity.adaptivePlatformDensity,
|
visualDensity: VisualDensity.adaptivePlatformDensity,
|
||||||
),
|
),
|
||||||
initialRoute: ProgressDashboardScreen.routeName,
|
initialRoute: HomeScreen.routeName,
|
||||||
routes: {
|
routes: {
|
||||||
ProgressDashboardScreen.routeName: (BuildContext context) =>
|
HomeScreen.routeName: (BuildContext context) =>
|
||||||
ProgressDashboardScreen(),
|
HomeScreen(),
|
||||||
ProgressDetailScreen.routeName: (BuildContext context) =>
|
ProgressDetailScreen.routeName: (BuildContext context) =>
|
||||||
ProgressDetailScreen(),
|
ProgressDetailScreen(),
|
||||||
ProgressCreationScreen.routeName: (BuildContext context) =>
|
ProgressCreationScreen.routeName: (BuildContext context) =>
|
||||||
|
57
lib/screens/home_screen.dart
Normal file
57
lib/screens/home_screen.dart
Normal file
@ -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<StatefulWidget> createState() {
|
||||||
|
return _HomeScreenState();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class _HomeScreenState extends State<HomeScreen> {
|
||||||
|
int _currentIndex = 0;
|
||||||
|
final List<Widget> _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,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -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_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/progress_dashboard_screen.dart';
|
import 'package:time_progress_tracker/screens/home_screen.dart';
|
||||||
import 'package:time_progress_tracker/widgets/app_drawer_widget.dart';
|
|
||||||
|
|
||||||
class ProgressCreationScreen extends StatefulWidget {
|
class ProgressCreationScreen extends StatefulWidget {
|
||||||
static const routeName = "/progress-creation";
|
static const routeName = "/progress-creation";
|
||||||
@ -40,7 +39,7 @@ class _ProgressCreationScreenState extends State<ProgressCreationScreen> {
|
|||||||
TimeProgress(_nameController.text, pickedStartTime, pickedEndTime);
|
TimeProgress(_nameController.text, pickedStartTime, pickedEndTime);
|
||||||
StoreProvider.of<AppState>(context)
|
StoreProvider.of<AppState>(context)
|
||||||
.dispatch(AddTimeProgressAction(tpToCreate));
|
.dispatch(AddTimeProgressAction(tpToCreate));
|
||||||
Navigator.pushNamed(context, ProgressDashboardScreen.routeName);
|
Navigator.pushNamed(context, HomeScreen.routeName);
|
||||||
} on TimeProgressInvalidNameException catch (e) {
|
} on TimeProgressInvalidNameException catch (e) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_validName = false;
|
_validName = false;
|
||||||
@ -151,7 +150,7 @@ class _ProgressCreationScreenState extends State<ProgressCreationScreen> {
|
|||||||
heroTag: "cancelTimeProgressCreationBTN",
|
heroTag: "cancelTimeProgressCreationBTN",
|
||||||
child: Icon(Icons.cancel),
|
child: Icon(Icons.cancel),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.pushNamed(context, ProgressDashboardScreen.routeName);
|
Navigator.pushNamed(context, HomeScreen.routeName);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
@ -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<StatefulWidget> createState() {
|
|
||||||
return _ProgressDashboardScreenState();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class _ProgressDashboardScreenState extends State<ProgressDashboardScreen> {
|
|
||||||
int _currentIndex = 0;
|
|
||||||
final List<Widget> _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<Widget> startedProgressesTileList = List<Widget>();
|
|
||||||
|
|
||||||
List<Widget> futureProgressesTileList = List<Widget>();
|
|
||||||
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<Widget> pastProgressesTileList = List<Widget>();
|
|
||||||
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<Widget> columnChildren = List<Widget>();
|
|
||||||
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<TimeProgress> currentTimeProgresses;
|
|
||||||
final bool hasCurrentProgresses;
|
|
||||||
final List<TimeProgress> futureTimeProgresses;
|
|
||||||
final bool hasFutureProgresses;
|
|
||||||
final List<TimeProgress> 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<AppState> store) {
|
|
||||||
List<TimeProgress> currentTPList = currentTimeProgressSelector(store.state);
|
|
||||||
List<TimeProgress> 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,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -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_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/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/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/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';
|
||||||
import 'package:time_progress_tracker/widgets/progress_detail_widgets/progress_detail_edit_dates_row_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<ProgressDetailScreen> {
|
|||||||
|
|
||||||
void _onDeleteTimeProgress(Store<AppState> store, String id) {
|
void _onDeleteTimeProgress(Store<AppState> store, String id) {
|
||||||
store.dispatch(DeleteTimeProgressAction(id));
|
store.dispatch(DeleteTimeProgressAction(id));
|
||||||
Navigator.popAndPushNamed(context, ProgressDashboardScreen.routeName);
|
Navigator.popAndPushNamed(context, HomeScreen.routeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onCloseDialog() {
|
void _onCloseDialog() {
|
||||||
|
@ -7,7 +7,7 @@ import 'package:time_progress_tracker/actions/actions.dart';
|
|||||||
import 'package:time_progress_tracker/app.dart';
|
import 'package:time_progress_tracker/app.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/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/screens/progress_detail_screen.dart';
|
||||||
import 'package:time_progress_tracker/selectors/time_progress_selectors.dart';
|
import 'package:time_progress_tracker/selectors/time_progress_selectors.dart';
|
||||||
|
|
||||||
@ -43,11 +43,11 @@ class AppDrawer extends StatelessWidget {
|
|||||||
color: appTheme.accentColor,
|
color: appTheme.accentColor,
|
||||||
margin: EdgeInsets.only(bottom: 8),
|
margin: EdgeInsets.only(bottom: 8),
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
title: Text(ProgressDashboardScreen.title),
|
title: Text(HomeScreen.title),
|
||||||
trailing: Icon(Icons.dashboard),
|
trailing: Icon(Icons.dashboard),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
Navigator.pushNamed(context, ProgressDashboardScreen.routeName);
|
Navigator.pushNamed(context, HomeScreen.routeName);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
));
|
));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user