отправить смс после распада карты посмотреть на флаттер - PullRequest
0 голосов
/ 07 октября 2018

Я пытался отправить смс после закрытия карты.в настоящее время единственное решение, которое я нашел, это отправить смс, когда я закончу перетаскивать новое местоположение.но он посылает смс все время после замены маркера ... Я хочу только один законченный смс с последней позиции.Я попытался вставить (onAnnotationDragEnd.listen) в id == 1, чтобы активировать функцию только тогда, когда карта закрыта, но она работает только после закрытия приложения один раз.Это должно быть открыто в другое время для работы ... чтобы быть ясным, я просто ищу, как запустить просмотр карты -> перетащить новую позицию -> закрыть вид карты -> отправить смс с последней позиции.

вот плагин: https://pub.dartlang.org/packages/map_view

вот функция

showMap() {

mapView.show(
    new MapOptions(
        mapViewType: MapViewType.hybrid,
        showUserLocation: true,
        initialCameraPosition: new CameraPosition(
            new Location(lathome,longhome),18.0),
        title: "change location"),
    toolbarActions: [new ToolbarAction("close", 1)]);
StreamSubscription sub = mapView.onMapReady.listen((_) {


  mapView.addMarker(
      new Marker("4", "Home",lathome,longhome,draggable: true, //
        color:Colors.orangeAccent, markerIcon: new MarkerIcon(
          "assets/home_tag_orange.png", //Asset to be used as icon
          width: 130.0, //New width for the asset
          height: 130.0, // New height for the asset
        ),));
  mapView.onAnnotationDragEnd.listen((markerMap) {
    var marker = markerMap.keys.last;
    var location = markerMap[marker]; // The updated position of the marker.
    print("Annotation ${marker.id} moved to ${location.latitude} , ${location
        .longitude}");
    new SmsSender().sendSms(new SmsMessage(phonenumber,'${location.latitude.toStringAsFixed(6)}",${location.longitude.toStringAsFixed(6)}'));
  });


  mapView.zoomToFit(padding: 500);
});
sub = mapView.onTouchAnnotation
    .listen((annotation) => print("annotation ${annotation.id} tapped"));
compositeSubscription.add(sub);

sub = mapView.onMapTapped
    .listen((location) => print("Touched location $location"));
compositeSubscription.add(sub);
sub = mapView.onCameraChanged.listen((cameraPosition) =>
    this.setState(() => this.cameraPosition = cameraPosition));
compositeSubscription.add(sub);

sub = mapView.onToolbarAction.listen((id) {
  print("Toolbar button id = $id");
  if (id == 1) {


    _handleDismiss();
  }
});
compositeSubscription.add(sub);
sub = mapView.onInfoWindowTapped.listen((marker) {
  print("Info Window Tapped for ${marker.title}");
});
compositeSubscription.add(sub);
 } 
...