Renamed Theme Utils and work on Progress List Item

Signed-off-by: Andreas Fahrecker <AndreasFahrecker@gmail.com>
This commit is contained in:
Andreas Fahrecker 2021-03-18 16:05:09 +01:00
parent d6ca3d4270
commit e71b65bdf3
5 changed files with 43 additions and 27 deletions

View File

@ -5,7 +5,7 @@ import 'package:flutter_redux/flutter_redux.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'package:time_progress_tracker/redux/app_state.dart'; import 'package:time_progress_tracker/redux/app_state.dart';
import 'package:time_progress_tracker/ui/screens/dashboard_screen.dart'; import 'package:time_progress_tracker/ui/screens/dashboard_screen.dart';
import 'package:time_progress_tracker/utils/color_utils.dart'; import 'package:time_progress_tracker/utils/theme_utils.dart';
class TimeProgressTrackerApp extends StatelessWidget { class TimeProgressTrackerApp extends StatelessWidget {
static const String name = "Time Progress Tracker"; static const String name = "Time Progress Tracker";

View File

@ -6,6 +6,7 @@ import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
import 'package:percent_indicator/linear_percent_indicator.dart'; import 'package:percent_indicator/linear_percent_indicator.dart';
import 'package:time_progress_tracker/models/time_progress.dart'; import 'package:time_progress_tracker/models/time_progress.dart';
import 'package:time_progress_tracker/ui/screens/progress_detail_screen.dart'; import 'package:time_progress_tracker/ui/screens/progress_detail_screen.dart';
import 'package:time_progress_tracker/utils/theme_utils.dart';
class ProgressListTileStrings { class ProgressListTileStrings {
static String percentString(TimeProgress tp) => static String percentString(TimeProgress tp) =>
@ -28,47 +29,61 @@ class ProgressListItem extends StatelessWidget {
@required this.leftColor, @required this.leftColor,
}); });
Widget _renderSubtitle(BuildContext context) {
if (!timeProgress.hasStarted())
return PlatformText(ProgressListTileStrings.startsInDaysString(timeProgress));
if (timeProgress.hasEnded())
return PlatformText(ProgressListTileStrings.endedDaysAgoString(timeProgress));
return LinearPercentIndicator(
center: PlatformText(ProgressListTileStrings.percentString(timeProgress)),
percent: timeProgress.percentDone(),
progressColor: doneColor,
backgroundColor: leftColor,
lineHeight: 20,
);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
void _onTileTap() => void _onTileTap() =>
Navigator.pushNamed(context, ProgressDetailScreen.routeName, Navigator.pushNamed(context, ProgressDetailScreen.routeName,
arguments: ProgressDetailScreenArguments(timeProgress.id)); arguments: ProgressDetailScreenArguments(timeProgress.id));
Text titleText = Text(timeProgress.name); Text _renderTitle(bool material) => Text(
timeProgress.name,
style: material ? null : cupertinoCardTextStyle,
);
if (Platform.isIOS) Widget _renderSubtitle() {
if (!timeProgress.hasStarted())
return PlatformText(
ProgressListTileStrings.startsInDaysString(timeProgress));
if (timeProgress.hasEnded())
return PlatformText(
ProgressListTileStrings.endedDaysAgoString(timeProgress));
return LinearPercentIndicator(
center:
PlatformText(ProgressListTileStrings.percentString(timeProgress)),
percent: timeProgress.percentDone(),
progressColor: doneColor,
backgroundColor: leftColor,
lineHeight: 20,
);
}
Widget _renderCupertino() {
CupertinoThemeData theme = CupertinoTheme.of(context);
return CupertinoButton( return CupertinoButton(
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.grey, color: theme.primaryColor,
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
), ),
padding: EdgeInsets.fromLTRB(15, 15, 5, 5), padding: EdgeInsets.fromLTRB(15, 15, 5, 5),
child: Column( child: Column(
children: [ children: [
titleText, _renderTitle(false),
_renderSubtitle(context), _renderSubtitle(),
], ],
), ),
), ),
onPressed: _onTileTap); onPressed: _onTileTap);
return ListTile( }
title: titleText,
subtitle: _renderSubtitle(context), Widget _renderMaterial() {
onTap: _onTileTap, return ListTile(
); title: _renderTitle(true),
subtitle: _renderSubtitle(),
onTap: _onTileTap,
);
}
if (Platform.isIOS) return _renderCupertino();
return _renderMaterial();
} }
} }

View File

@ -6,7 +6,7 @@ import 'package:time_progress_tracker/ui/screens/active_time_progresses_screen.d
import 'package:time_progress_tracker/ui/screens/inactive_time_progresses_screen.dart'; import 'package:time_progress_tracker/ui/screens/inactive_time_progresses_screen.dart';
import 'package:time_progress_tracker/ui/screens/progress_creation_screen.dart'; import 'package:time_progress_tracker/ui/screens/progress_creation_screen.dart';
import 'package:time_progress_tracker/ui/screens/settings_screen.dart'; import 'package:time_progress_tracker/ui/screens/settings_screen.dart';
import 'package:time_progress_tracker/utils/color_utils.dart'; import 'package:time_progress_tracker/utils/theme_utils.dart';
import 'package:time_progress_tracker/utils/constants.dart'; import 'package:time_progress_tracker/utils/constants.dart';
class DashboardScreen extends StatefulWidget { class DashboardScreen extends StatefulWidget {

View File

@ -12,7 +12,7 @@ import 'package:time_progress_tracker/redux/store_connectors/create_time_progres
import 'package:time_progress_tracker/ui/buttons/create_progress_button.dart'; import 'package:time_progress_tracker/ui/buttons/create_progress_button.dart';
import 'package:time_progress_tracker/ui/buttons/platform_action_button.dart'; import 'package:time_progress_tracker/ui/buttons/platform_action_button.dart';
import 'package:time_progress_tracker/ui/progress/progress_editor_widget.dart'; import 'package:time_progress_tracker/ui/progress/progress_editor_widget.dart';
import 'package:time_progress_tracker/utils/color_utils.dart'; import 'package:time_progress_tracker/utils/theme_utils.dart';
import 'package:time_progress_tracker/utils/helper_functions.dart'; import 'package:time_progress_tracker/utils/helper_functions.dart';
class ProgressCreationScreen extends StatefulWidget { class ProgressCreationScreen extends StatefulWidget {

View File

@ -17,4 +17,5 @@ final CupertinoThemeData cupertinoThemeData = CupertinoThemeData(
scaffoldBackgroundColor: Colors.white, scaffoldBackgroundColor: Colors.white,
); );
final toolbarTextStyle = TextStyle(color: Colors.white, fontSize: 16); final toolbarTextStyle = TextStyle(color: Colors.white, fontSize: 16);
final cupertinoCardTextStyle = TextStyle(color: Colors.white);
final bottomTabsBackground = Colors.indigoAccent; final bottomTabsBackground = Colors.indigoAccent;