Как запустить функцию, когда onPanEnd при использовании flutter_map - PullRequest
1 голос
/ 10 апреля 2020

Я пытаюсь запустить функцию, когда пользователь убирает палец с экрана после прокрутки карты. опция карты дает мне только onPositionChanged, и мне нужно onPanEnd, поэтому я попытался установить GestureDetector, но он не работает хорошо

есть решение проблемы, которое похоже на мое, за исключением того, что я не использую карту Google Я использую флаттер с листовкой Карта Google во Флаттере не отвечает на сенсорные события

    import 'package:flutter/material.dart';
    import 'package:flutter_map/flutter_map.dart';
    import 'package:latlong/latlong.dart';

    void main() => runApp(MyApp());

    class MyApp extends StatelessWidget {
      // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: HomePage(),
        );
      }
    }

    class HomePage extends StatefulWidget {
      @override
      _HomePageState createState() => _HomePageState();
    }

    class _HomePageState extends State<HomePage> {
      @override
      Widget build(BuildContext context) {
        final height = MediaQuery.of(context).size.height;
        final width = MediaQuery.of(context).size.width;
        return Scaffold(
          body: Container(
            height: height,
            width: width,
            child: GestureDetector(

              //Try to run function when position change is done 
              onPanEnd: (_) => print('onPanEnd'),

              //Run on click Down
              onTapDown: (_) => print('onTapDown'),

              child: FlutterMap(
                options: MapOptions(

                  //Run function when position change
                  onPositionChanged: (p,t)=>print('Position : ${p.bounds.north}, Change : $t'),

                  center: LatLng(41.1558, 27.8037),
                  zoom: 7,
                ),
                layers: [
                  TileLayerOptions(
                    urlTemplate:
                        'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
                    subdomains: ['a', 'b', 'c'],
                  ),
                  MarkerLayerOptions(
                    markers: [
                      Marker(
                          width: 20.0,
                          height: 20.0,
                          point: LatLng(41.1558, 27.8037),
                          builder: (ctx) => Icon(Icons.location_on)),
                    ],
                  ),
                ],
              ),
            ),
          ),
        );
      }
    }
...