Compare commits
6 Commits
main
...
c43316be6d
Author | SHA1 | Date | |
---|---|---|---|
c43316be6d | |||
ddf9e981fd | |||
32432bb138 | |||
df46901f6d | |||
b813481369 | |||
ed5d2b92f7 |
27
lib/app.dart
27
lib/app.dart
@ -1,10 +1,11 @@
|
|||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
|
||||||
import 'package:flutter_redux/flutter_redux.dart';
|
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/dashboard_screen.dart';
|
||||||
import 'package:time_progress_tracker/screens/home_screen.dart';
|
import 'package:time_progress_tracker/utils/color_utils.dart';
|
||||||
import 'package:time_progress_tracker/screens/progress_detail_screen.dart';
|
|
||||||
|
|
||||||
class TimeProgressTrackerApp extends StatelessWidget {
|
class TimeProgressTrackerApp extends StatelessWidget {
|
||||||
static const String name = "Time Progress Tracker";
|
static const String name = "Time Progress Tracker";
|
||||||
@ -20,23 +21,11 @@ class TimeProgressTrackerApp extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return StoreProvider(
|
return StoreProvider(
|
||||||
store: store,
|
store: store,
|
||||||
child: MaterialApp(
|
child: PlatformApp(
|
||||||
title: name,
|
title: name,
|
||||||
theme: ThemeData(
|
home: DashboardScreen(),
|
||||||
primarySwatch: Colors.indigo,
|
material: (_, __) => MaterialAppData(theme: materialThemeData),
|
||||||
accentColor: Colors.indigoAccent,
|
cupertino: (_, __) => CupertinoAppData(theme: cupertinoThemeData),
|
||||||
brightness: Brightness.light,
|
|
||||||
visualDensity: VisualDensity.adaptivePlatformDensity,
|
|
||||||
),
|
|
||||||
initialRoute: HomeScreen.routeName,
|
|
||||||
routes: {
|
|
||||||
HomeScreen.routeName: (BuildContext context) =>
|
|
||||||
HomeScreen(),
|
|
||||||
ProgressDetailScreen.routeName: (BuildContext context) =>
|
|
||||||
ProgressDetailScreen(),
|
|
||||||
ProgressCreationScreen.routeName: (BuildContext context) =>
|
|
||||||
ProgressCreationScreen(),
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
32
lib/screens/active_time_progresses_screen.dart
Normal file
32
lib/screens/active_time_progresses_screen.dart
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
import 'package:flutter_platform_widgets/flutter_platform_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: PlatformText(
|
||||||
|
"You don't have any active time progress, that are tracked."),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
return ProgressListView(
|
||||||
|
timeProgressList: activeTpList,
|
||||||
|
doneColor: settingsVm.appSettings.doneColor,
|
||||||
|
leftColor: settingsVm.appSettings.leftColor,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
83
lib/screens/dashboard_screen.dart
Normal file
83
lib/screens/dashboard_screen.dart
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
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/screens/inactive_time_progresses_screen.dart';
|
||||||
|
import 'package:time_progress_tracker/screens/settings_screen.dart';
|
||||||
|
import 'package:time_progress_tracker/utils/color_utils.dart';
|
||||||
|
import 'package:time_progress_tracker/utils/constants.dart';
|
||||||
|
|
||||||
|
class DashboardScreen extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
State<StatefulWidget> createState() => _DashboardScreenState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _DashboardScreenState extends State<DashboardScreen> {
|
||||||
|
int _tabSelectedIndex = 0;
|
||||||
|
String title = txtActiveProgressesScreen;
|
||||||
|
|
||||||
|
Widget _renderTabScreen(int tabIndex) {
|
||||||
|
switch (tabIndex) {
|
||||||
|
case 1:
|
||||||
|
return InactiveTimeProgressesScreen();
|
||||||
|
case 2:
|
||||||
|
return SettingsScreen();
|
||||||
|
default:
|
||||||
|
return ActiveTimeProgressesScreen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String getScreenTitle(int tabIndex) {
|
||||||
|
switch (tabIndex) {
|
||||||
|
case 1:
|
||||||
|
return txtInactiveProgressesScreen;
|
||||||
|
case 2:
|
||||||
|
return txtSettingsScreen;
|
||||||
|
default:
|
||||||
|
return txtActiveProgressesScreen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return PlatformScaffold(
|
||||||
|
appBar: PlatformAppBar(
|
||||||
|
title: Text(
|
||||||
|
title,
|
||||||
|
style: toolbarTextStyle,
|
||||||
|
),
|
||||||
|
cupertino: (_, __) => CupertinoNavigationBarData(
|
||||||
|
transitionBetweenRoutes: false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
material: (_, __) => MaterialScaffoldData(),
|
||||||
|
body: _renderTabScreen(_tabSelectedIndex),
|
||||||
|
bottomNavBar: PlatformNavBar(
|
||||||
|
currentIndex: _tabSelectedIndex,
|
||||||
|
itemChanged: (index) {
|
||||||
|
setState(() {
|
||||||
|
_tabSelectedIndex = index;
|
||||||
|
title = getScreenTitle(index);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
backgroundColor: bottomTabsBackground,
|
||||||
|
items: [
|
||||||
|
BottomNavigationBarItem(
|
||||||
|
icon: Icon(Icons.alarm, color: Colors.grey),
|
||||||
|
label: txtActiveProgressesScreen,
|
||||||
|
activeIcon: Icon(Icons.alarm, color: Colors.white),
|
||||||
|
),
|
||||||
|
BottomNavigationBarItem(
|
||||||
|
icon: Icon(Icons.alarm_off, color: Colors.grey),
|
||||||
|
label: txtInactiveProgressesScreen,
|
||||||
|
activeIcon: Icon(Icons.alarm_off, color: Colors.white),
|
||||||
|
),
|
||||||
|
BottomNavigationBarItem(
|
||||||
|
icon: Icon(Icons.settings, color: Colors.grey),
|
||||||
|
label: txtSettingsScreen,
|
||||||
|
activeIcon: Icon(Icons.settings, color: Colors.white),
|
||||||
|
)
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
32
lib/screens/inactive_time_progresses_screen.dart
Normal file
32
lib/screens/inactive_time_progresses_screen.dart
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
import 'package:flutter_platform_widgets/flutter_platform_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 InactiveTimeProgressesScreen extends StatelessWidget {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return SettingsStoreConnector(loadedBuilder: (context, settingsVm) {
|
||||||
|
return TimeProgressListStoreConnector(loadedBuilder: (context, tpListVm) {
|
||||||
|
List<TimeProgress> activeTpList =
|
||||||
|
selectInactiveProgresses(tpListVm.tpList);
|
||||||
|
if (activeTpList.length < 1)
|
||||||
|
return Container(
|
||||||
|
padding: EdgeInsets.all(16),
|
||||||
|
child: Center(
|
||||||
|
child: PlatformText(
|
||||||
|
"You don't have any inactive time progress, that are tracked."),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
return ProgressListView(
|
||||||
|
timeProgressList: activeTpList,
|
||||||
|
doneColor: settingsVm.appSettings.doneColor,
|
||||||
|
leftColor: settingsVm.appSettings.leftColor,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
89
lib/screens/settings_screen.dart
Normal file
89
lib/screens/settings_screen.dart
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
|
||||||
|
import 'package:time_progress_tracker/app.dart';
|
||||||
|
import 'package:time_progress_tracker/widgets/buttons/color_picker_btn.dart';
|
||||||
|
import 'package:time_progress_tracker/widgets/home/tabs/settings/duration_settings_widget.dart';
|
||||||
|
import 'package:time_progress_tracker/widgets/store_connectors/settings_store_connector.dart';
|
||||||
|
|
||||||
|
class SettingsScreen extends StatelessWidget {
|
||||||
|
Widget _renderColorSettings(
|
||||||
|
BuildContext context, SettingsViewModel settingsVm) {
|
||||||
|
ThemeData appTheme = Theme.of(context);
|
||||||
|
return Expanded(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: PlatformText(
|
||||||
|
"Color Settings",
|
||||||
|
style: appTheme.primaryTextTheme.caption,
|
||||||
|
)),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Padding(
|
||||||
|
padding: EdgeInsets.only(right: 5),
|
||||||
|
child: ColorPickerButton(
|
||||||
|
title: "Done Color",
|
||||||
|
dialogTitle: "Select Done Color",
|
||||||
|
selectedColor: settingsVm.appSettings.doneColor,
|
||||||
|
onColorPicked: settingsVm.updateDoneColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: Padding(
|
||||||
|
padding: EdgeInsets.only(left: 5),
|
||||||
|
child: ColorPickerButton(
|
||||||
|
title: "Left Color",
|
||||||
|
dialogTitle: "Select Left Color",
|
||||||
|
selectedColor: settingsVm.appSettings.leftColor,
|
||||||
|
onColorPicked: settingsVm.updateLeftColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return SettingsStoreConnector(loadedBuilder: (context, settingsVm) {
|
||||||
|
return Container(
|
||||||
|
padding: EdgeInsets.all(16),
|
||||||
|
child: Center(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: _renderColorSettings(context, settingsVm),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: DurationSettingsWidget(
|
||||||
|
duration: settingsVm.appSettings.duration,
|
||||||
|
updateDuration: settingsVm.updateDuration,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Spacer(),
|
||||||
|
Expanded(
|
||||||
|
child: PlatformButton(
|
||||||
|
onPressed: () {
|
||||||
|
showAboutDialog(
|
||||||
|
context: context,
|
||||||
|
applicationName: TimeProgressTrackerApp.name,
|
||||||
|
applicationVersion: "Beta",
|
||||||
|
applicationLegalese:
|
||||||
|
'\u00a9Andreas Fahrecker 2020-2021');
|
||||||
|
},
|
||||||
|
child: Text("About"),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
20
lib/utils/color_utils.dart
Normal file
20
lib/utils/color_utils.dart
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
final ThemeData materialThemeData = ThemeData(
|
||||||
|
primarySwatch: Colors.indigo,
|
||||||
|
scaffoldBackgroundColor: Colors.white,
|
||||||
|
accentColor: Colors.indigo,
|
||||||
|
appBarTheme: AppBarTheme(color: Colors.indigo.shade600),
|
||||||
|
primaryColor: Colors.indigo,
|
||||||
|
secondaryHeaderColor: Colors.indigo,
|
||||||
|
canvasColor: Colors.indigo,
|
||||||
|
backgroundColor: Colors.red,
|
||||||
|
);
|
||||||
|
final CupertinoThemeData cupertinoThemeData = CupertinoThemeData(
|
||||||
|
primaryColor: Colors.indigo,
|
||||||
|
barBackgroundColor: Colors.indigo,
|
||||||
|
scaffoldBackgroundColor: Colors.white,
|
||||||
|
);
|
||||||
|
final toolbarTextStyle = TextStyle(color: Colors.white, fontSize: 16);
|
||||||
|
final bottomTabsBackground = Colors.indigoAccent;
|
3
lib/utils/constants.dart
Normal file
3
lib/utils/constants.dart
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
const txtActiveProgressesScreen = "Active Progresses";
|
||||||
|
const txtInactiveProgressesScreen = "Inactive Progresses";
|
||||||
|
const txtSettingsScreen = "Settings";
|
@ -1,4 +1,8 @@
|
|||||||
|
import 'dart:io' show Platform;
|
||||||
|
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
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/screens/progress_detail_screen.dart';
|
import 'package:time_progress_tracker/screens/progress_detail_screen.dart';
|
||||||
@ -14,11 +18,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,
|
||||||
@ -26,11 +30,11 @@ class ProgressListTile extends StatelessWidget {
|
|||||||
|
|
||||||
Widget _renderSubtitle(BuildContext context) {
|
Widget _renderSubtitle(BuildContext context) {
|
||||||
if (!timeProgress.hasStarted())
|
if (!timeProgress.hasStarted())
|
||||||
return Text(ProgressListTileStrings.startsInDaysString(timeProgress));
|
return PlatformText(ProgressListTileStrings.startsInDaysString(timeProgress));
|
||||||
if (timeProgress.hasEnded())
|
if (timeProgress.hasEnded())
|
||||||
return Text(ProgressListTileStrings.endedDaysAgoString(timeProgress));
|
return PlatformText(ProgressListTileStrings.endedDaysAgoString(timeProgress));
|
||||||
return LinearPercentIndicator(
|
return LinearPercentIndicator(
|
||||||
center: Text(ProgressListTileStrings.percentString(timeProgress)),
|
center: PlatformText(ProgressListTileStrings.percentString(timeProgress)),
|
||||||
percent: timeProgress.percentDone(),
|
percent: timeProgress.percentDone(),
|
||||||
progressColor: doneColor,
|
progressColor: doneColor,
|
||||||
backgroundColor: leftColor,
|
backgroundColor: leftColor,
|
||||||
@ -43,9 +47,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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,6 +127,13 @@ packages:
|
|||||||
url: "git://github.com/yangyxd/flutter_picker.git"
|
url: "git://github.com/yangyxd/flutter_picker.git"
|
||||||
source: git
|
source: git
|
||||||
version: "1.1.5"
|
version: "1.1.5"
|
||||||
|
flutter_platform_widgets:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: flutter_platform_widgets
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "0.80.0"
|
||||||
flutter_redux:
|
flutter_redux:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -375,4 +382,4 @@ packages:
|
|||||||
version: "2.2.1"
|
version: "2.2.1"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.12.0-259.9.beta <3.0.0"
|
dart: ">=2.12.0-259.9.beta <3.0.0"
|
||||||
flutter: ">=1.20.0"
|
flutter: ">=1.20.4"
|
||||||
|
@ -27,14 +27,11 @@ dependencies:
|
|||||||
flutter_redux:
|
flutter_redux:
|
||||||
flutter_picker:
|
flutter_picker:
|
||||||
git: git://github.com/yangyxd/flutter_picker.git
|
git: git://github.com/yangyxd/flutter_picker.git
|
||||||
|
flutter_platform_widgets:
|
||||||
meta:
|
meta:
|
||||||
percent_indicator:
|
percent_indicator:
|
||||||
redux:
|
redux:
|
||||||
shared_preferences:
|
shared_preferences:
|
||||||
|
|
||||||
|
|
||||||
# The following adds the Cupertino Icons font to your application.
|
|
||||||
# Use with the CupertinoIcons class for iOS style icons.
|
|
||||||
cupertino_icons: ^0.1.3
|
cupertino_icons: ^0.1.3
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
@ -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;
|
||||||
|
Reference in New Issue
Block a user