我看过几个例子,使用 ListView
作为主 body
的元素 Scaffold
而在少数教程中,它是 SingleChildScrollView
. 我所理解的是,两者都允许一些轴的滚动的基础上,配置的方向,但不能弄清楚什么时候使用一个比其他?
ListView:SingleChildScrollView
Scaffold
body : ListView
children : Padding/Container
SingleChildScrollView :
Scaffold
body : SingleChildScrollView
child : Column
列表视图如果你有一个要渲染的UI小部件列表,而且这些小部件的数量是动态的,你就会使用这个方法。
比如说,你需要在屏幕上只显示联系人列表,而且列表项或多或少都是类似的(UI)。你只需要在你的屏幕上显示一个联系人列表,而且列表中的项目或多或少是相似的(从用户界面和类别上看)。那么您可以使用列表视图。
A 单个孩子滚动视图 堪比 "ScrollView" 在Android中。假设你有很多UI小部件(Buttons、InputFields、Cards等),并且它们开始离开屏幕。在这种情况下,你的widgets会溢出,你会开始看到警告。为了解决这个问题,你可以用一个SingleChildScrollView来包装你的UI部件。
对于你的案例。"推荐 "部分,ListView会是一个不错的选择。
ListView: 当我们需要为n个元素渲染同一种小部件时,就会用到ListView。
SingleChildScrollView: 当我们的n个元素有不同的widget时使用。
理想情况下,两种情况下我们都需要滚动,Listview有默认的行为,但column和其他widgets没有,所以需要使用SingleChildScrollView。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.