Update: 2026-06-11 13:47:39

This commit is contained in:
Hamza-Ayed
2026-06-11 13:47:40 +03:00
parent 977adfe99d
commit c5170a88d2
516 changed files with 3654 additions and 3321 deletions

View File

@@ -1,4 +1,5 @@
import 'dart:async';
import 'dart:ui' as ui;
import 'dart:math' show cos, max, min, pi, pow, sqrt;
import 'dart:typed_data';
import 'package:siro_rider/controller/home/map/ride_lifecycle_controller.dart';
@@ -84,7 +85,7 @@ class MapEngineController extends GetxController {
}
void onStyleLoaded() async {
Log.print('🗺️ Intaleq Map Style Loaded. Initializing...');
Log.print('🗺️ Siro Map Style Loaded. Initializing...');
isStyleLoaded = true;
await _loadMapIcons();
@@ -161,6 +162,14 @@ class MapEngineController extends GetxController {
await _addMapImage('orange_marker', 'assets/images/moto1.png');
await _addMapImage('violet_marker', 'assets/images/lady1.png');
try {
final walkBytes = await _createWalkMarkerBytes();
await mapController?.addImage('walk_icon', walkBytes);
Log.print('delimited: successfully added dynamic walk_icon');
} catch (e) {
Log.print('❌ Error loading dynamic walk icon: $e');
}
isIconsLoaded = true;
markers = markers.map((m) => m.copyWith()).toSet();
update();
@@ -799,6 +808,44 @@ class MapEngineController extends GetxController {
update();
}
Future<Uint8List> _createWalkMarkerBytes() async {
final ui.PictureRecorder pictureRecorder = ui.PictureRecorder();
final Canvas canvas = Canvas(pictureRecorder);
const double size = 60.0;
final Paint paint = Paint()..color = const Color(0xFF0288D1);
final Paint borderPaint = Paint()
..color = Colors.white
..style = PaintingStyle.stroke
..strokeWidth = 3.0;
canvas.drawCircle(const Offset(size / 2, size / 2), size / 2.5, paint);
canvas.drawCircle(
const Offset(size / 2, size / 2), size / 2.5, borderPaint);
TextPainter iconPainter = TextPainter(textDirection: TextDirection.ltr);
iconPainter.text = TextSpan(
text: String.fromCharCode(Icons.directions_walk.codePoint),
style: TextStyle(
fontSize: 30.0,
fontFamily: Icons.directions_walk.fontFamily,
color: Colors.white,
),
);
iconPainter.layout();
iconPainter.paint(
canvas,
Offset((size - iconPainter.width) / 2, (size - iconPainter.height) / 2),
);
final ui.Image image = await pictureRecorder
.endRecording()
.toImage(size.toInt(), size.toInt());
final ByteData? data =
await image.toByteData(format: ui.ImageByteFormat.png);
return data!.buffer.asUint8List();
}
@override
void onClose() {
_animationTimers.forEach((key, timer) => timer.cancel());