【发布时间】:2019-10-05 10:14:35
【问题描述】:
我有一个 ListView,在它的顶部有一个地图,我希望在 ListView 滚动时地图滚动到视图之外,但我也希望用户能够与地图进行交互。因此,只有当用户在其他 ListView 小部件上滚动而不是在他们在地图上滚动时才会发生滚动,然后我希望将手势直接应用于地图。 但目前,当用户在地图上滚动时,它会滚动整个 ListView。
我已经尝试过我在这里遇到的其他建议
In Flutter, how can a child widget prevent the scrolling of its scrollable parent?
我添加了GestureDetector,正如上面帖子的答案中所建议的那样,将地图容器包装在下面的示例中,但这只是阻止了在地图上滚动时 ListView 和 Map 的滚动。视频链接https://imgur.com/SeCRzUC
这是我的构建方法返回的小部件。此代码依赖于google_maps_flutter 插件。
Container(
height: MediaQuery.of(context).size.height,
child:
ListView.builder(
itemCount: 12 + 1,
itemBuilder: (context, index) {
if (index == 0) return GestureDetector(
onVerticalDragUpdate: (_){},
child: Container(
height: MediaQuery.of(context).size.height / 2,
child: GoogleMap(initialCameraPosition: initalPosition),
),
);
else return ListTile(title: Text("$index"),);
}
)
),
我曾希望地图会捕捉手势,但它没有,包含它的列表视图会捕捉所有。谁能建议我如何强制列表中此项目的所有手势直接传递到地图,并且在列表中的其他项目滚动时仍然让列表滚动?
【问题讨论】: