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');
}
});
``
我想在 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');
}
});
``