首页 > 解决方案 > Flutter中Overscroll指示器的不同颜色?

问题描述

colora的顶部和底部Overscroll指示器是否可以不同ListView

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

标签: flutterlistviewoverscroll

解决方案


ListView您可以用 a包装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'),
            );
          },
        ),
    ));
  }

结果:

资源


推荐阅读