拖动时,DraggableScrollableSheet不会提供工作表的当前位置

时间:2019-06-08 12:52:17

标签: flutter

在混乱中,我们有一个小部件 DraggableScrollableSheet 。现在,我希望在拖动时孩子的当前位置或当前大小。当前无法获得该价值。它在其builder方法中提供了一个ScrollController,但这是用于列表滚动时而不是拖动列表时。那么,还有另一种方法可以跟踪列表的当前拖动位置吗?

我尝试添加NotificationListener,但这只给了我dragstartnofification和dragendnotification,而对于dragupdate没有任何帮助:

DraggableScrollableSheet(
          initialChildSize: .70,
          minChildSize: .70,
          builder:
              (BuildContext context, ScrollController scrollcontroller) {
            return NotificationListener(
              onNotification: (notification) {
                print("$notification");
              },
              child: Container(
                child: ListView.builder(
                    controller: scrollcontroller,
                    itemCount: widget.songs.length,
                    itemBuilder: (BuildContext context, int index) {
                      return buildSongRow(widget.songs[index]);
                    }),
              ),
            );
          }),

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 Flutter团队更新了Flutter v1.7.3中的ScrollableDraggableSheet类。他们添加了一个名为DraggableScrollableNotification的类,您可以在拖动时听取该类以获取子级的当前扩展。

NotificationListener<DraggableScrollableNotification>(
      onNotification: (notification) {

        print("${notification.extent}");
      },
      child: DraggableScrollableSheet(
          initialChildSize: .70,
          minChildSize: .70,
          builder:
              (BuildContext context, ScrollController scrollcontroller) {
            return Container(
              child: ListView.builder(
                  controller: scrollcontroller,
                  itemCount: widget.songs.length,
                  itemBuilder: (BuildContext context, int index) {
                    return buildSongRow(widget.songs[index]);
                  }),
            );
          }),
    )
上面示例 notification.extent 中的

将为您提供拖动时子级的当前范围(位置)。

  

注意:这是当前在主频道中,而不是在稳定频道中   渠道。通过运行 flutter频道主频道,切换到主频道   然后动态升级以使其暂时正常运行。