Flutter如何使用控制器ListView

How use controller ListView Flutter

我想在 listView 的末尾打印一条消息。

我有 2 个列表视图,一个在另一个里面。

这是我在有状态小部件中的代码:

class _CategoryScreenState extends State<CategoryScreen> {
  ScrollController scrollController = ScrollController();
@override
  void initState() {
    super.initState();
  scrollController.addListener(() {
      if(scrollController.position.pixels == scrollController.position.maxScrollExtent){
        print('At the end');
      }
    });
  }
  void dispose() {
    scrollController.dispose();
    super.dispose();
  }

@override
  Widget build(BuildContext context) {
return Scaffold(
      key: widget._scaffoldKey,
      body: SafeArea(
          child: ListView(
            children: <Widget>[
              Stack(....),
              SizedBox(
                height: 10,
              ),
              ListView.builder(
                  key: UniqueKey(),
                  itemCount: myProvider.myArray.length,
                  controller: scrollController,

                  shrinkWrap: true,
                  itemBuilder: (_,index){
                    return MyWidget(
                      dishModel: myProvider.myArray[index],
                    );
                  }),
           
            ],

          )),
    );
  }
}

当我滚动到列表末尾时,没有任何反应。

我该如何解决??

谢谢

将外层ListView包裹成NestedScrollView。它需要一个名为 controller 的构造函数参数,即 ScrollController.

在您的 init 中执行此操作

scrollController = new ScrollController(initialScrollOffset:5.0)..addListener(() {
      if(scrollController.offset >= scrollController.position.maxScrollExtent && !scrollController.position.outofRange){
        print('At the end');
      }
    });

``