flutter 中的 Overscroll 指示器颜色不同?

问题描述 投票:0回答:2

是否可以为

color
的顶部和底部
Overscroll
指示器设置不同的
ListView

我有

ListView
颜色渐变的背景,并希望它的顶部
Overscroll
指示器与渐变的顶部相匹配,底部指示器与渐变的底部相匹配。

flutter listview overscroll
2个回答
2
投票

您可以用

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'),
            );
          },
        ),
    ));
  }

结果:

res


0
投票

1. 将 ListView 包裹在

GlowingOverscrollIndicator

2. 使用新的滚动行为将

GlowingOverscrollIndicator
包装在 ScrollConfiguration 中

尝试使用下面的代码片段。

 ScrollConfiguration(
        behavior: ScrollBehavior(),
        child: GlowingOverscrollIndicator(
          axisDirection: AxisDirection.down,
          color: Colors.yellow,
          child: ListView.builder(
            physics: ClampingScrollPhysics(),
            itemCount: 15,
            itemBuilder: (context, index) {
              return ListTile(
                title: Text("testing :$index"),
              );
            },
          ),
        ),
      ),
© www.soinside.com 2019 - 2024. All rights reserved.