问题描述
name="identity"
的顶部和底部color
指示符可以使用不同的Overscroll
吗?
我有一个ListView
颜色渐变的背景,并希望它的顶部ListView
指示器与渐变的顶部相匹配,而底部指示器则与渐变的底部相匹配。
解决方法
您可以用ListView
包装GlowingOverscrollIndicator
并设置其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'),);
},),));
}
结果: