如何使用控制器 ListView Flutter

Posted

技术标签:

【中文标题】如何使用控制器 ListView Flutter【英文标题】:How use controller ListView Flutter 【发布时间】:2021-09-29 23:26:37 【问题描述】:

我想在 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],
                    );
                  ),
           
            ],

          )),
    );
  


当我滚动到列表末尾时,什么也没发生。

我该如何解决??

谢谢

【问题讨论】:

【参考方案1】:

在你的初始化中这样做

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

``

【讨论】:

【参考方案2】:

将外层 ListView 包裹到 NestedScrollView 中。它接受一个名为 controller 的构造函数参数,即 ScrollController。

【讨论】:

以上是关于如何使用控制器 ListView Flutter的主要内容,如果未能解决你的问题,请参考以下文章

将 Text 小部件添加到其子项映射到 Flutter 的 ListView?

Flutter:使用 ListView.builder 消失的 SliverAppBar

如何在 Flutter 中添加 ListView.builder 的填充顶部?

如何使用 Flutter 从 Firestore 中的 ListView 获得无限滚动

Flutter:如何将 StreamBuilder 与 ListView.separated 一起使用

Flutter中如何检测ListView的滚动位置