diff --git a/lib/modules/chat/views/chat_navigation_card.dart b/lib/modules/chat/views/chat_navigation_card.dart index 72ac80077..ee9085dcd 100644 --- a/lib/modules/chat/views/chat_navigation_card.dart +++ b/lib/modules/chat/views/chat_navigation_card.dart @@ -3,7 +3,6 @@ import 'dart:convert'; import 'dart:math'; import 'dart:math' as math; -import 'package:amap_flutter/amap_flutter.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:http/http.dart' as http; @@ -25,10 +24,7 @@ class _ChatNavigationCardState extends State { LatLng startPoint = LatLng(116.397428, 39.90923); // 起点坐标 LatLng endPoint = LatLng(116.397026, 39.903303); // 终点坐标 - final _amapFlutter = AmapFlutter(); - StreamSubscription? _locationStream; - - String _mapUrl = ''; + late Future _mapUrl; @override void initState() { @@ -36,30 +32,18 @@ class _ChatNavigationCardState extends State { _getLocation(); } - @override - void dispose() { - _amapFlutter.dispose(); - _locationStream?.cancel(); - super.dispose(); - } - - void _getLocation() async { + void _getLocation() { + List startPointList = widget.data?['location'].split(','); List endPointList = widget.data?['destination'].split(','); + startPoint = LatLng( + double.parse(startPointList[0]), + double.parse(startPointList[1]), + ); endPoint = LatLng( double.parse(endPointList[0]), double.parse(endPointList[1]), ); - await _amapFlutter.initLocation(); - _locationStream = _amapFlutter.locationStream().listen((data) async { - startPoint = LatLng( - data['longitude'], - data['latitude'], - ); - _mapUrl = await _getMapUrl(); - _amapFlutter.stopLocation(); - setState(() {}); - }); - _amapFlutter.startLocation(); + _mapUrl = _getMapUrl(); } Future _getMapUrl() async { @@ -193,9 +177,15 @@ class _ChatNavigationCardState extends State { Widget build(BuildContext context) { return Column( children: [ - _mapUrl.isNotEmpty - ? Image.network(_mapUrl) - : const CircularProgressIndicator(), + FutureBuilder( + future: _mapUrl, + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.hasData) { + return Image.network(snapshot.data); + } + return const CircularProgressIndicator(); + }, + ), 10.verticalSpace, Text( widget.content,