【发布时间】:2020-12-01 01:34:24
【问题描述】:
ListView 的顶部和底部 Overscroll 指示符是否可以使用不同的 color?
我有ListView 的背景颜色渐变,并希望它在顶部Overscroll 指示器与渐变顶部匹配,底部指示器与渐变底部匹配。
【问题讨论】:
标签: flutter listview overscroll
ListView 的顶部和底部 Overscroll 指示符是否可以使用不同的 color?
我有ListView 的背景颜色渐变,并希望它在顶部Overscroll 指示器与渐变顶部匹配,底部指示器与渐变底部匹配。
【问题讨论】:
标签: flutter listview overscroll
您可以用GlowingOverscrollIndicator 包装ListView 并设置其color 参数。要更改顶部和底部的颜色,您可以在ListView 的滚动控制器中添加一个侦听器。
var _color = Colors.blue;
_listener() {
if (_scrollController.offset >=
_scrollController.position.maxScrollExtent &&
!_scrollController.position.outOfRange) {
// bottom
setState(() {
_color = Colors.red;
});
}
if (_scrollController.offset <=
_scrollController.position.minScrollExtent &&
!_scrollController.position.outOfRange) {
// top
setState(() {
_color = Colors.blue;
});
}
}
@override
void initState() {
super.initState();
_scrollController.addListener(_listener);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: GlowingOverscrollIndicator(
axisDirection: AxisDirection.down,
color: _color,
child: ListView.builder(
controller: _scrollController,
physics: ClampingScrollPhysics(),
itemCount: 30,
itemBuilder: (context, index) {
return ListTile(
title: Text('$index'),
);
},
),
));
}
结果:
【讨论】: