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

时间:2020-10-30 06:17:20

标签: flutter controller flutter-appbar 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引起的。

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

1 个答案:

答案 0 :(得分:0)

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