Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
3 Schweinehunde
Encrateia
Commits
0027fad5
Commit
0027fad5
authored
May 08, 2020
by
Administrator
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
swiping between laps for lap detail views
parent
8a99595d
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
152 additions
and
48 deletions
+152
-48
lib/screens/show_lap_detail_screen.dart
lib/screens/show_lap_detail_screen.dart
+42
-6
lib/screens/show_lap_screen.dart
lib/screens/show_lap_screen.dart
+16
-13
lib/widgets/lap_widgets/lap_form_power_widget.dart
lib/widgets/lap_widgets/lap_form_power_widget.dart
+6
-0
lib/widgets/lap_widgets/lap_ground_time_widget.dart
lib/widgets/lap_widgets/lap_ground_time_widget.dart
+6
-0
lib/widgets/lap_widgets/lap_heart_rate_widget.dart
lib/widgets/lap_widgets/lap_heart_rate_widget.dart
+6
-0
lib/widgets/lap_widgets/lap_leg_spring_stiffness_widget.dart
lib/widgets/lap_widgets/lap_leg_spring_stiffness_widget.dart
+6
-0
lib/widgets/lap_widgets/lap_power_duration_widget.dart
lib/widgets/lap_widgets/lap_power_duration_widget.dart
+46
-27
lib/widgets/lap_widgets/lap_power_widget.dart
lib/widgets/lap_widgets/lap_power_widget.dart
+6
-0
lib/widgets/lap_widgets/lap_stryd_cadence_widget.dart
lib/widgets/lap_widgets/lap_stryd_cadence_widget.dart
+6
-0
lib/widgets/lap_widgets/lap_vertical_oscillation_widget.dart
lib/widgets/lap_widgets/lap_vertical_oscillation_widget.dart
+6
-0
lib/widgets/laps_list_widget.dart
lib/widgets/laps_list_widget.dart
+6
-2
No files found.
lib/screens/show_lap_detail_screen.dart
View file @
0027fad5
import
'package:encrateia/models/lap.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/rendering.dart'
;
class
ShowLapDetailScreen
extends
State
less
Widget
{
class
ShowLapDetailScreen
extends
State
ful
Widget
{
final
Lap
lap
;
final
Widget
widget
;
final
List
<
Lap
>
laps
;
final
Function
({
Lap
lap
})
nextWidget
;
final
String
title
;
const
ShowLapDetailScreen
({
Key
key
,
@required
this
.
lap
,
this
.
widget
,
this
.
title
,
@required
this
.
laps
,
@required
this
.
nextWidget
,
@required
this
.
title
,
})
:
super
(
key:
key
);
@override
_ShowLapDetailScreenState
createState
()
=>
_ShowLapDetailScreenState
();
}
class
_ShowLapDetailScreenState
extends
State
<
ShowLapDetailScreen
>
{
Lap
currentLap
;
double
dragAmount
=
0
;
@override
void
initState
()
{
currentLap
=
widget
.
lap
;
super
.
initState
();
}
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
'Lap
${
l
ap.index.toString()}
:
$title
'
,
'Lap
${
currentL
ap.index.toString()}
:
$
{widget.
title
}
'
,
overflow:
TextOverflow
.
ellipsis
,
),
),
body:
widget
,
body:
GestureDetector
(
child:
widget
.
nextWidget
(
lap:
currentLap
),
onHorizontalDragUpdate:
(
details
)
{
dragAmount
=
dragAmount
+
details
.
primaryDelta
;
},
onHorizontalDragEnd:
(
details
)
{
if
(
dragAmount
<
-
50
)
{
dragAmount
=
0
;
if
(
currentLap
.
index
<
widget
.
laps
.
length
)
{
setState
(()
=>
currentLap
=
widget
.
laps
[
currentLap
.
index
-
1
+
1
]);
}
}
else
if
(
dragAmount
>
50
)
{
dragAmount
=
0
;
if
(
currentLap
.
index
>
1
)
{
setState
(
()
=>
currentLap
=
widget
.
laps
[
currentLap
.
index
-
1
-
1
]);
}
}
},
),
);
}
}
lib/screens/show_lap_screen.dart
View file @
0027fad5
...
...
@@ -16,10 +16,12 @@ import 'package:encrateia/utils/icon_utils.dart';
class
ShowLapScreen
extends
StatelessWidget
{
final
Lap
lap
;
final
List
<
Lap
>
laps
;
const
ShowLapScreen
({
Key
key
,
this
.
lap
,
@required
this
.
lap
,
@required
this
.
laps
,
})
:
super
(
key:
key
);
@override
...
...
@@ -45,70 +47,70 @@ class ShowLapScreen extends StatelessWidget {
color:
MyColor
.
navigate
,
icon:
MyIcon
.
metaData
,
context:
context
,
nextWidget:
LapOverviewWidget
(
lap:
lap
),
nextWidget:
({
lap
})
=>
LapOverviewWidget
(
lap:
lap
),
),
navigationButton
(
title:
"Heart Rate"
,
color:
MyColor
.
navigate
,
icon:
MyIcon
.
heartRate
,
context:
context
,
nextWidget:
LapHeartRateWidget
(
lap:
lap
),
nextWidget:
({
lap
})
=>
LapHeartRateWidget
(
lap:
lap
),
),
navigationButton
(
title:
"Power"
,
color:
MyColor
.
navigate
,
icon:
MyIcon
.
power
,
context:
context
,
nextWidget:
LapPowerWidget
(
lap:
lap
),
nextWidget:
({
lap
})
=>
LapPowerWidget
(
lap:
lap
),
),
navigationButton
(
title:
"Power Duration"
,
color:
MyColor
.
navigate
,
icon:
MyIcon
.
powerDuration
,
context:
context
,
nextWidget:
LapPowerDurationWidget
(
lap:
lap
),
nextWidget:
({
lap
})
=>
LapPowerDurationWidget
(
lap:
lap
),
),
navigationButton
(
title:
"Ground Time"
,
color:
MyColor
.
navigate
,
icon:
MyIcon
.
groundTime
,
context:
context
,
nextWidget:
LapGroundTimeWidget
(
lap:
lap
),
nextWidget:
({
lap
})
=>
LapGroundTimeWidget
(
lap:
lap
),
),
navigationButton
(
title:
"Leg Spring Stiffness"
,
color:
MyColor
.
navigate
,
icon:
MyIcon
.
legSpringStiffness
,
context:
context
,
nextWidget:
LapLegSpringStiffnessWidget
(
lap:
lap
),
nextWidget:
({
lap
})
=>
LapLegSpringStiffnessWidget
(
lap:
lap
),
),
navigationButton
(
title:
"Form Power"
,
color:
MyColor
.
navigate
,
icon:
MyIcon
.
formPower
,
context:
context
,
nextWidget:
LapFormPowerWidget
(
lap:
lap
),
nextWidget:
({
lap
})
=>
LapFormPowerWidget
(
lap:
lap
),
),
navigationButton
(
title:
"Cadence"
,
color:
MyColor
.
navigate
,
icon:
MyIcon
.
cadence
,
context:
context
,
nextWidget:
LapStrydCadenceWidget
(
lap:
lap
),
nextWidget:
({
lap
})
=>
LapStrydCadenceWidget
(
lap:
lap
),
),
navigationButton
(
title:
"Vertical Oscillation"
,
color:
MyColor
.
navigate
,
icon:
MyIcon
.
verticalOscillation
,
context:
context
,
nextWidget:
LapVerticalOscillationWidget
(
lap:
lap
),
nextWidget:
({
lap
})
=>
LapVerticalOscillationWidget
(
lap:
lap
),
),
navigationButton
(
title:
"Metadata"
,
color:
MyColor
.
navigate
,
icon:
MyIcon
.
metaData
,
context:
context
,
nextWidget:
LapMetadataWidget
(
lap:
lap
),
nextWidget:
({
lap
})
=>
LapMetadataWidget
(
lap:
lap
),
),
],
);
...
...
@@ -118,7 +120,7 @@ class ShowLapScreen extends StatelessWidget {
navigationButton
({
@required
BuildContext
context
,
@required
Widget
nextWidget
,
@required
Function
({
Lap
lap
})
nextWidget
,
@required
Widget
icon
,
@required
String
title
,
@required
Color
color
,
...
...
@@ -134,7 +136,8 @@ class ShowLapScreen extends StatelessWidget {
MaterialPageRoute
(
builder:
(
context
)
=>
ShowLapDetailScreen
(
lap:
lap
,
widget:
nextWidget
,
laps:
laps
,
nextWidget:
nextWidget
,
title:
title
,
),
),
...
...
lib/widgets/lap_widgets/lap_form_power_widget.dart
View file @
0027fad5
...
...
@@ -25,6 +25,12 @@ class _LapFormPowerWidgetState extends State<LapFormPowerWidget> {
super
.
initState
();
}
@override
void
didUpdateWidget
(
oldWidget
)
{
getData
();
super
.
didUpdateWidget
(
oldWidget
);
}
@override
Widget
build
(
context
)
{
if
(
records
.
length
>
0
)
{
...
...
lib/widgets/lap_widgets/lap_ground_time_widget.dart
View file @
0027fad5
...
...
@@ -25,6 +25,12 @@ class _LapGroundTimeWidgetState extends State<LapGroundTimeWidget> {
super
.
initState
();
}
@override
void
didUpdateWidget
(
oldWidget
)
{
getData
();
super
.
didUpdateWidget
(
oldWidget
);
}
@override
Widget
build
(
context
)
{
if
(
records
.
length
>
0
)
{
...
...
lib/widgets/lap_widgets/lap_heart_rate_widget.dart
View file @
0027fad5
...
...
@@ -28,6 +28,12 @@ class _LapHeartRateWidgetState extends State<LapHeartRateWidget> {
super
.
initState
();
}
@override
void
didUpdateWidget
(
oldWidget
)
{
getData
();
super
.
didUpdateWidget
(
oldWidget
);
}
@override
Widget
build
(
context
)
{
if
(
records
.
length
>
0
)
{
...
...
lib/widgets/lap_widgets/lap_leg_spring_stiffness_widget.dart
View file @
0027fad5
...
...
@@ -27,6 +27,12 @@ class _LapLegSpringStiffnessWidgetState
super
.
initState
();
}
@override
void
didUpdateWidget
(
oldWidget
)
{
getData
();
super
.
didUpdateWidget
(
oldWidget
);
}
@override
Widget
build
(
context
)
{
if
(
records
.
length
>
0
)
{
...
...
lib/widgets/lap_widgets/lap_power_duration_widget.dart
View file @
0027fad5
import
'package:flutter/material.dart'
;
import
'package:encrateia/models/lap.dart'
;
import
'package:encrateia/models/event.dart'
;
import
'
..
/charts/power_duration_chart.dart'
;
import
'
package:encrateia/widgets
/charts/power_duration_chart.dart'
;
class
LapPowerDurationWidget
extends
State
less
Widget
{
class
LapPowerDurationWidget
extends
State
ful
Widget
{
final
Lap
lap
;
LapPowerDurationWidget
({
this
.
lap
});
LapPowerDurationWidget
({
@required
this
.
lap
});
@override
_LapPowerDurationWidgetState
createState
()
=>
_LapPowerDurationWidgetState
();
}
class
_LapPowerDurationWidgetState
extends
State
<
LapPowerDurationWidget
>
{
List
<
Event
>
records
=
[];
@override
void
initState
()
{
getData
();
super
.
initState
();
}
@override
void
didUpdateWidget
(
oldWidget
)
{
getData
();
super
.
didUpdateWidget
(
oldWidget
);
}
@override
Widget
build
(
context
)
{
return
FutureBuilder
<
List
<
Event
>>(
future:
lap
.
records
,
builder:
(
BuildContext
context
,
AsyncSnapshot
<
List
<
Event
>>
snapshot
)
{
if
(
snapshot
.
hasData
)
{
var
powerRecords
=
snapshot
.
data
.
where
((
value
)
=>
value
.
db
.
power
!=
null
&&
value
.
db
.
power
>
100
)
.
toList
();
if
(
powerRecords
.
length
>
0
)
{
return
SingleChildScrollView
(
child:
PowerDurationChart
(
records:
powerRecords
),
);
}
else
{
return
Center
(
child:
Text
(
"No power data available."
),
);
}
}
else
{
return
Center
(
child:
Text
(
"Loading"
),
);
}
},
);
if
(
records
.
length
>
0
)
{
var
powerRecords
=
records
.
where
((
value
)
=>
value
.
db
.
power
!=
null
&&
value
.
db
.
power
>
100
)
.
toList
();
if
(
powerRecords
.
length
>
0
)
{
return
SingleChildScrollView
(
child:
PowerDurationChart
(
records:
powerRecords
),
);
}
else
{
return
Center
(
child:
Text
(
"No power data available."
),
);
}
}
else
{
return
Center
(
child:
Text
(
"Loading"
),
);
}
}
getData
()
async
{
records
=
await
widget
.
lap
.
records
;
setState
(()
{}
);
}
}
lib/widgets/lap_widgets/lap_power_widget.dart
View file @
0027fad5
...
...
@@ -31,6 +31,12 @@ class _LapPowerWidgetState extends State<LapPowerWidget> {
super
.
initState
();
}
@override
void
didUpdateWidget
(
oldWidget
)
{
getData
();
super
.
didUpdateWidget
(
oldWidget
);
}
@override
Widget
build
(
context
)
{
if
(
records
.
length
>
0
)
{
...
...
lib/widgets/lap_widgets/lap_stryd_cadence_widget.dart
View file @
0027fad5
...
...
@@ -25,6 +25,12 @@ class _LapStrydCadenceWidgetState extends State<LapStrydCadenceWidget> {
super
.
initState
();
}
@override
void
didUpdateWidget
(
oldWidget
)
{
getData
();
super
.
didUpdateWidget
(
oldWidget
);
}
@override
Widget
build
(
context
)
{
if
(
records
.
length
>
0
)
{
...
...
lib/widgets/lap_widgets/lap_vertical_oscillation_widget.dart
View file @
0027fad5
...
...
@@ -27,6 +27,12 @@ class _LapVerticalOscillationWidgetState
super
.
initState
();
}
@override
void
didUpdateWidget
(
oldWidget
)
{
getData
();
super
.
didUpdateWidget
(
oldWidget
);
}
@override
Widget
build
(
context
)
{
if
(
records
.
length
>
0
)
{
...
...
lib/widgets/laps_list_widget.dart
View file @
0027fad5
...
...
@@ -16,6 +16,7 @@ class LapsListWidget extends StatelessWidget {
future:
Lap
.
by
(
activity:
activity
),
builder:
(
BuildContext
context
,
AsyncSnapshot
<
List
<
Lap
>>
snapshot
)
{
if
(
snapshot
.
hasData
)
{
List
<
Lap
>
laps
=
snapshot
.
data
;
return
SingleChildScrollView
(
child:
DataTable
(
dataRowHeight:
kMinInteractiveDimension
*
0.60
,
...
...
@@ -48,7 +49,7 @@ class LapsListWidget extends StatelessWidget {
numeric:
true
,
),
],
rows:
sn
aps
hot
.
data
.
map
((
Lap
lap
)
{
rows:
l
aps
.
map
((
Lap
lap
)
{
return
DataRow
(
key:
Key
(
lap
.
db
.
id
.
toString
()),
onSelectChanged:
(
bool
selected
)
{
...
...
@@ -56,7 +57,10 @@ class LapsListWidget extends StatelessWidget {
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
ShowLapScreen
(
lap:
lap
),
builder:
(
context
)
=>
ShowLapScreen
(
lap:
lap
,
laps:
laps
,
),
),
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment