首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

是因为控制器的初始滚动位置没有被设置。

SingleChildScrollView是一个用于展示可滚动内容的组件,但它本身不具备滚动的功能。为了使SingleChildScrollView具备滚动能力,我们需要将它包裹在一个ScrollController中,并通过控制器来控制滚动的位置。

在第一次滚动时,如果我们没有显式地给控制器设置初始滚动位置,那么SingleChildScrollView不会进行滚动。这是因为控制器的默认初始滚动位置是0,而SingleChildScrollView在第一次滚动时并不会自动将内容滚动到顶部。

要解决这个问题,我们可以通过在控制器上调用jumpTo方法或animateTo方法来设置初始滚动位置。例如,我们可以将控制器的初始滚动位置设置为一个较小的负值,从而将内容滚动到顶部。

以下是一个示例代码片段,展示如何使用带控制器的SingleChildScrollView并设置初始滚动位置为顶部:

代码语言:txt
复制
ScrollController _controller = ScrollController(initialScrollOffset: -1);

SingleChildScrollView(
  controller: _controller,
  child: // 内容部分
)

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动开发平台:https://cloud.tencent.com/product/baas
  • 腾讯云服务器托管:https://cloud.tencent.com/product/cvm
  • 腾讯云云原生应用平台:https://cloud.tencent.com/product/tke
  • 腾讯云音视频服务:https://cloud.tencent.com/product/tcvs
  • 腾讯云数据库服务:https://cloud.tencent.com/product/cdb
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云存储服务:https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务:https://cloud.tencent.com/product/tbc
  • 腾讯云元宇宙服务:https://cloud.tencent.com/product/tencent-virtual-universe
  • 腾讯云安全服务:https://cloud.tencent.com/product/safety
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

师于源码 | Flutter 区域视口双向滑动

比如 AndroidStudio 文件树和编辑器区域,当宽度较窄时,水平方向通过拖拽底部滚动条来滚动视口。...竖直方向上滑动控制器是 textController ,在 tag3 处和 Lines 组件 绑定,也就是说 Lines 是一个竖直滚动可滑动组件;水平方向上滑动控制器是 horizontalController...,在 tag4 处和 SingleChildScrollView 组件 绑定,支持横向滚动。...如下所示,蓝色区域内有一行文字,当窗口宽度缩小到文本溢出时,底部会呈现滑动条支持水平滑动: 这里先总结一下实现区域视口双向滚动步骤: 需要两个可滑动视口: SingleChildScrollView...tag1 和 tag1 处是给出两个 Scrollbar,并绑定对应方向上滑动控制器; tag5 处对水平方向宽度约束处理; tag6 处对竖直方向滚动条进行处理。

49720

Flutter 分页功能表格控件

老孟导读:前2天有读者问到是否有分页功能表格控件,今天分页功能表格控件详细解析来来。...PaginatedDataTable PaginatedDataTable是一个分页功能DataTable,生成一批数据,项目中此一般通过服务器获取,定义model类: class User {...显示数据过多时,需要将PaginatedDataTable包裹在SingleChildScrollView中,滚动显示数据: SingleChildScrollView( child: PaginatedDataTable...,数据并不会实际排序,对数据进行排序可以当用户点击表头时对数据按照本列数据进行排序,用法如下, var _sortAscending = true; _buildPaginatedDataTable(...,使用SingleChildScrollView包裹,显示不全时滚动显示,用法如下: SingleChildScrollView( scrollDirection: Axis.horizontal,

1.9K31
  • Flutter跨平台移动端开发丨SingleChildScrollView、ListView......

    ---- SingleChildScrollView(可滑动 View) SingleChildScrollView 类似 Android 中 scrollview ,且同样只可包含有一个子元素...controller:控制器对象,主要作用是控制滚动位置和监听滚动事件 primary:是否使用 widget 树中默认 PrimaryScrollController 。...(在懒加载时,如果设置了包裹那么在此列表项滑出屏幕外时不会被GC。...controller:控制器对象,主要作用是控制滚动位置和监听滚动事件 primary:是否使用 widget 树中默认 PrimaryScrollController 。...---- ScrollController(控制器) 可设置滑动 View 滚动位置,还可监听并获取滑动 View 滚动状态及数据 ScrollController({ double initialScrollOffset

    8.7K51

    Flutter SingleChildScrollView 滚动控件

    Flutter中SingleChildScrollView类似于Android中ScrollView,它只能接收一个子组件。...}) SingleChildScrollView常用属性值 含义 scrollDirection 滚动方向,默认是垂直方向 reverse 决定可滚动组件初始滚动位置是在“头”还是“尾”,false在...需要注意是,通常SingleChildScrollView只应在期望内容不会超过屏幕太多时使用,这是因为SingleChildScrollView不支持基于Sliver延迟实例化模型,所以如果预计视口可能包含超出屏幕尺寸太多内容时...,那么使用SingleChildScrollView将会非常昂贵(性能差),此时应该使用一些支持Sliver延迟加载滚动组件,如ListView。...可滚动组件中有很多都支持基于Sliver延迟构建模型,如ListView、GridView,但是也有不支持该模型,如SingleChildScrollView

    5.1K00

    Flutter | 滚动组件,ListView,GridVIew等

    风格滚动指示器(滚动条),如果要给可滚动组件添加滚动条,只需要将 Scroolbar 作为可滚动组件任意一个父级组件即可,如: Scrollbar( child: SingleChildScrollView...可滚动组件中有很多都支持 Sliver 延时构建模型,如 ListView,GridView ,但是也有不支持改模型 SingleChildScrollView 主轴和纵轴 在滚动组件坐标描述中,...由于可滚动组件默认方向一般都是沿垂直方向,所以默认情况下主轴就是指垂直方向,水平方向同理 SingleChildScrollView SingleChildScrollView 类似于 Android...需要注意是,通常 SingleChildScrollView 只应用在期望内容不会超过屏幕太多时使用,这是因为 SingleChildScrollView 不支持 Sliver 延时实例初始化模型...组件中; 典型,在一个懒加载列表中,如果将列表包裹在 AutomaticKeepAlive 中,在改了吧划出视口时,他也不会被 GC 回收(垃圾回收),他会使用 KeepAliveNotification

    8.5K20

    Flutter开发-可滚动组件

    我们先介绍一下常用滚动组件(如ListView、GridView等) SingleChildScrollView SingleChildScrollView类似于Android中ScrollView...你如果需要在两个方向上收缩包装(在滚动轴和横轴)例如 dialog或者 pop-up菜单,在这种情况下,你可以用SingleChildScrollView包裹孩子ListBody。...需要注意是,通常SingleChildScrollView只应在期望内容不会超过屏幕太多时使用,这是因为SingleChildScrollView不支持基于Sliver延迟实例化模型,所以如果预计视口可能包含超出屏幕尺寸太多内容时...,那么使用SingleChildScrollView将会非常昂贵(性能差),此时应该使用一些支持Sliver延迟加载滚动组件,如ListView。...:这两个方法用于跳转到指定位置,它们不同之处在于,后者在跳转时会执行一个动画,而前者不会

    4.5K20

    Flutter 入门指北之滑动部件(超详细)

    那么这里提下可滑动容器部件 SingleChildScrollView 这个部件非常简单,不贴源码了。最简单使用方式只需要提供一个 child 即可。...现在给前面写 Text 包裹上一层 SingleChildScrollView 然后再运行,文字全部都展示出来了。...如果需要实现一个垂直滚动列表,可以直接通过 SingleChildScrollView 包裹 Column 来实现,列表内容全部塞到 Column 即可 class SingleChildScrollDemoPage...那么如果需要实现横向滚动列表呢,稍稍做下修改就行了 body: SingleChildScrollView( // 设置滚动方向 scrollDirection: Axis.horizontal...通过 ListView.builder 实现 通过 ListView.separated 实现分割线列表 ListView children 第一种方法实现列表,和通过 SingleChildScrollView

    2.4K30

    《Flutter》-- 6.高级组件

    6.1.3 SingleChildScrollView组件 是一个只能包含单一子组件滚动组件,其作用类似于iOSUIScrollView组件或AndroidScrollView组件。...只能应用于内容不会超过屏幕尺寸太多情况,因为SingleChildScrollView组件目前还不支持基于Sliver延迟加载,如果视图内容超出屏幕尺寸太多会导致性能问题。...SingleChildScrollView组件构造函数: const SingleChildScrollView({ Key key, this.scrollDirection = Axis.vertical...ListView、GridView自带滚动模型,SliverList、SliverGrid不包含滚动模型,不会造成滚动冲突。...bool addAutomaticKeepAlives = true,//是否将列表项包裹在AutomaticKeepAlive组件中,默认值为true,表示列表项滑出视图窗口时不会被垃圾回收,会保存之前状态

    10.6K20

    Flutter ListView 列表控件

    ListView是最常用滚动组件之一,它可以沿一个方向线性排布所有子组件,并且它也支持基于Sliver延迟构建模型。...Sliver延迟构建模型请参见本系列文章《Flutter SingleChildScrollView 滚动控件》中基本概念处。 本文示例效果图(全) ?...addAutomaticKeepAlives 是否将列表项(子控件)包裹在AutomaticKeepAlive组件中,包含之后列表项滑出视口时它也不会被GC。...实际上通过此方式创建ListView和使用SingleChildScrollView+Column方式没有本质区别。...可滚动组件构造函数如果需要一个列表项Builder,那么通过该构造函数构建滚动组件通常就是支持基于Sliver懒加载模型,反之则不支持,其他可滚动组件亦是如此。

    3.1K20

    不一样角度带你了解 Flutter 中滑动列表实现

    使用是 SliverFillViewport; 当然这里有一个特殊SingleChildScrollView , 因为它是单个 child 可滑动控件,它并没有使用 RenderSliver...里实现布局, Viewport 里直属 children 也需要是 RenderSliver; 那到这里你可能会有一个疑问:既然前面 SingleChildScrollView 里没有使用 RenderSliver...RenderBox 在 SingleChildScrollView 内部使用是 RenderBox ,那么在布局过程中自然而然会把整个 child 都进行布局和计算,绘制时主要也是通过 offset...预布局”区域,这个区域默认大小是 defaultCacheExtent= 250.0; ListView 高度为 701,defaultCacheExtent 为默认 250,也就是得到第一次需要布局到底部距离其实为...最后在 _NestedScrollCoordinator drag 和 applyUserOffset 等方法里进行内外滚动分配; ?

    2.2K51

    不一样角度带你了解 Flutter 中滑动列表实现

    使用是 SliverFillViewport; 当然这里有一个特殊是 SingleChildScrollView , 因为它是单个 child 可滑动控件,它并没有使用 RenderSliver...里实现布局」, Viewport 里直属 children 也需要是 RenderSliver; 那到这里你可能会有一个疑问:既然前面 SingleChildScrollView 里没有使用 RenderSliver...RenderBox 在 SingleChildScrollView 内部使用是 RenderBox ,那么在布局过程中自然而然会把整个 child 都进行布局和计算,绘制时主要也是通过 offset ...「第一次需要布局到底部距离其实为 951」,按照每个 item 高度是 114 ,那么其实是有 8.3 个 item 高度,取整数也就是 9 个 item ,最终得到整体需要处理区域大小为 114...最后在 _NestedScrollCoordinator  drag 和 applyUserOffset 等方法里进行内外滚动分配; image.png SliverPersistentHeader

    1.1K30
    领券