| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import 'dart:async';
- import 'dart:convert';
- import 'package:flutter/services.dart';
- import './bean/location_option.dart';
- import './bean/location_result_entity.dart';
- // IOS:
- // add info.plist GaoDeAppKey
- class AmapLocation {
- static const MethodChannel _channel = const MethodChannel('amap_location');
- static final AmapLocation _instance = AmapLocation();
- static AmapLocation get instance => _instance;
- StreamController _locationStreamController;
- Stream<LocationResultEntity> get locationStream =>
- _locationStreamController.stream;
- AmapLocation() {
- _channel.setMethodCallHandler(platformCallHandler);
- _locationStreamController =
- StreamController<LocationResultEntity>.broadcast();
- }
- static Future<String> get platformVersion async {
- final String version = await _channel.invokeMethod('getPlatformVersion');
- return version;
- }
- Future<void> startLocation({LocationOption options}) async {
- return await _channel.invokeMethod(
- 'startLocation', options?.toMap() ?? LocationOption().toMap());
- }
- Future<void> closeLocation() async {
- return await _channel.invokeMethod("closeLocation");
- }
- // Future<void> disposed() async {
- // if (!_locationStreamController.isClosed) {
- // await _locationStreamController.close();
- // _locationStreamController=null;
- // }
- // return await _channel.invokeMethod("closeLocation");
- // }
- Future<void> platformCallHandler(MethodCall call) async {
- try {
- if (call.method == "location") {
- LocationResultEntity entity =
- LocationResultEntity().fromJson(jsonDecode(call.arguments));
- _locationStreamController.add(entity);
- }
- } catch (ex) {
- print('Unexpected error: $ex');
- }
- return null;
- }
- Future<void> appleNavigate(double lat, double lng,String title) async {
- return await _channel.invokeMethod('appleNavigate', {
- 'lat': lat,
- "lng": lng,
- "title": title,
- });
- }
- }
|