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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在CollapsingToolbar中使用Map的点击事件相关的知识,希望对你有一定的参考价值。

我想将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');
        ,
      ),
    );
  

答案

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

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

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

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

以上是关于如何在CollapsingToolbar中使用Map的点击事件的主要内容,如果未能解决你的问题,请参考以下文章

滚动没有内容时如何禁用 CollapsingToolbar 的折叠?

如何确定 CollapsingToolbar 已折叠?

CollapsingToolbar, Viewpager 有 recyclerview 和 NestedScrollview

如何用CollapsingToolbar替换CoordinatorLayout中的CardView?

如何确定AR(p)MA(q)模型中的p和q的值?

LaTeX中如何定义使\section编译之后显示第一章,第二章这种