afs*_*.an 13 listview dart flutter flutter-layout
我在另一个列表视图中有一个列表视图构建器小部件。当滚动位置到达末尾时,内部列表视图侦听器不会触发。
initState() {
super.initState();
_scrollController.addListener(() {
if (_scrollController.position.maxScrollExtent ==
_scrollController.position.pixels) {function();}
}
Container(
child: Listview(
children: <Widget>[
Container(),
ListView.builder(
controller: _scrollController,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: list.length,
itemBuilder: (BuildContext context, int index) {
return Container();
},
),
]
)
)
Run Code Online (Sandbox Code Playgroud)
Vai*_*lod 16
您可能在任何小部件之前附加了SingleChildScrollView:
所以将_scrollController 附加到 singleChildScrollView 而不是 listview
body: SingleChildScrollView(
controller: _scrollController,
child: Column(
children: [
_chips(),
SizedBox(
height: 10,
),
_slider(),
_showGrid(),
],
),
),
Run Code Online (Sandbox Code Playgroud)
列表视图必须滚动,否则将无法工作。您不仅必须删除 NeverScrollableScrollPhysics(),还要将该列表视图添加到某个容器中,并将其高度设置为小于 ListView 的整体高度。然后listView开始滚动并且该函数将被触发
ScrollController _scrollController = ScrollController();
List<int> list = [1, 2, 3, 4, 5];
initState() {
super.initState();
_scrollController.addListener(() {
if (_scrollController.position.maxScrollExtent ==
_scrollController.position.pixels) {
print('firing');
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: ControlBar(
title: Text('Home'),
),
),
body: ListView(
children: <Widget>[
Container(
height: 150,
child: ListView.builder(
controller: _scrollController,
shrinkWrap: true,
itemCount: list.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(title: Text(list[index].toString()));
},
),
),
],
),
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14492 次 |
| 最近记录: |