Карта флаттера в конце смены позиции - PullRequest
0 голосов
/ 16 июня 2020

Я использую flutter_map, чтобы добавить карту в свой проект. Я могу работать с ним и использовать его возможности. Но мне нужно то, чего я не нашел в flutter_map.

Я хочу прослушать изменение позиции и получить последнюю позицию, когда пользователь перестанет касаться экрана. Как onTapUp или onLongPressUp в виджете GestureDetector.

В flutter_map есть опция onPositionChanged, но она вызывается каждый раз при изменении позиции, а это очень много. Как только пользователь коснулся экрана, вызывается onPositionChanged, пока пользователь не перестанет касаться экрана. Я могу получить последнюю позицию из этого, но я хочу вызвать API, когда позиция изменится, чтобы получить список ближайших автомобилей. Вызов API каждый раз, когда вызывается onPositionChanged, не годится.

Поэтому я хочу иметь возможность вызывать API, когда пользователь заканчивает менять местоположение (когда он / она перестает касаться экрана).

Вот мой код flutter_map:

     FlutterMap(
            key: Key('map'),
            mapController: main.mapController,

            options: MapOptions(
                center: LatLng(main.lat, main.long),
                zoom: 14,
                maxZoom: 18,
                minZoom: 10,
                onPositionChanged: (mapPosition, boolValue){
                  _lastposition = mapPosition.center;
                }),


            layers: [
              TileLayerOptions(
                errorImage: AssetImage('images/login_icon.png'),
                urlTemplate:
                    "https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png",
                // subdomains: ['a', 'b', 'c'],
                // subdomains: ['', '1', '2', '3', '4']
              ),
              MarkerLayerOptions(
                markers: main.markersStart +
                    main.markersDestination +
                    main.driverMarkers,
              ),
            ],
          ),

Любая помощь приветствуется, спасибо :).

1 Ответ

0 голосов
/ 04 июля 2020

Вы можете использовать таймер, который срабатывает только после задержки в одну секунду.

onPositionChanged: (mapPosition, boolValue) {
              Timer(Duration(seconds: 1), () {}}
...