具有控制器的SingleChildScrollView不会第一次滚动

问题描述

我有一个要求,当用户向上滚动页面时,应显示应用栏标题。并且当滚动到最小标题时应该隐藏。 这是因为页面内容也具有标题

我已经通过控制器实现了SingleChildScrollView。

void initState() {
    _controller = ScrollController();
    _controller.addListener(_scrollListener);
    super.initState();
  }

  _scrollListener() {
    if (_controller.offset <= _controller.position.minScrollExtent &&
        !_controller.position.outOfRange) {
      setState(() {
        _reachedTop = true;
      });
    } else {
      setState(() {
        _reachedTop = false;
      });
    }
  }

  _buildContent(BuildContext context) {
    
    return SafeArea(
        child: SingleChildScrollView(
      controller: _controller,child: widget.content,));
  }

_reachedTop变量用于在应用栏上切换标题

当我第一次尝试向上滚动时,它根本不会滚动,而是显示应用栏的标题。 我假设变量_reachedTop设置为false。

然后当我尝试第二次滚动时,它允许我滚动。

我认为这是由我用来设置变量的setState引起的。

我该如何解决? 还有另一种方法吗?

解决方法

使用slivers(这里是Flutter doc链接)https://flutter.dev/docs/development/ui/advanced/slivers,以了解有关银条的更多信息

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...