0

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

我已经使用控制器实现了 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 变量用于切换 appbar 栏中的标题。

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

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

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

我该如何解决这个问题?还有另一种方法吗?

4

1 回答 1

0

这里使用slivers的是颤振文档链接https://flutter.dev/docs/development/ui/advanced/slivers了解更多关于 slivers 的信息

于 2020-10-30T09:13:16.423 回答