Визуализация виджета из функции, которая принадлежит виджету в модели с заданными областями при флаттере - PullRequest
0 голосов
/ 24 июня 2019

Я управляю состоянием своего флаттера с помощью пакета scoped-model.Основная проблема заключается в том, что я пытаюсь отобразить ModalBottomSheet из функции внутри scoped-модели.

До сих пор я пытался создать функцию внутри файла scoped-model и в виджете, который слушает этот файл.но ни один из них не привел.

Моя модель с областью видимости выглядит следующим образом:

class ConnectedReportsModel extends Model {
  List<Report> _reports = [];
  List<Marker> _markers = [];
  //String _selProductId;
  User _authenticatedUser;
  bool _isLoading = false;

  void addReport(String desc, double lat, double lng) {
    Report report = Report(
      description: desc,
      latitude: lat,
      longitude: lng,
      userId: _authenticatedUser.id,
      userEmail: _authenticatedUser.email,
    );

    _reports.add(report);
    notifyListeners();
  }
}

class ReportsModel extends ConnectedReportsModel {
  Position userPosition;

  List<Report> get reports {
    return List.from(_reports);
  }

  List<Marker> get markers {
    return List.from(_markers);
  }

  /*
  void addMarker(Marker marker) {
    _markers.add(marker);
    notifyListeners();
  }*/


  void addMarker(String desc, double lat, double lng, Function showMarkerInfo) async {
    Marker marker = new Marker(
      markerId: MarkerId(desc),
      position: LatLng(lat, lng),
      icon: await BitmapDescriptor.fromAssetImage(
          ImageConfiguration(), 'assets/images/pet-lost.png'),
      infoWindow: InfoWindow(title: 'Mascota Perdida', snippet: desc),
      consumeTapEvents: true,
      onTap: () => showMarkerInfo(),
    );

    _markers.add(marker);
    notifyListeners();
  }

  void setLocation(Position currentPosition) {
    userPosition = currentPosition;
  }
}

Оттуда я хочу иметь возможность выполнять функцию onTap при касании маркера и отображать модальноена странице, которая добавляет маркер или новую страницу.

...