From 0f2d18d6fa797f7d7ed9bb05af4fd3a0f67cc810 Mon Sep 17 00:00:00 2001
From: just_stuff_tm <133525672+just-stuff-tm@users.noreply.github.com>
Date: Sun, 22 Feb 2026 23:39:52 -0500
Subject: [PATCH 1/6] feat: add custom los icon
---
lib/icons/los_icon.dart | 26 ++++++++++
lib/screens/line_of_sight_map_screen.dart | 3 +-
lib/screens/map_screen.dart | 3 +-
pubspec.lock | 60 +++++++++++++++++++----
pubspec.yaml | 1 +
5 files changed, 81 insertions(+), 12 deletions(-)
create mode 100644 lib/icons/los_icon.dart
diff --git a/lib/icons/los_icon.dart b/lib/icons/los_icon.dart
new file mode 100644
index 0000000..309cc7d
--- /dev/null
+++ b/lib/icons/los_icon.dart
@@ -0,0 +1,26 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_svg/flutter_svg.dart';
+
+class LosIcon extends StatelessWidget {
+ final double size;
+ final Color? color;
+
+ const LosIcon({super.key, this.size = 24, this.color});
+
+ @override
+ Widget build(BuildContext context) {
+ final iconColor = color ?? IconTheme.of(context).color ?? Colors.black;
+ return SvgPicture.string(
+ _losSvg,
+ width: size,
+ height: size,
+ colorFilter: ColorFilter.mode(iconColor, BlendMode.srcIn),
+ );
+ }
+}
+
+const String _losSvg = '''
+
+''';
diff --git a/lib/screens/line_of_sight_map_screen.dart b/lib/screens/line_of_sight_map_screen.dart
index b073685..dfda1c1 100644
--- a/lib/screens/line_of_sight_map_screen.dart
+++ b/lib/screens/line_of_sight_map_screen.dart
@@ -16,6 +16,7 @@ import '../services/map_tile_cache_service.dart';
import '../utils/route_transitions.dart';
import '../widgets/app_bar.dart';
import '../widgets/quick_switch_bar.dart';
+import '../icons/los_icon.dart';
class LineOfSightEndpoint {
final String label;
@@ -642,7 +643,7 @@ class _LineOfSightMapScreenState extends State {
alignment: Alignment.centerRight,
child: ElevatedButton.icon(
onPressed: _loading ? null : _runLos,
- icon: const Icon(Icons.visibility),
+ icon: const LosIcon(),
label: Text(context.l10n.losRun),
),
),
diff --git a/lib/screens/map_screen.dart b/lib/screens/map_screen.dart
index 77ec98c..b688a30 100644
--- a/lib/screens/map_screen.dart
+++ b/lib/screens/map_screen.dart
@@ -20,6 +20,7 @@ import '../services/map_tile_cache_service.dart';
import '../utils/contact_search.dart';
import '../utils/route_transitions.dart';
import '../widgets/quick_switch_bar.dart';
+import '../icons/los_icon.dart';
import 'channels_screen.dart';
import 'chat_screen.dart';
import 'contacts_screen.dart';
@@ -280,7 +281,7 @@ class _MapScreenState extends State {
),
if (!_isBuildingPathTrace)
IconButton(
- icon: const Icon(Icons.visibility),
+ icon: const LosIcon(),
onPressed: () {
final candidates = [];
if (connector.selfLatitude != null &&
diff --git a/pubspec.lock b/pubspec.lock
index ed84c40..d9d480f 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -69,10 +69,10 @@ packages:
dependency: "direct main"
description:
name: characters
- sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
+ sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
url: "https://pub.dev"
source: hosted
- version: "1.4.1"
+ version: "1.4.0"
checked_yaml:
dependency: transitive
description:
@@ -347,6 +347,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "8.2.2"
+ flutter_svg:
+ dependency: "direct main"
+ description:
+ name: flutter_svg
+ sha256: "87fbd7c534435b6c5d9d98b01e1fd527812b82e68ddd8bd35fc45ed0fa8f0a95"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.3"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -497,26 +505,26 @@ packages:
dependency: transitive
description:
name: matcher
- sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6"
+ sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
url: "https://pub.dev"
source: hosted
- version: "0.12.18"
+ version: "0.12.17"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
- sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
+ sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev"
source: hosted
- version: "0.13.0"
+ version: "0.11.1"
meta:
dependency: transitive
description:
name: meta
- sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349"
+ sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
url: "https://pub.dev"
source: hosted
- version: "1.18.0"
+ version: "1.17.0"
mgrs_dart:
dependency: transitive
description:
@@ -597,6 +605,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
+ path_parsing:
+ dependency: transitive
+ description:
+ name: path_parsing
+ sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
path_provider:
dependency: "direct main"
description:
@@ -910,10 +926,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636"
+ sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
url: "https://pub.dev"
source: hosted
- version: "0.7.9"
+ version: "0.7.7"
timezone:
dependency: transitive
description:
@@ -1010,6 +1026,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.5.2"
+ vector_graphics:
+ dependency: transitive
+ description:
+ name: vector_graphics
+ sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.19"
+ vector_graphics_codec:
+ dependency: transitive
+ description:
+ name: vector_graphics_codec
+ sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.13"
+ vector_graphics_compiler:
+ dependency: transitive
+ description:
+ name: vector_graphics_compiler
+ sha256: "5a88dd14c0954a5398af544651c7fb51b457a2a556949bfb25369b210ef73a74"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.0"
vector_math:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 3624b93..54e3648 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -60,6 +60,7 @@ dependencies:
gpx: ^2.3.0
path_provider: ^2.1.5
share_plus: ^12.0.1
+ flutter_svg: ^2.0.10
dev_dependencies:
flutter_test:
From 08edd2696ee33a8376d2fb244d3bc6cf0ca6e560 Mon Sep 17 00:00:00 2001
From: just_stuff_tm <133525672+just-stuff-tm@users.noreply.github.com>
Date: Sun, 22 Feb 2026 23:47:49 -0500
Subject: [PATCH 2/6] Revert "feat: add custom los icon"
This reverts commit 0f2d18d6fa797f7d7ed9bb05af4fd3a0f67cc810.
---
lib/icons/los_icon.dart | 26 ----------
lib/screens/line_of_sight_map_screen.dart | 3 +-
lib/screens/map_screen.dart | 3 +-
pubspec.lock | 60 ++++-------------------
pubspec.yaml | 1 -
5 files changed, 12 insertions(+), 81 deletions(-)
delete mode 100644 lib/icons/los_icon.dart
diff --git a/lib/icons/los_icon.dart b/lib/icons/los_icon.dart
deleted file mode 100644
index 309cc7d..0000000
--- a/lib/icons/los_icon.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:flutter_svg/flutter_svg.dart';
-
-class LosIcon extends StatelessWidget {
- final double size;
- final Color? color;
-
- const LosIcon({super.key, this.size = 24, this.color});
-
- @override
- Widget build(BuildContext context) {
- final iconColor = color ?? IconTheme.of(context).color ?? Colors.black;
- return SvgPicture.string(
- _losSvg,
- width: size,
- height: size,
- colorFilter: ColorFilter.mode(iconColor, BlendMode.srcIn),
- );
- }
-}
-
-const String _losSvg = '''
-
-''';
diff --git a/lib/screens/line_of_sight_map_screen.dart b/lib/screens/line_of_sight_map_screen.dart
index dfda1c1..b073685 100644
--- a/lib/screens/line_of_sight_map_screen.dart
+++ b/lib/screens/line_of_sight_map_screen.dart
@@ -16,7 +16,6 @@ import '../services/map_tile_cache_service.dart';
import '../utils/route_transitions.dart';
import '../widgets/app_bar.dart';
import '../widgets/quick_switch_bar.dart';
-import '../icons/los_icon.dart';
class LineOfSightEndpoint {
final String label;
@@ -643,7 +642,7 @@ class _LineOfSightMapScreenState extends State {
alignment: Alignment.centerRight,
child: ElevatedButton.icon(
onPressed: _loading ? null : _runLos,
- icon: const LosIcon(),
+ icon: const Icon(Icons.visibility),
label: Text(context.l10n.losRun),
),
),
diff --git a/lib/screens/map_screen.dart b/lib/screens/map_screen.dart
index b688a30..77ec98c 100644
--- a/lib/screens/map_screen.dart
+++ b/lib/screens/map_screen.dart
@@ -20,7 +20,6 @@ import '../services/map_tile_cache_service.dart';
import '../utils/contact_search.dart';
import '../utils/route_transitions.dart';
import '../widgets/quick_switch_bar.dart';
-import '../icons/los_icon.dart';
import 'channels_screen.dart';
import 'chat_screen.dart';
import 'contacts_screen.dart';
@@ -281,7 +280,7 @@ class _MapScreenState extends State {
),
if (!_isBuildingPathTrace)
IconButton(
- icon: const LosIcon(),
+ icon: const Icon(Icons.visibility),
onPressed: () {
final candidates = [];
if (connector.selfLatitude != null &&
diff --git a/pubspec.lock b/pubspec.lock
index d9d480f..ed84c40 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -69,10 +69,10 @@ packages:
dependency: "direct main"
description:
name: characters
- sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
+ sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
url: "https://pub.dev"
source: hosted
- version: "1.4.0"
+ version: "1.4.1"
checked_yaml:
dependency: transitive
description:
@@ -347,14 +347,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "8.2.2"
- flutter_svg:
- dependency: "direct main"
- description:
- name: flutter_svg
- sha256: "87fbd7c534435b6c5d9d98b01e1fd527812b82e68ddd8bd35fc45ed0fa8f0a95"
- url: "https://pub.dev"
- source: hosted
- version: "2.2.3"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -505,26 +497,26 @@ packages:
dependency: transitive
description:
name: matcher
- sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
+ sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6"
url: "https://pub.dev"
source: hosted
- version: "0.12.17"
+ version: "0.12.18"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
- sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
+ sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
url: "https://pub.dev"
source: hosted
- version: "0.11.1"
+ version: "0.13.0"
meta:
dependency: transitive
description:
name: meta
- sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
+ sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349"
url: "https://pub.dev"
source: hosted
- version: "1.17.0"
+ version: "1.18.0"
mgrs_dart:
dependency: transitive
description:
@@ -605,14 +597,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
- path_parsing:
- dependency: transitive
- description:
- name: path_parsing
- sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
- url: "https://pub.dev"
- source: hosted
- version: "1.1.0"
path_provider:
dependency: "direct main"
description:
@@ -926,10 +910,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
+ sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636"
url: "https://pub.dev"
source: hosted
- version: "0.7.7"
+ version: "0.7.9"
timezone:
dependency: transitive
description:
@@ -1026,30 +1010,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.5.2"
- vector_graphics:
- dependency: transitive
- description:
- name: vector_graphics
- sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6
- url: "https://pub.dev"
- source: hosted
- version: "1.1.19"
- vector_graphics_codec:
- dependency: transitive
- description:
- name: vector_graphics_codec
- sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
- url: "https://pub.dev"
- source: hosted
- version: "1.1.13"
- vector_graphics_compiler:
- dependency: transitive
- description:
- name: vector_graphics_compiler
- sha256: "5a88dd14c0954a5398af544651c7fb51b457a2a556949bfb25369b210ef73a74"
- url: "https://pub.dev"
- source: hosted
- version: "1.2.0"
vector_math:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 54e3648..3624b93 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -60,7 +60,6 @@ dependencies:
gpx: ^2.3.0
path_provider: ^2.1.5
share_plus: ^12.0.1
- flutter_svg: ^2.0.10
dev_dependencies:
flutter_test:
From aaf79c90c91a987527d811a6dfe22142c3d07724 Mon Sep 17 00:00:00 2001
From: just_stuff_tm <133525672+just-stuff-tm@users.noreply.github.com>
Date: Mon, 23 Feb 2026 00:01:13 -0500
Subject: [PATCH 3/6] feat: show los elevation icon
---
lib/icons/los_icon.dart | 80 +++++++++++++++++++++++
lib/screens/line_of_sight_map_screen.dart | 3 +-
lib/screens/map_screen.dart | 3 +-
3 files changed, 84 insertions(+), 2 deletions(-)
create mode 100644 lib/icons/los_icon.dart
diff --git a/lib/icons/los_icon.dart b/lib/icons/los_icon.dart
new file mode 100644
index 0000000..86bef06
--- /dev/null
+++ b/lib/icons/los_icon.dart
@@ -0,0 +1,80 @@
+import 'dart:math' as math;
+
+import 'package:flutter/material.dart';
+
+class LosIcon extends StatelessWidget {
+ final double size;
+ final Color? color;
+
+ const LosIcon({
+ super.key,
+ this.size = 24,
+ this.color,
+ });
+
+ @override
+ Widget build(BuildContext context) {
+ final iconColor = color ?? IconTheme.of(context).color ?? Colors.black;
+ final canvasSize = size;
+
+ return SizedBox(
+ width: canvasSize,
+ height: canvasSize,
+ child: CustomPaint(
+ painter: _LosIconPainter(iconColor),
+ ),
+ );
+ }
+}
+
+class _LosIconPainter extends CustomPainter {
+ final Color color;
+
+ _LosIconPainter(this.color);
+
+ @override
+ void paint(Canvas canvas, Size size) {
+ final paint = Paint()
+ ..color = color
+ ..style = PaintingStyle.fill;
+
+ final path = Path()
+ ..moveTo(82, -120)
+ ..relativeLineTo(258, -360)
+ ..relativeLineTo(202, 0)
+ ..relativeLineTo(298, -348)
+ ..relativeLineTo(0, 708)
+ ..lineTo(82, -120)
+ ..close()
+ ..moveTo(152, -353)
+ ..relativeLineTo(-64, -46)
+ ..relativeLineTo(172, -241)
+ ..relativeLineTo(202, 0)
+ ..relativeLineTo(188, -219)
+ ..relativeLineTo(60, 52)
+ ..relativeLineTo(-212, 247)
+ ..lineTo(300, -560)
+ ..lineTo(152, -353)
+ ..close()
+ ..moveTo(238, -200)
+ ..relativeLineTo(522, 0)
+ ..relativeLineTo(0, -412)
+ ..lineTo(578, -400)
+ ..lineTo(380, -400)
+ ..lineTo(238, -200)
+ ..close();
+
+ final scale = math.min(size.width, size.height) / 960;
+
+ canvas.save();
+ canvas.translate(0, 960);
+ canvas.scale(scale, scale);
+ canvas.drawPath(path, paint);
+ canvas.restore();
+ }
+
+ @override
+ bool shouldRepaint(covariant _LosIconPainter oldDelegate) {
+ return oldDelegate.color != color;
+ }
+}
diff --git a/lib/screens/line_of_sight_map_screen.dart b/lib/screens/line_of_sight_map_screen.dart
index b073685..dfda1c1 100644
--- a/lib/screens/line_of_sight_map_screen.dart
+++ b/lib/screens/line_of_sight_map_screen.dart
@@ -16,6 +16,7 @@ import '../services/map_tile_cache_service.dart';
import '../utils/route_transitions.dart';
import '../widgets/app_bar.dart';
import '../widgets/quick_switch_bar.dart';
+import '../icons/los_icon.dart';
class LineOfSightEndpoint {
final String label;
@@ -642,7 +643,7 @@ class _LineOfSightMapScreenState extends State {
alignment: Alignment.centerRight,
child: ElevatedButton.icon(
onPressed: _loading ? null : _runLos,
- icon: const Icon(Icons.visibility),
+ icon: const LosIcon(),
label: Text(context.l10n.losRun),
),
),
diff --git a/lib/screens/map_screen.dart b/lib/screens/map_screen.dart
index 77ec98c..b688a30 100644
--- a/lib/screens/map_screen.dart
+++ b/lib/screens/map_screen.dart
@@ -20,6 +20,7 @@ import '../services/map_tile_cache_service.dart';
import '../utils/contact_search.dart';
import '../utils/route_transitions.dart';
import '../widgets/quick_switch_bar.dart';
+import '../icons/los_icon.dart';
import 'channels_screen.dart';
import 'chat_screen.dart';
import 'contacts_screen.dart';
@@ -280,7 +281,7 @@ class _MapScreenState extends State {
),
if (!_isBuildingPathTrace)
IconButton(
- icon: const Icon(Icons.visibility),
+ icon: const LosIcon(),
onPressed: () {
final candidates = [];
if (connector.selfLatitude != null &&
From 9bcb8b9ca67d6478dff1ca3fcf3b6481bca5d1dd Mon Sep 17 00:00:00 2001
From: just_stuff_tm <133525672+just-stuff-tm@users.noreply.github.com>
Date: Mon, 23 Feb 2026 00:36:49 -0500
Subject: [PATCH 4/6] feat: render los elevation via svg
---
assets/icons/los_elevation.svg | 5 +++
lib/icons/los_icon.dart | 68 +++-------------------------------
pubspec.lock | 68 +++++++++++++++++++++++++++-------
pubspec.yaml | 2 +
4 files changed, 67 insertions(+), 76 deletions(-)
create mode 100644 assets/icons/los_elevation.svg
diff --git a/assets/icons/los_elevation.svg b/assets/icons/los_elevation.svg
new file mode 100644
index 0000000..78c7a1b
--- /dev/null
+++ b/assets/icons/los_elevation.svg
@@ -0,0 +1,5 @@
+
diff --git a/lib/icons/los_icon.dart b/lib/icons/los_icon.dart
index 86bef06..fef6a45 100644
--- a/lib/icons/los_icon.dart
+++ b/lib/icons/los_icon.dart
@@ -1,6 +1,5 @@
-import 'dart:math' as math;
-
import 'package:flutter/material.dart';
+import 'package:flutter_svg/flutter_svg.dart';
class LosIcon extends StatelessWidget {
final double size;
@@ -15,66 +14,11 @@ class LosIcon extends StatelessWidget {
@override
Widget build(BuildContext context) {
final iconColor = color ?? IconTheme.of(context).color ?? Colors.black;
- final canvasSize = size;
-
- return SizedBox(
- width: canvasSize,
- height: canvasSize,
- child: CustomPaint(
- painter: _LosIconPainter(iconColor),
- ),
+ return SvgPicture.asset(
+ 'assets/icons/los_elevation.svg',
+ width: size,
+ height: size,
+ colorFilter: ColorFilter.mode(iconColor, BlendMode.srcIn),
);
}
}
-
-class _LosIconPainter extends CustomPainter {
- final Color color;
-
- _LosIconPainter(this.color);
-
- @override
- void paint(Canvas canvas, Size size) {
- final paint = Paint()
- ..color = color
- ..style = PaintingStyle.fill;
-
- final path = Path()
- ..moveTo(82, -120)
- ..relativeLineTo(258, -360)
- ..relativeLineTo(202, 0)
- ..relativeLineTo(298, -348)
- ..relativeLineTo(0, 708)
- ..lineTo(82, -120)
- ..close()
- ..moveTo(152, -353)
- ..relativeLineTo(-64, -46)
- ..relativeLineTo(172, -241)
- ..relativeLineTo(202, 0)
- ..relativeLineTo(188, -219)
- ..relativeLineTo(60, 52)
- ..relativeLineTo(-212, 247)
- ..lineTo(300, -560)
- ..lineTo(152, -353)
- ..close()
- ..moveTo(238, -200)
- ..relativeLineTo(522, 0)
- ..relativeLineTo(0, -412)
- ..lineTo(578, -400)
- ..lineTo(380, -400)
- ..lineTo(238, -200)
- ..close();
-
- final scale = math.min(size.width, size.height) / 960;
-
- canvas.save();
- canvas.translate(0, 960);
- canvas.scale(scale, scale);
- canvas.drawPath(path, paint);
- canvas.restore();
- }
-
- @override
- bool shouldRepaint(covariant _LosIconPainter oldDelegate) {
- return oldDelegate.color != color;
- }
-}
diff --git a/pubspec.lock b/pubspec.lock
index ed84c40..266bfb7 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -5,10 +5,10 @@ packages:
dependency: transitive
description:
name: archive
- sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd"
+ sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff
url: "https://pub.dev"
source: hosted
- version: "4.0.7"
+ version: "4.0.9"
args:
dependency: transitive
description:
@@ -347,6 +347,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "8.2.2"
+ flutter_svg:
+ dependency: "direct main"
+ description:
+ name: flutter_svg
+ sha256: "87fbd7c534435b6c5d9d98b01e1fd527812b82e68ddd8bd35fc45ed0fa8f0a95"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.3"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -401,10 +409,10 @@ packages:
dependency: transitive
description:
name: image
- sha256: "492bd52f6c4fbb6ee41f781ff27765ce5f627910e1e0cbecfa3d9add5562604c"
+ sha256: f9881ff4998044947ec38d098bc7c8316ae1186fa786eddffdb867b9bc94dfce
url: "https://pub.dev"
source: hosted
- version: "4.7.2"
+ version: "4.8.0"
intl:
dependency: "direct main"
description:
@@ -417,10 +425,10 @@ packages:
dependency: transitive
description:
name: json_annotation
- sha256: "805fa86df56383000f640384b282ce0cb8431f1a7a2396de92fb66186d8c57df"
+ sha256: cb09e7dac6210041fad964ed7fbee004f14258b4eca4040f72d1234062ace4c8
url: "https://pub.dev"
source: hosted
- version: "4.10.0"
+ version: "4.11.0"
latlong2:
dependency: "direct main"
description:
@@ -537,10 +545,10 @@ packages:
dependency: "direct main"
description:
name: mobile_scanner
- sha256: c6184bf2913dd66be244108c9c27ca04b01caf726321c44b0e7a7a1e32d41044
+ sha256: c92c26bf2231695b6d3477c8dcf435f51e28f87b1745966b1fe4c47a286171ce
url: "https://pub.dev"
source: hosted
- version: "7.1.4"
+ version: "7.2.0"
native_toolchain_c:
dependency: transitive
description:
@@ -597,6 +605,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
+ path_parsing:
+ dependency: transitive
+ description:
+ name: path_parsing
+ sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
path_provider:
dependency: "direct main"
description:
@@ -649,10 +665,10 @@ packages:
dependency: transitive
description:
name: petitparser
- sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1"
+ sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675"
url: "https://pub.dev"
source: hosted
- version: "7.0.1"
+ version: "7.0.2"
platform:
dependency: transitive
description:
@@ -681,10 +697,10 @@ packages:
dependency: transitive
description:
name: posix
- sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61"
+ sha256: "185ef7606574f789b40f289c233efa52e96dead518aed988e040a10737febb07"
url: "https://pub.dev"
source: hosted
- version: "6.0.3"
+ version: "6.5.0"
proj4dart:
dependency: transitive
description:
@@ -1006,10 +1022,34 @@ packages:
dependency: "direct main"
description:
name: uuid
- sha256: a11b666489b1954e01d992f3d601b1804a33937b5a8fe677bd26b8a9f96f96e8
+ sha256: "1fef9e8e11e2991bb773070d4656b7bd5d850967a2456cfc83cf47925ba79489"
url: "https://pub.dev"
source: hosted
- version: "4.5.2"
+ version: "4.5.3"
+ vector_graphics:
+ dependency: transitive
+ description:
+ name: vector_graphics
+ sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.19"
+ vector_graphics_codec:
+ dependency: transitive
+ description:
+ name: vector_graphics_codec
+ sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.13"
+ vector_graphics_compiler:
+ dependency: transitive
+ description:
+ name: vector_graphics_compiler
+ sha256: "5a88dd14c0954a5398af544651c7fb51b457a2a556949bfb25369b210ef73a74"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.0"
vector_math:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 3624b93..3dc40d5 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -60,6 +60,7 @@ dependencies:
gpx: ^2.3.0
path_provider: ^2.1.5
share_plus: ^12.0.1
+ flutter_svg: ^2.0.10
dev_dependencies:
flutter_test:
@@ -87,6 +88,7 @@ flutter:
assets:
- assets/images/
+ - assets/icons/los_elevation.svg
flutter_launcher_icons:
android: true
From bd27c90216c70eadec03e375d3de9aeb60537626 Mon Sep 17 00:00:00 2001
From: just_stuff_tm <133525672+just-stuff-tm@users.noreply.github.com>
Date: Mon, 23 Feb 2026 00:42:36 -0500
Subject: [PATCH 5/6] feat: render los elevation via material symbol
---
assets/icons/los_elevation.svg | 5 ----
lib/icons/los_icon.dart | 19 +++++++++-----
pubspec.lock | 48 ++++++----------------------------
pubspec.yaml | 3 +--
4 files changed, 21 insertions(+), 54 deletions(-)
delete mode 100644 assets/icons/los_elevation.svg
diff --git a/assets/icons/los_elevation.svg b/assets/icons/los_elevation.svg
deleted file mode 100644
index 78c7a1b..0000000
--- a/assets/icons/los_elevation.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/lib/icons/los_icon.dart b/lib/icons/los_icon.dart
index fef6a45..43c6cdc 100644
--- a/lib/icons/los_icon.dart
+++ b/lib/icons/los_icon.dart
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
-import 'package:flutter_svg/flutter_svg.dart';
+import 'package:material_symbols_icons/material_symbols_icons.dart';
class LosIcon extends StatelessWidget {
final double size;
@@ -13,12 +13,17 @@ class LosIcon extends StatelessWidget {
@override
Widget build(BuildContext context) {
- final iconColor = color ?? IconTheme.of(context).color ?? Colors.black;
- return SvgPicture.asset(
- 'assets/icons/los_elevation.svg',
- width: size,
- height: size,
- colorFilter: ColorFilter.mode(iconColor, BlendMode.srcIn),
+ final theme = Theme.of(context);
+ final iconTheme = IconTheme.of(context);
+ final iconColor = color ??
+ iconTheme.color ??
+ theme.iconTheme.color ??
+ theme.colorScheme.onSurface;
+
+ return Icon(
+ Symbols.elevation,
+ size: size,
+ color: iconColor,
);
}
}
diff --git a/pubspec.lock b/pubspec.lock
index 266bfb7..9605e96 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -347,14 +347,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "8.2.2"
- flutter_svg:
- dependency: "direct main"
- description:
- name: flutter_svg
- sha256: "87fbd7c534435b6c5d9d98b01e1fd527812b82e68ddd8bd35fc45ed0fa8f0a95"
- url: "https://pub.dev"
- source: hosted
- version: "2.2.3"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -517,6 +509,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.13.0"
+ material_symbols_icons:
+ dependency: "direct main"
+ description:
+ name: material_symbols_icons
+ sha256: c62b15f2b3de98d72cbff0148812f5ef5159f05e61fc9f9a089ec2bb234df082
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.2906.0"
meta:
dependency: transitive
description:
@@ -605,14 +605,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
- path_parsing:
- dependency: transitive
- description:
- name: path_parsing
- sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
- url: "https://pub.dev"
- source: hosted
- version: "1.1.0"
path_provider:
dependency: "direct main"
description:
@@ -1026,30 +1018,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.5.3"
- vector_graphics:
- dependency: transitive
- description:
- name: vector_graphics
- sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6
- url: "https://pub.dev"
- source: hosted
- version: "1.1.19"
- vector_graphics_codec:
- dependency: transitive
- description:
- name: vector_graphics_codec
- sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
- url: "https://pub.dev"
- source: hosted
- version: "1.1.13"
- vector_graphics_compiler:
- dependency: transitive
- description:
- name: vector_graphics_compiler
- sha256: "5a88dd14c0954a5398af544651c7fb51b457a2a556949bfb25369b210ef73a74"
- url: "https://pub.dev"
- source: hosted
- version: "1.2.0"
vector_math:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 3dc40d5..7d6b5c2 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -60,7 +60,7 @@ dependencies:
gpx: ^2.3.0
path_provider: ^2.1.5
share_plus: ^12.0.1
- flutter_svg: ^2.0.10
+ material_symbols_icons: ^4.2906.0
dev_dependencies:
flutter_test:
@@ -88,7 +88,6 @@ flutter:
assets:
- assets/images/
- - assets/icons/los_elevation.svg
flutter_launcher_icons:
android: true
From 1f816f7e087d5c85be2c763d22bf19a4a11951ab Mon Sep 17 00:00:00 2001
From: just_stuff_tm <133525672+just-stuff-tm@users.noreply.github.com>
Date: Mon, 23 Feb 2026 01:06:25 -0500
Subject: [PATCH 6/6] ran dart format . on libs/icons/los_icon.dart
---
lib/icons/los_icon.dart | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/lib/icons/los_icon.dart b/lib/icons/los_icon.dart
index 43c6cdc..58d75b0 100644
--- a/lib/icons/los_icon.dart
+++ b/lib/icons/los_icon.dart
@@ -5,25 +5,18 @@ class LosIcon extends StatelessWidget {
final double size;
final Color? color;
- const LosIcon({
- super.key,
- this.size = 24,
- this.color,
- });
+ const LosIcon({super.key, this.size = 24, this.color});
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
final iconTheme = IconTheme.of(context);
- final iconColor = color ??
+ final iconColor =
+ color ??
iconTheme.color ??
theme.iconTheme.color ??
theme.colorScheme.onSurface;
- return Icon(
- Symbols.elevation,
- size: size,
- color: iconColor,
- );
+ return Icon(Symbols.elevation, size: size, color: iconColor);
}
}