【问题标题】:Flutter iOS: taps on the status bar can't scroll to topFlutter iOS:状态栏上的点击无法滚动到顶部
【发布时间】:2018-11-22 04:31:48
【问题描述】:

首页布局中使用的CustomScrollView 如果你想拉起并加载更多,你必须定义一个 ScrollController 并将其传递给 CustomScrollView。

我的代码

ScrollController _scrollController = new ScrollController();
  @override
  void initState() {
    super.initState();
    _scrollController.addListener(() {
      if (_scrollController.position.pixels >=
          _scrollController.position.maxScrollExtent) {
        _loadMoreData();
      }
    });
  }

  @override
  void dispose() {
    super.dispose();
    _scrollController.dispose();
  }
new CustomScrollView(
  controller: _scrollController,
  slivers: <Widget>[....],
)

但是,如果这样做,当加载的数据很多时,点击顶部的状态栏将不会滚动到顶部! 如果去掉CustomScrollView中的controller,或者改成PrimaryScrollController.of(context)

new CustomScrollView(
  controller: PrimaryScrollController.of(context),
)

没关系! 为什么???

【问题讨论】:

    标签: flutter


    【解决方案1】:

    因为 Flutter 引擎试图尽可能地模仿操作系统的行为。这种轻击手势在 iOS 上称为 "return-to-top",在 Android 上根本不存在。此外,为了尽可能接近 iOS 应用行为,此手势仅触发 PrimaryScrollController 类的滚动动画。

    作为参考,在 iOS 原生应用程序开发中,如果屏幕上有多个滚动视图将 scrollsToTop 设置为 true (source),则滚动到顶部手势无效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 2012-02-15
      • 2011-11-02
      • 2013-01-29
      相关资源
      最近更新 更多