consolidate parsing in single parseMarkerText in map_screen.dart

This commit is contained in:
ericz
2026-04-26 01:23:33 +02:00
parent 7db3a12723
commit 94d9afe8b1
3 changed files with 33 additions and 92 deletions
+3 -32
View File
@@ -9,7 +9,6 @@ import 'package:meshcore_open/screens/path_trace_map.dart';
import 'package:provider/provider.dart';
import '../utils/platform_info.dart';
import 'package:latlong2/latlong.dart';
import '../connector/meshcore_connector.dart';
import '../connector/meshcore_protocol.dart';
@@ -1589,7 +1588,7 @@ class _MessageBubble extends StatelessWidget {
final isOutgoing = message.isOutgoing;
final colorScheme = Theme.of(context).colorScheme;
final gifId = GifHelper.parseGif(message.text);
final poi = _parsePoiMessage(message.text);
final poi = parseMarkerText(message.text);
final isFailed = message.status == MessageStatus.failed;
final bubbleColor = isFailed
? colorScheme.errorContainer
@@ -1863,23 +1862,9 @@ class _MessageBubble extends StatelessWidget {
);
}
_PoiInfo? _parsePoiMessage(String text) {
final trimmed = text.trim();
final match = RegExp(
r'^m:([\-0-9.]+),([\-0-9.]+)\|([^|]*)\|(.*)$',
).firstMatch(trimmed);
if (match == null) return null;
final lat = double.tryParse(match.group(1) ?? '');
final lon = double.tryParse(match.group(2) ?? '');
if (lat == null || lon == null) return null;
final label = match.group(3) ?? '';
final flags = match.group(4) ?? '';
return _PoiInfo(lat: lat, lon: lon, label: label, flags: flags);
}
Widget _buildPoiMessage(
BuildContext context,
_PoiInfo poi,
MarkerPayload poi,
Color textColor,
Color metaColor,
double textScale,
@@ -1907,7 +1892,7 @@ class _MessageBubble extends StatelessWidget {
context,
MaterialPageRoute(
builder: (context) => MapScreen(
highlightPosition: LatLng(poi.lat, poi.lon),
highlightPosition: poi.position,
highlightLabel: poi.label,
highlightMarkerKey: key,
),
@@ -2090,17 +2075,3 @@ class _MessageBubble extends StatelessWidget {
return '$hour:$minute';
}
}
class _PoiInfo {
final double lat;
final double lon;
final String label;
final String flags;
const _PoiInfo({
required this.lat,
required this.lon,
required this.label,
required this.flags,
});
}