如何在CollapsingToolbar中使用Map的点击事件

问题描述 投票:0回答:1

我想将MapWidget放入FlexibleSpaceBar(在SliverAppBar内的NestedScrollView内部),以在可折叠工具栏中显示它。我的小部件树如下所示:

Scaffold
 |
 |- NestedScrollView
     |
     |- SliverAppBar
     |   |
     |   |- FlexibleSpaceBar
     |       |
     |       |- Map
     |
     |- ListView

问题是NestedScrollView消耗了所有Gesture事件,并且我无法再在Map上使用捏缩放。解决此问题的最佳方法是什么?

这里是一些代码:

class ListPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    List<int> list = List<int>.generate(10, (i) => i + 1);
    return NestedScrollView(
      headerSliverBuilder: (context, innerBoxIsScrolled) {
        return [
          SliverAppBar(
              expandedHeight: 250.0,
              floating: true,
              pinned: true,
              snap: false,
              flexibleSpace: FlexibleSpaceBar(
                title: Text('Second Screen'),
                background: MapWidget(),
              )),
        ];
      },
      body: ListView.builder(
        itemCount: list.length,
        itemBuilder: (context, index) {
          int item = list[index];
          return Text('item $item');
        },
      ),
    );
  }
}
google-maps flutter scrollview here-api gesture
1个回答
0
投票

如果您将GoogleMap用作MapWidget,也许这会有所帮助:

gestureRecognizers: Set()
  ..add(Factory<PanGestureRecognizer>(() => PanGestureRecognizer()))
  ..add(Factory<VerticalDragGestureRecognizer>(
      () => VerticalDragGestureRecognizer())),

这样,您可以在地图小部件内使用平移和拖动手势。

我从其他手势识别器选项看了一下,最接近缩放的是ScaleGestureRecognizer,但我没有对其进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.