add support for network calculation from the calculator
All checks were successful
Release / meta (push) Successful in 1m39s
Release / linux-build (push) Successful in 1m55s
Release / web-build (push) Successful in 3m12s
Release / android-build (push) Successful in 6m48s
Release / release-master (push) Successful in 22s
Release / release-dev (push) Successful in 28s
All checks were successful
Release / meta (push) Successful in 1m39s
Release / linux-build (push) Successful in 1m55s
Release / web-build (push) Successful in 3m12s
Release / android-build (push) Successful in 6m48s
Release / release-master (push) Successful in 22s
Release / release-dev (push) Successful in 28s
This commit is contained in:
@@ -32,6 +32,8 @@ class _LegCardState extends State<LegCard> {
|
||||
final sharedTo = leg.sharedTo;
|
||||
final distanceUnits = context.watch<DistanceUnitService>();
|
||||
final routeSegments = _parseRouteSegments(leg.route);
|
||||
final networkMileage = _sortedNetworkMileage(leg);
|
||||
final countryMileage = _sortedCountryMileage(leg);
|
||||
final textTheme = Theme.of(context).textTheme;
|
||||
return Card(
|
||||
clipBehavior: Clip.antiAlias,
|
||||
@@ -160,10 +162,11 @@ class _LegCardState extends State<LegCard> {
|
||||
),
|
||||
);
|
||||
}
|
||||
if (leg.network.isNotEmpty) {
|
||||
final networkSummary = _networkSummary(leg);
|
||||
if (networkSummary != null) {
|
||||
children.add(
|
||||
Text(
|
||||
leg.network,
|
||||
networkSummary,
|
||||
style: textTheme.labelSmall,
|
||||
),
|
||||
);
|
||||
@@ -285,6 +288,28 @@ class _LegCardState extends State<LegCard> {
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
],
|
||||
if (networkMileage.isNotEmpty || countryMileage.isNotEmpty) ...[
|
||||
Text('Network mileage', style: textTheme.titleSmall),
|
||||
const SizedBox(height: 6),
|
||||
...networkMileage.map(
|
||||
(entry) => Text(
|
||||
'${entry.network}: ${distanceUnits.format(entry.miles, decimals: 1)}',
|
||||
style: textTheme.bodyMedium,
|
||||
),
|
||||
),
|
||||
if (countryMileage.isNotEmpty) ...[
|
||||
const SizedBox(height: 8),
|
||||
Text('Country mileage', style: textTheme.titleSmall),
|
||||
const SizedBox(height: 6),
|
||||
...countryMileage.map(
|
||||
(entry) => Text(
|
||||
'${entry.country}: ${distanceUnits.format(entry.miles, decimals: 1)}',
|
||||
style: textTheme.bodyMedium,
|
||||
),
|
||||
),
|
||||
],
|
||||
const SizedBox(height: 12),
|
||||
],
|
||||
if (routeSegments.isNotEmpty) ...[
|
||||
Text('Route', style: textTheme.titleSmall),
|
||||
const SizedBox(height: 6),
|
||||
@@ -483,6 +508,33 @@ class _LegCardState extends State<LegCard> {
|
||||
List<String> _parseRouteSegments(List<String> route) {
|
||||
return route.map((e) => e.toString()).where((e) => e.trim().isNotEmpty).toList();
|
||||
}
|
||||
|
||||
List<NetworkMileage> _sortedNetworkMileage(Leg leg) {
|
||||
final items = leg.networkMileage
|
||||
.where((entry) => entry.network.trim().isNotEmpty)
|
||||
.toList();
|
||||
items.sort((a, b) => b.miles.compareTo(a.miles));
|
||||
return items;
|
||||
}
|
||||
|
||||
List<CountryMileage> _sortedCountryMileage(Leg leg) {
|
||||
final items = leg.countryMileage
|
||||
.where((entry) => entry.country.trim().isNotEmpty)
|
||||
.toList();
|
||||
items.sort((a, b) => b.miles.compareTo(a.miles));
|
||||
return items;
|
||||
}
|
||||
|
||||
String? _networkSummary(Leg leg) {
|
||||
final networks = _sortedNetworkMileage(leg);
|
||||
if (networks.isNotEmpty) {
|
||||
return networks.map((entry) => entry.network).join(', ');
|
||||
}
|
||||
if (leg.network.trim().isNotEmpty) {
|
||||
return leg.network;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
class _SharedIcons extends StatelessWidget {
|
||||
|
||||
Reference in New Issue
Block a user