首页 > 解决方案 > 如何使用带有 CupertinoPicker 小部件的通知侦听器?

问题描述

我试图仅在我的 CupertinoPicker 指数稳定时获得它的价值。文档指出“要仅在滚动稳定时获取值,请使用 NotificationListener,侦听ScrollEndNotification并读取其 FixedExtentMetrics。”</p>

这实际上是如何工作的?目前我只是试图将我的 CupertinoPicker 小部件包装在 a 中NotificationListener并尝试实现onNotification回调,但这就是我卡住的地方。

标签: flutter

解决方案


听起来你几乎就在那里。这应该可以解决问题。

本文中的更多信息:https ://medium.com/@diegoveloper/flutter-lets-know-the-scrollcontroller-and-scrollnotification-652b2685a4ac

NotificationListener<ScrollNotification>(
                onNotification: (scrollNotification){
                  if (scrollNotification is ScrollEndNotification) {

                    //Will only update when user has stopped scrolling in picker.
                    print(_pickerValue);

                    return true;
                  } else {
                    return false;
                  }
                },
                child: CupertinoPicker(
                  itemExtent: 30,
                  scrollController: scrollController,
                  children: <Widget>[
                    Text('First'),
                    Text('Second'),
                    Text('Third'),
                  ],
                  onSelectedItemChanged: (int value) {
                    setState(() {
                      //Will update every time picker value changes.
                      _pickerValue = scrollController.selectedItem;

                    });
                  },
                ),
              ),

推荐阅读