Created ActiveTimeProgressesScreen and migrated ListView and Item to Platform Specific
Signed-off-by: Andreas Fahrecker <AndreasFahrecker@gmail.com>
This commit is contained in:
parent
ed5d2b92f7
commit
b813481369
31
lib/screens/active_time_progresses_screen.dart
Normal file
31
lib/screens/active_time_progresses_screen.dart
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
import 'package:time_progress_tracker/helper_functions.dart';
|
||||||
|
import 'package:time_progress_tracker/models/time_progress.dart';
|
||||||
|
import 'package:time_progress_tracker/widgets/progress_list_view/progress_list_view.dart';
|
||||||
|
import 'package:time_progress_tracker/widgets/store_connectors/settings_store_connector.dart';
|
||||||
|
import 'package:time_progress_tracker/widgets/store_connectors/time_progress_list_store_connector.dart';
|
||||||
|
|
||||||
|
class ActiveTimeProgressesScreen extends StatelessWidget {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return SettingsStoreConnector(loadedBuilder: (context, settingsVm) {
|
||||||
|
return TimeProgressListStoreConnector(loadedBuilder: (context, tpListVm) {
|
||||||
|
List<TimeProgress> activeTpList =
|
||||||
|
selectActiveProgresses(tpListVm.tpList);
|
||||||
|
if (activeTpList.length < 1)
|
||||||
|
return Container(
|
||||||
|
padding: EdgeInsets.all(16),
|
||||||
|
child: Center(
|
||||||
|
child: Text(
|
||||||
|
"You don't have any active time progress, that are tracked."),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
return ProgressListView(
|
||||||
|
timeProgressList: activeTpList,
|
||||||
|
doneColor: settingsVm.appSettings.doneColor,
|
||||||
|
leftColor: settingsVm.appSettings.leftColor,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -1,8 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
|
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
|
||||||
|
import 'package:time_progress_tracker/screens/active_time_progresses_screen.dart';
|
||||||
import 'package:time_progress_tracker/utils/color_utils.dart';
|
import 'package:time_progress_tracker/utils/color_utils.dart';
|
||||||
import 'package:time_progress_tracker/widgets/home/tabs/home_active_progresses_tab.dart';
|
import 'package:time_progress_tracker/utils/constants.dart';
|
||||||
import 'package:time_progress_tracker/widgets/home/tabs/home_inactive_progresses_tab.dart';
|
import 'package:time_progress_tracker/widgets/home/tabs/home_inactive_progresses_tab.dart';
|
||||||
import 'package:time_progress_tracker/widgets/home/tabs/home_settings_tab.dart';
|
import 'package:time_progress_tracker/widgets/home/tabs/home_settings_tab.dart';
|
||||||
|
|
||||||
@ -13,7 +14,7 @@ class DashboardScreen extends StatefulWidget {
|
|||||||
|
|
||||||
class _DashboardScreenState extends State<DashboardScreen> {
|
class _DashboardScreenState extends State<DashboardScreen> {
|
||||||
int _tabSelectedIndex = 0;
|
int _tabSelectedIndex = 0;
|
||||||
String title = "Active Progresses";
|
String title = txtActiveProgressesScreen;
|
||||||
|
|
||||||
Widget _renderTabScreen(int tabIndex) {
|
Widget _renderTabScreen(int tabIndex) {
|
||||||
switch (tabIndex) {
|
switch (tabIndex) {
|
||||||
@ -22,7 +23,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
|
|||||||
case 2:
|
case 2:
|
||||||
return HomeSettingsTab();
|
return HomeSettingsTab();
|
||||||
default:
|
default:
|
||||||
return HomeActiveProgressesTab();
|
return ActiveTimeProgressesScreen();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,7 +34,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
|
|||||||
case 2:
|
case 2:
|
||||||
return "Settings";
|
return "Settings";
|
||||||
default:
|
default:
|
||||||
return "ActiveProgresses";
|
return txtActiveProgressesScreen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,7 +64,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
|
|||||||
items: [
|
items: [
|
||||||
BottomNavigationBarItem(
|
BottomNavigationBarItem(
|
||||||
icon: Icon(Icons.alarm, color: Colors.grey),
|
icon: Icon(Icons.alarm, color: Colors.grey),
|
||||||
label: "Active Progresses",
|
label: txtActiveProgressesScreen,
|
||||||
activeIcon: Icon(Icons.alarm, color: Colors.white),
|
activeIcon: Icon(Icons.alarm, color: Colors.white),
|
||||||
),
|
),
|
||||||
BottomNavigationBarItem(
|
BottomNavigationBarItem(
|
||||||
|
1
lib/utils/constants.dart
Normal file
1
lib/utils/constants.dart
Normal file
@ -0,0 +1 @@
|
|||||||
|
const txtActiveProgressesScreen = "Active Progresses";
|
@ -1,3 +1,6 @@
|
|||||||
|
import 'dart:io' show Platform;
|
||||||
|
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.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';
|
||||||
@ -14,11 +17,11 @@ class ProgressListTileStrings {
|
|||||||
"Ended ${tp.daysSinceEnd()} Days ago.";
|
"Ended ${tp.daysSinceEnd()} Days ago.";
|
||||||
}
|
}
|
||||||
|
|
||||||
class ProgressListTile extends StatelessWidget {
|
class ProgressListItem extends StatelessWidget {
|
||||||
final TimeProgress timeProgress;
|
final TimeProgress timeProgress;
|
||||||
final Color doneColor, leftColor;
|
final Color doneColor, leftColor;
|
||||||
|
|
||||||
ProgressListTile({
|
ProgressListItem({
|
||||||
@required this.timeProgress,
|
@required this.timeProgress,
|
||||||
@required this.doneColor,
|
@required this.doneColor,
|
||||||
@required this.leftColor,
|
@required this.leftColor,
|
||||||
@ -43,9 +46,26 @@ class ProgressListTile extends StatelessWidget {
|
|||||||
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);
|
||||||
|
|
||||||
|
if (Platform.isIOS)
|
||||||
|
return CupertinoButton(
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.grey,
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
),
|
||||||
|
padding: EdgeInsets.fromLTRB(15, 15, 5, 5),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
titleText,
|
||||||
|
_renderSubtitle(context),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onPressed: _onTileTap);
|
||||||
return ListTile(
|
return ListTile(
|
||||||
title: Text(timeProgress.name),
|
title: titleText,
|
||||||
subtitle: _renderSubtitle(context),
|
subtitle: _renderSubtitle(context),
|
||||||
onTap: _onTileTap,
|
onTap: _onTileTap,
|
||||||
);
|
);
|
@ -1,6 +1,9 @@
|
|||||||
|
import 'dart:io' show Platform;
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:time_progress_tracker/models/time_progress.dart';
|
import 'package:time_progress_tracker/models/time_progress.dart';
|
||||||
import 'package:time_progress_tracker/widgets/progress_list_view/progress_list_tile.dart';
|
import 'package:time_progress_tracker/widgets/progress_list_view/progress_list_item.dart';
|
||||||
|
|
||||||
class ProgressListView extends StatelessWidget {
|
class ProgressListView extends StatelessWidget {
|
||||||
final List<TimeProgress> timeProgressList;
|
final List<TimeProgress> timeProgressList;
|
||||||
@ -12,15 +15,18 @@ class ProgressListView extends StatelessWidget {
|
|||||||
@required this.leftColor,
|
@required this.leftColor,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Widget _renderListTile(TimeProgress tp) {
|
||||||
|
ProgressListItem listTile = ProgressListItem(
|
||||||
|
timeProgress: tp, doneColor: doneColor, leftColor: leftColor);
|
||||||
|
if (Platform.isIOS) return listTile;
|
||||||
|
return Card(
|
||||||
|
child: listTile,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
List<Widget> _renderListViewChildren() {
|
List<Widget> _renderListViewChildren() {
|
||||||
return timeProgressList
|
return timeProgressList
|
||||||
.map((e) => Card(
|
.map((e) => _renderListTile(e))
|
||||||
child: ProgressListTile(
|
|
||||||
timeProgress: e,
|
|
||||||
doneColor: doneColor,
|
|
||||||
leftColor: leftColor,
|
|
||||||
),
|
|
||||||
))
|
|
||||||
.toList(growable: false);
|
.toList(growable: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ import 'package:flutter_test/flutter_test.dart';
|
|||||||
import 'package:percent_indicator/linear_percent_indicator.dart';
|
import 'package:percent_indicator/linear_percent_indicator.dart';
|
||||||
import 'package:time_progress_tracker/models/app_settings.dart';
|
import 'package:time_progress_tracker/models/app_settings.dart';
|
||||||
import 'package:time_progress_tracker/models/time_progress.dart';
|
import 'package:time_progress_tracker/models/time_progress.dart';
|
||||||
import 'package:time_progress_tracker/widgets/progress_list_view/progress_list_tile.dart';
|
import 'package:time_progress_tracker/widgets/progress_list_view/progress_list_item.dart';
|
||||||
import 'package:time_progress_tracker/widgets/progress_list_view/progress_list_view.dart';
|
import 'package:time_progress_tracker/widgets/progress_list_view/progress_list_view.dart';
|
||||||
|
|
||||||
import 'MaterialTesterWidget.dart';
|
import 'MaterialTesterWidget.dart';
|
||||||
@ -26,7 +26,7 @@ void main() {
|
|||||||
testWidgets("Progress List Tile with currently active progress works",
|
testWidgets("Progress List Tile with currently active progress works",
|
||||||
(WidgetTester tester) async {
|
(WidgetTester tester) async {
|
||||||
await tester.pumpWidget(MaterialTesterWidget(
|
await tester.pumpWidget(MaterialTesterWidget(
|
||||||
widget: ProgressListTile(
|
widget: ProgressListItem(
|
||||||
timeProgress: _activeProgress,
|
timeProgress: _activeProgress,
|
||||||
doneColor: _defaultAppSettings.doneColor,
|
doneColor: _defaultAppSettings.doneColor,
|
||||||
leftColor: _defaultAppSettings.leftColor,
|
leftColor: _defaultAppSettings.leftColor,
|
||||||
@ -53,7 +53,7 @@ void main() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
await tester.pumpWidget(MaterialTesterWidget(
|
await tester.pumpWidget(MaterialTesterWidget(
|
||||||
widget: ProgressListTile(
|
widget: ProgressListItem(
|
||||||
timeProgress: futureProgress,
|
timeProgress: futureProgress,
|
||||||
doneColor: _defaultAppSettings.doneColor,
|
doneColor: _defaultAppSettings.doneColor,
|
||||||
leftColor: _defaultAppSettings.leftColor,
|
leftColor: _defaultAppSettings.leftColor,
|
||||||
@ -73,7 +73,7 @@ void main() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
await tester.pumpWidget(MaterialTesterWidget(
|
await tester.pumpWidget(MaterialTesterWidget(
|
||||||
widget: ProgressListTile(
|
widget: ProgressListItem(
|
||||||
timeProgress: pastProgress,
|
timeProgress: pastProgress,
|
||||||
doneColor: _defaultAppSettings.doneColor,
|
doneColor: _defaultAppSettings.doneColor,
|
||||||
leftColor: _defaultAppSettings.leftColor,
|
leftColor: _defaultAppSettings.leftColor,
|
||||||
@ -87,7 +87,7 @@ void main() {
|
|||||||
WidgetPredicate getProgressListTilePredicate(
|
WidgetPredicate getProgressListTilePredicate(
|
||||||
TimeProgress tp, AppSettings as) =>
|
TimeProgress tp, AppSettings as) =>
|
||||||
(Widget widget) =>
|
(Widget widget) =>
|
||||||
widget is ProgressListTile &&
|
widget is ProgressListItem &&
|
||||||
widget.timeProgress == tp &&
|
widget.timeProgress == tp &&
|
||||||
widget.doneColor == as.doneColor &&
|
widget.doneColor == as.doneColor &&
|
||||||
widget.leftColor == as.leftColor;
|
widget.leftColor == as.leftColor;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user