Можно ли обнаружить источник ScrollNotification в NotificationListener - PullRequest
1 голос
/ 02 марта 2020

У меня на странице 4 прокручиваемых виджета: 1 вертикальный (основной) и 3 горизонтальных.

и 2 прокручиваемых виджета (1 вертикальный и 1 горизонтальный) запускают анимацию параллакса для фона.

Как Могу ли я определить, какой виджет Scrollable отправляет ScrollNotification.

Вот пример:

class MYPage extends StatefulWidget {
  MYPage({Key key}) : super(key: key);

  @override
  _MYPageState createState() => _MYPageState();
}

class _MYPageState extends State<MYPage> {
  double scrollX = 0.0;
  double scrollY = 0.0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        fit: StackFit.expand,
        children: <Widget>[
          ParallaxBackground(scrollX, scrollY),
          Positioned.fill(
            child: NotificationListener<ScrollNotification>(
              onNotification: (notification) {
                double scrollOffset = notification.metrics.pixels;
                setState(() {
                  if (notification.metrics.axis == Axis.horizontal) {
                    this.scrollX = scrollOffset;
                  } else {
                    this.scrollY = scrollOffset;
                  }
                });
                return true;
              },
              child: SingleChildScrollView(
                child: Column(
                  children: <Widget>[
                    Content(),
                    HorizontalScrollableContent(),
                    Content(),
                    HorizontalScrollableContentWithParallaxControl(),
                    Content(),
                    HorizontalScrollableContent(),
                    Content(),
                  ],
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }
}
...