Как использовать события касания для карты в CollapsingToolbar - PullRequest
0 голосов
/ 28 мая 2020

Я хочу поместить MapWidget в FlexibleSpaceBar (внутри SliverAppBar внутри NestedScrollView), чтобы показать его на сворачиваемой панели инструментов. Мое дерево виджетов выглядит так:

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

Проблема в том, что NestedScrollView потребляет все события жестов, и я больше не могу использовать масштабирование пальцем для 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');
        },
      ),
    );
  }
}

1 Ответ

0 голосов
/ 28 мая 2020

Если вы используете GoogleMap в качестве виджета MapWidget, возможно, это поможет:

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

С этим вы можете использовать жесты панорамирования и перетаскивания внутри виджета карты.

Я немного просмотрел другие параметры распознавателя жестов, наиболее близким к масштабированию было ScaleGestureRecognizer , но я не тестировал его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...