Flutter ListView,SliverList等内部的当前滚动偏移

Eri*_*del 10 dart flutter

如何获取Flutter ListView, SliverList等内的当前滚动偏移量?

Eri*_*del 12

  • 如果你在滚动视图里面使用Scrollable.of(context).position.pixels.
  • 如果你在外面,你可能想要输入一个ScrollController作为滚动视图的控制器参数,然后你可以阅读controller.offset.
  • 或者,使用滚动通知NotificationListener.

这是在Flutter Gitter问的,并回答:https://gitter.im/flutter/flutter?at = 591243f18a05641b1167be0e


Cop*_*oad 6

对于其他人,寻找代码实现,可以这样使用ScrollController

ScrollController _scrollController;

@override
void initState() {
  super.initState();
  _scrollController = ScrollController()
    ..addListener(() {
      print("offset = ${_scrollController.offset}");
  });
}

@override
Widget build(BuildContext context) {
  return ListView(
    controller: _scrollController, 
    children: <Widget>[],
  );
}

@override
void dispose() {
  _scrollController.dispose(); // it is a good practice to dispose the controller
  super.dispose();
}
Run Code Online (Sandbox Code Playgroud)