import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:trackoffical_app/appcore/map_package.dart'; import 'package:trackoffical_app/utils.dart'; import 'package:trackoffical_app/pb.dart' as pb; import 'package:trackoffical_app/model/m_position.dart' as m; class GameMap { String url = ''; Uint8List md5 = Uint8List(0); Uint8List? data; Uint8List? pic; MapPackage? mapPackage; double width = 0; double height = 0; bool isLoaded = false; Distance mapWidth=0.meter; String? get md5Hex { if (md5.isEmpty) { return null; } else { return md5.toHexString(); } } Future worldToPixel(m.MPosition position) async{ var d = await mapPackage?.positionToPic(position); return d?? Offset.zero; } Future pixelToWorld(Offset offset) async{ final d = await mapPackage?.picToPosition(offset); return d??m.MPosition(); } } extension PbNetImageExtension2 on pb.NetImage { GameMap toGameMap() { return GameMap() ..url = url ..md5 = Uint8List.fromList(md5); } }