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/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/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_settings_tab.dart';
|
||||
|
||||
@ -13,7 +14,7 @@ class DashboardScreen extends StatefulWidget {
|
||||
|
||||
class _DashboardScreenState extends State<DashboardScreen> {
|
||||
int _tabSelectedIndex = 0;
|
||||
String title = "Active Progresses";
|
||||
String title = txtActiveProgressesScreen;
|
||||
|
||||
Widget _renderTabScreen(int tabIndex) {
|
||||
switch (tabIndex) {
|
||||
@ -22,7 +23,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
|
||||
case 2:
|
||||
return HomeSettingsTab();
|
||||
default:
|
||||
return HomeActiveProgressesTab();
|
||||
return ActiveTimeProgressesScreen();
|
||||
}
|
||||
}
|
||||
|
||||
@ -33,7 +34,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
|
||||
case 2:
|
||||
return "Settings";
|
||||
default:
|
||||
return "ActiveProgresses";
|
||||
return txtActiveProgressesScreen;
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,7 +64,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
|
||||
items: [
|
||||
BottomNavigationBarItem(
|
||||
icon: Icon(Icons.alarm, color: Colors.grey),
|
||||
label: "Active Progresses",
|
||||
label: txtActiveProgressesScreen,
|
||||
activeIcon: Icon(Icons.alarm, color: Colors.white),
|
||||
),
|
||||
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:percent_indicator/linear_percent_indicator.dart';
|
||||
import 'package:time_progress_tracker/models/time_progress.dart';
|
||||
@ -14,11 +17,11 @@ class ProgressListTileStrings {
|
||||
"Ended ${tp.daysSinceEnd()} Days ago.";
|
||||
}
|
||||
|
||||
class ProgressListTile extends StatelessWidget {
|
||||
class ProgressListItem extends StatelessWidget {
|
||||
final TimeProgress timeProgress;
|
||||
final Color doneColor, leftColor;
|
||||
|
||||
ProgressListTile({
|
||||
ProgressListItem({
|
||||
@required this.timeProgress,
|
||||
@required this.doneColor,
|
||||
@required this.leftColor,
|
||||
@ -43,9 +46,26 @@ class ProgressListTile extends StatelessWidget {
|
||||
void _onTileTap() =>
|
||||
Navigator.pushNamed(context, ProgressDetailScreen.routeName,
|
||||
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(
|
||||
title: Text(timeProgress.name),
|
||||
title: titleText,
|
||||
subtitle: _renderSubtitle(context),
|
||||
onTap: _onTileTap,
|
||||
);
|
@ -1,6 +1,9 @@
|
||||
import 'dart:io' show Platform;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/widgets.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 {
|
||||
final List<TimeProgress> timeProgressList;
|
||||
@ -12,15 +15,18 @@ class ProgressListView extends StatelessWidget {
|
||||
@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() {
|
||||
return timeProgressList
|
||||
.map((e) => Card(
|
||||
child: ProgressListTile(
|
||||
timeProgress: e,
|
||||
doneColor: doneColor,
|
||||
leftColor: leftColor,
|
||||
),
|
||||
))
|
||||
.map((e) => _renderListTile(e))
|
||||
.toList(growable: false);
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,7 @@ import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:percent_indicator/linear_percent_indicator.dart';
|
||||
import 'package:time_progress_tracker/models/app_settings.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 'MaterialTesterWidget.dart';
|
||||
@ -26,7 +26,7 @@ void main() {
|
||||
testWidgets("Progress List Tile with currently active progress works",
|
||||
(WidgetTester tester) async {
|
||||
await tester.pumpWidget(MaterialTesterWidget(
|
||||
widget: ProgressListTile(
|
||||
widget: ProgressListItem(
|
||||
timeProgress: _activeProgress,
|
||||
doneColor: _defaultAppSettings.doneColor,
|
||||
leftColor: _defaultAppSettings.leftColor,
|
||||
@ -53,7 +53,7 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(MaterialTesterWidget(
|
||||
widget: ProgressListTile(
|
||||
widget: ProgressListItem(
|
||||
timeProgress: futureProgress,
|
||||
doneColor: _defaultAppSettings.doneColor,
|
||||
leftColor: _defaultAppSettings.leftColor,
|
||||
@ -73,7 +73,7 @@ void main() {
|
||||
);
|
||||
|
||||
await tester.pumpWidget(MaterialTesterWidget(
|
||||
widget: ProgressListTile(
|
||||
widget: ProgressListItem(
|
||||
timeProgress: pastProgress,
|
||||
doneColor: _defaultAppSettings.doneColor,
|
||||
leftColor: _defaultAppSettings.leftColor,
|
||||
@ -87,7 +87,7 @@ void main() {
|
||||
WidgetPredicate getProgressListTilePredicate(
|
||||
TimeProgress tp, AppSettings as) =>
|
||||
(Widget widget) =>
|
||||
widget is ProgressListTile &&
|
||||
widget is ProgressListItem &&
|
||||
widget.timeProgress == tp &&
|
||||
widget.doneColor == as.doneColor &&
|
||||
widget.leftColor == as.leftColor;
|
||||
|
Loading…
x
Reference in New Issue
Block a user