import 'dart:async'; import 'package:flutter/services.dart'; import 'bean/amap_marker.dart'; class AmapViewController { MethodChannel _methodChannel; StreamController _guideStreamController; Stream get guideStream => _guideStreamController.stream; AmapViewController(int id) { _methodChannel = MethodChannel("com.i2edu.mapView/map_view_$id"); _methodChannel.setMethodCallHandler(platformCallHandler); _guideStreamController = StreamController.broadcast(); } Future platformCallHandler(MethodCall call) async { try { if (call.method == "guide") { _guideStreamController.add(call.arguments); } } catch (ex) { print('Unexpected error: $ex'); } return null; } Future setMapMarkers(List markers) async { return _methodChannel.invokeMethod( "setMarkers", {"markers": markers.map((f) => f.toMap()).toList()}); } Future onCreateMapView() async { return _methodChannel.invokeMethod('onCreate'); } Future onPauseMapView() async { return _methodChannel.invokeMethod('onPause'); } Future onResumeMapView() async { return _methodChannel.invokeMethod('onResume'); } Future moveCamera(Map map) async { return _methodChannel.invokeMethod('moveCamera',{"data":map}); } void dispose() { if (!_guideStreamController.isClosed) { _guideStreamController.close(); } } }