如何在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, Viewpager 有 recyclerview 和 NestedScrollview