如何使用控制器 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 获得无限滚动