diff --git a/lib/screens/nearby_screen.dart b/lib/screens/nearby_screen.dart index 2d4782d..39cf3b9 100644 --- a/lib/screens/nearby_screen.dart +++ b/lib/screens/nearby_screen.dart @@ -26,14 +26,9 @@ class NearbyScreen extends StatefulWidget { } class _NearbyStopGroup { - const _NearbyStopGroup({ - required this.stopName, - required this.distanceMeters, - required this.routes, - }); + const _NearbyStopGroup({required this.stopName, required this.routes}); final String stopName; - final double distanceMeters; final List routes; } @@ -337,14 +332,12 @@ class _NearbyScreenState extends State { /// available. List<_NearbyStopGroup> _buildGroups(String locale) { final groupOrder = []; - final groupDistances = {}; final groupRoutes = >{}; for (final item in _results) { final name = item.stop.stopName; if (!groupRoutes.containsKey(name)) { groupOrder.add(name); - groupDistances[name] = item.distanceMeters; groupRoutes[name] = []; } groupRoutes[name]!.add(item); @@ -354,7 +347,6 @@ class _NearbyScreenState extends State { for (final name in groupOrder) _NearbyStopGroup( stopName: name, - distanceMeters: groupDistances[name]!, // Sort first: the labeller only appends a direction ordinal when two // rows would otherwise read alike, so it has to see the final order. routes: labelNearbyRouteDirections( @@ -429,6 +421,13 @@ class _NearbyScreenState extends State { ], ), ), + const SizedBox(width: 8), + Chip( + avatar: const Icon(Icons.directions_walk_rounded, size: 16), + label: Text(formatDistance(item.distanceMeters)), + visualDensity: VisualDensity.compact, + padding: EdgeInsets.zero, + ), Icon( Icons.chevron_right_rounded, size: 20, @@ -580,12 +579,11 @@ class _NearbyScreenState extends State { 16, ), ), - child: Text( - formatDistance( - group.distanceMeters, - ), - textAlign: TextAlign.center, - style: theme.textTheme.labelMedium, + child: Icon( + Icons.directions_bus_rounded, + color: theme + .colorScheme + .onPrimaryContainer, ), ), const SizedBox(width: 14), diff --git a/test/nearby_direction_test.dart b/test/nearby_direction_test.dart index dbcbbc5..84355c6 100644 --- a/test/nearby_direction_test.dart +++ b/test/nearby_direction_test.dart @@ -301,6 +301,9 @@ void main() { expect(find.text('台北市'), findsNWidgets(2)); expect(find.text('往撫遠街'), findsOneWidget); expect(find.text('往捷運松山站'), findsOneWidget); + // Same-name stops on opposite sides keep their own walking distance. + expect(find.text('20m'), findsOneWidget); + expect(find.text('30m'), findsOneWidget); } finally { await tester.pumpWidget(const SizedBox.shrink()); debugDefaultTargetPlatformOverride = null;