Code cleanup
Signed-off-by: Andreas Fahrecker <AndreasFahrecker@gmail.com>
This commit is contained in:
45
lib/widgets/home/home_bottom_navbar.dart
Normal file
45
lib/widgets/home/home_bottom_navbar.dart
Normal file
@ -0,0 +1,45 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class HomeBottomNavBar extends StatelessWidget {
|
||||
final int currentIndex;
|
||||
final Function onTap;
|
||||
|
||||
HomeBottomNavBar({
|
||||
Key key,
|
||||
@required this.currentIndex,
|
||||
@required this.onTap,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
ThemeData appTheme = Theme.of(context);
|
||||
|
||||
return BottomNavigationBar(
|
||||
onTap: onTap,
|
||||
currentIndex: currentIndex,
|
||||
items: [
|
||||
BottomNavigationBarItem(
|
||||
icon: new Icon(
|
||||
Icons.alarm,
|
||||
color: appTheme.primaryColor,
|
||||
),
|
||||
label: "Active Progresses",
|
||||
),
|
||||
BottomNavigationBarItem(
|
||||
icon: new Icon(
|
||||
Icons.alarm_off,
|
||||
color: appTheme.primaryColor,
|
||||
),
|
||||
label: "Inactive Progresses",
|
||||
),
|
||||
BottomNavigationBarItem(
|
||||
icon: new Icon(
|
||||
Icons.settings,
|
||||
color: appTheme.primaryColor,
|
||||
),
|
||||
label: "Settings",
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
44
lib/widgets/home/home_progress_list_tile.dart
Normal file
44
lib/widgets/home/home_progress_list_tile.dart
Normal file
@ -0,0 +1,44 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:percent_indicator/linear_percent_indicator.dart';
|
||||
import 'package:time_progress_tracker/models/time_progress.dart';
|
||||
import 'package:time_progress_tracker/screens/progress_detail_screen.dart';
|
||||
|
||||
class HomeProgressListTile extends StatelessWidget {
|
||||
final TimeProgress timeProgress;
|
||||
|
||||
HomeProgressListTile({
|
||||
Key key,
|
||||
@required this.timeProgress,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Widget listTileSubTitle;
|
||||
if (timeProgress.hasStarted() && !timeProgress.hasEnded())
|
||||
listTileSubTitle = LinearPercentIndicator(
|
||||
center: Text("${(timeProgress.percentDone() * 100).floor()} %"),
|
||||
percent: timeProgress.percentDone(),
|
||||
progressColor: Colors.green,
|
||||
backgroundColor: Colors.red,
|
||||
lineHeight: 20,
|
||||
);
|
||||
if (!timeProgress.hasStarted())
|
||||
listTileSubTitle = Text(
|
||||
"Starts in ${timeProgress.startTime.difference(DateTime.now()).inDays} Days");
|
||||
if (timeProgress.hasEnded())
|
||||
listTileSubTitle = Text(
|
||||
"Ended ${DateTime.now().difference(timeProgress.endTime).inDays} Days ago.");
|
||||
|
||||
return Card(
|
||||
child: ListTile(
|
||||
title: Text(timeProgress.name),
|
||||
subtitle: listTileSubTitle,
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, ProgressDetailScreen.routeName,
|
||||
arguments: ProgressDetailScreenArguments(timeProgress.id));
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
44
lib/widgets/home/tabs/home_active_progresses_tab.dart
Normal file
44
lib/widgets/home/tabs/home_active_progresses_tab.dart
Normal file
@ -0,0 +1,44 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:time_progress_tracker/actions/actions.dart';
|
||||
import 'package:time_progress_tracker/models/time_progress.dart';
|
||||
import 'package:time_progress_tracker/selectors/time_progress_selectors.dart';
|
||||
import 'package:time_progress_tracker/widgets/home/home_progress_list_tile.dart';
|
||||
|
||||
class HomeActiveProgressesTab extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return StoreConnector(
|
||||
onInit: loadTimeProgressListIfUnloaded,
|
||||
converter: (store) => store.state.hasLoaded,
|
||||
builder: (BuildContext context, dynamic hasLoaded) {
|
||||
if (!(hasLoaded as bool))
|
||||
return Center(
|
||||
child: CircularProgressIndicator(),
|
||||
);
|
||||
return StoreConnector(
|
||||
onInit: loadTimeProgressListIfUnloaded,
|
||||
converter: (store) => activeTimeProgressesSelector(store.state),
|
||||
builder: (BuildContext context, List<TimeProgress> timeProgresses) {
|
||||
if (timeProgresses.length < 1)
|
||||
return Container(
|
||||
padding: EdgeInsets.all(16),
|
||||
child: Center(
|
||||
child: Text(
|
||||
"You don't have any currently active time progresses, that are tracked."),
|
||||
),
|
||||
);
|
||||
return ListView(
|
||||
padding: EdgeInsets.all(8),
|
||||
children: timeProgresses
|
||||
.map((timeProgress) => HomeProgressListTile(
|
||||
timeProgress: timeProgress,
|
||||
))
|
||||
.toList(),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
43
lib/widgets/home/tabs/home_inactive_progresses_tab.dart
Normal file
43
lib/widgets/home/tabs/home_inactive_progresses_tab.dart
Normal file
@ -0,0 +1,43 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:time_progress_tracker/actions/actions.dart';
|
||||
import 'package:time_progress_tracker/models/time_progress.dart';
|
||||
import 'package:time_progress_tracker/selectors/time_progress_selectors.dart';
|
||||
import 'package:time_progress_tracker/widgets/home/home_progress_list_tile.dart';
|
||||
|
||||
class HomeInactiveProgressesTab extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return StoreConnector(
|
||||
onInit: loadTimeProgressListIfUnloaded,
|
||||
converter: (store) => store.state.hasLoaded,
|
||||
builder: (BuildContext context, dynamic hasLoaded) {
|
||||
if (!(hasLoaded as bool))
|
||||
return Center(
|
||||
child: CircularProgressIndicator(),
|
||||
);
|
||||
return StoreConnector(
|
||||
onInit: loadTimeProgressListIfUnloaded,
|
||||
converter: (store) => inactiveTimeProgressesSelector(store.state),
|
||||
builder: (BuildContext context, List<TimeProgress> timeProgresses) {
|
||||
if (timeProgresses.length < 1)
|
||||
return Container(
|
||||
padding: EdgeInsets.all(16),
|
||||
child: Center(
|
||||
child: Text(
|
||||
"You don't have any currently inactive time progresses, that are tracked."),
|
||||
),
|
||||
);
|
||||
return ListView(
|
||||
padding: EdgeInsets.all(8),
|
||||
children: timeProgresses
|
||||
.map((timeProgress) =>
|
||||
HomeProgressListTile(timeProgress: timeProgress))
|
||||
.toList(),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
28
lib/widgets/home/tabs/home_settings_tab.dart
Normal file
28
lib/widgets/home/tabs/home_settings_tab.dart
Normal file
@ -0,0 +1,28 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:package_info/package_info.dart';
|
||||
import 'package:time_progress_tracker/app.dart';
|
||||
|
||||
class HomeSettingsTab extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
padding: EdgeInsets.all(16),
|
||||
child: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
Text("The Settings of this App are not yet implemented."),
|
||||
FlatButton(
|
||||
onPressed: () {
|
||||
showAboutDialog(
|
||||
context: context,
|
||||
applicationName: TimeProgressTrackerApp.name,
|
||||
applicationVersion: "Beta",
|
||||
applicationLegalese: '\u00a9Andreas Fahrecker 2020-2021');
|
||||
},
|
||||
child: Text("About"))
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user