我上面有一个ListView和一个Calendar。我的计划是根据ListView滚动状态使用Calendar。除了一个Android问题外,我设法解决了所有这些问题。
ScrollController _scrollController;
@override
void initState() {
super.initState();
_scrollController = ScrollController();
_scrollController.addListener(_handleScroll);
}
@override
void dispose() {
_scrollController.removeListener(_handleScroll);
_scrollController.dispose();
super.dispose();
}
void _handleScroll() {
// Handle Scrolling here.
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Calendar(),
Expanded(
child: ListView(
controller: _scrollController,
padding: EdgeInsets.only(bottom: 10),
children: <Widget>[
ListViewItem(),
ListViewItem(),
...
],
),
),
],
),
);
}
下图说明了问题!
如您所见,在用户没有向下滚动时拉出ListView似乎根本不会触发_handleScroll。我认为这是设计在Android上。任何解决方案或解决方法将不胜感激。
您必须将CustomScrollView与Sliver一起使用,如此处所述:https://flutter.dev/docs/cookbook/lists/floating-app-bar