Flutter 中的 ListView 和 SingleChildScrollView 有什么区别?
What is the difference between ListView and SingleChildScrollView in Flutter?
我见过几个使用 ListView
作为 Scaffold
的主要 body
元素的例子,在一些教程中,它是 SingleChildScrollView
。我所理解的是两者都允许根据配置的方向滚动某些轴,但无法弄清楚何时使用一个而不是另一个?
列表视图:
Scaffold
body : ListView
children : Padding/Container
SingleChildScrollView:
Scaffold
body : SingleChildScrollView
child : Column
ListView: 当我们必须为 n 个元素呈现相同类型的小部件时使用
SingleChildScrollView: 当我们有 n 个元素的不同小部件时使用。
理想情况下,我们需要滚动的两种情况,Listview 都有默认行为,但列和其他小部件不需要使用 SingleChildScrollView
更新:
选择 ListView
时需要注意的重要一点
ListView() -- Render all the items in the list, even if it is not visible.
`ListView.Builder()` -- Render only visible items on the screen.
ListView,如果您有一个要呈现的 UI 小部件列表,并且此类小部件的数量是动态的,您将使用。
例如:您只需要在屏幕上显示联系人列表,列表项或多或少相似(UI 明智和类别明智)。然后您将使用 Listview。
一个SingleChildScrollView可以与Android中的"ScrollView"进行比较。假设您有很多 UI 个小部件(按钮、输入字段、卡片等),并且它们开始超出屏幕。在这种情况下,您的小部件将溢出并且您将开始看到警告。要解决此问题,您可以使用 SingleChildScrollView 包装 UI 小部件。
对于您的用例,"Recommended" 部分,ListView 将是一个不错的选择。
你可以考虑ListView as an optimisation to the combination of SingleChildScrollView + Column.
通过使用ListView,只有可见的项目才会被安装和涂漆。
另一方面,通过使用 SingleChildScrollView+Column,即使只有少数项目可见,整个项目列表也会被安装+绘制。
权衡是 ListView 不太灵活。所以对于项目数量较少的复杂布局,性能提升可能不值得,在这种情况下我们可以使用 SingleChildScrollView.
我见过几个使用 ListView
作为 Scaffold
的主要 body
元素的例子,在一些教程中,它是 SingleChildScrollView
。我所理解的是两者都允许根据配置的方向滚动某些轴,但无法弄清楚何时使用一个而不是另一个?
列表视图:
Scaffold
body : ListView
children : Padding/Container
SingleChildScrollView:
Scaffold
body : SingleChildScrollView
child : Column
ListView: 当我们必须为 n 个元素呈现相同类型的小部件时使用
SingleChildScrollView: 当我们有 n 个元素的不同小部件时使用。
理想情况下,我们需要滚动的两种情况,Listview 都有默认行为,但列和其他小部件不需要使用 SingleChildScrollView
更新: 选择 ListView
时需要注意的重要一点 ListView() -- Render all the items in the list, even if it is not visible.
`ListView.Builder()` -- Render only visible items on the screen.
ListView,如果您有一个要呈现的 UI 小部件列表,并且此类小部件的数量是动态的,您将使用。
例如:您只需要在屏幕上显示联系人列表,列表项或多或少相似(UI 明智和类别明智)。然后您将使用 Listview。
一个SingleChildScrollView可以与Android中的"ScrollView"进行比较。假设您有很多 UI 个小部件(按钮、输入字段、卡片等),并且它们开始超出屏幕。在这种情况下,您的小部件将溢出并且您将开始看到警告。要解决此问题,您可以使用 SingleChildScrollView 包装 UI 小部件。
对于您的用例,"Recommended" 部分,ListView 将是一个不错的选择。
你可以考虑ListView as an optimisation to the combination of SingleChildScrollView + Column.
通过使用ListView,只有可见的项目才会被安装和涂漆。
另一方面,通过使用 SingleChildScrollView+Column,即使只有少数项目可见,整个项目列表也会被安装+绘制。
权衡是 ListView 不太灵活。所以对于项目数量较少的复杂布局,性能提升可能不值得,在这种情况下我们可以使用 SingleChildScrollView.