Flutter Flitter中ListView和SingleChildScrollView的区别是什么?

Flutter Flitter中ListView和SingleChildScrollView的区别是什么?,flutter,dart,material-design,flutter-layout,Flutter,Dart,Material Design,Flutter Layout,我见过一些例子使用ListView作为Scaffold的主要body元素,在一些教程中它是SingleChildScrollView。我所理解的是,两者都允许基于配置的方向进行某些轴的滚动,但无法确定何时使用一个轴而不是另一个轴 列表视图: Scaffold body : ListView children : Padding/Container Scaffold body : SingleChildScrollView child : Column SingleCh

我见过一些例子使用
ListView
作为
Scaffold
的主要
body
元素,在一些教程中它是
SingleChildScrollView
。我所理解的是,两者都允许基于配置的方向进行某些轴的滚动,但无法确定何时使用一个轴而不是另一个轴

列表视图:

Scaffold
  body : ListView
    children : Padding/Container
Scaffold
  body : SingleChildScrollView
    child : Column
SingleChildScrollView:

Scaffold
  body : ListView
    children : Padding/Container
Scaffold
  body : SingleChildScrollView
    child : Column

ListView:用于为n个元素呈现相同类型的小部件

SingleChildScrollView:用于n个元素的不同小部件

理想情况下,我们需要滚动、Listview这两种情况都有默认行为,但column和其他小部件不需要使用
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

一个单子女滚动视图可以与Android中的“滚动视图”相比较。假设您有很多UI小部件(按钮、输入字段、卡片等),它们开始离开屏幕。在这种情况下,您的小部件将溢出,您将开始看到警告。要解决这个问题,可以使用SingleChildScrollView包装UI小部件

对于您的用例,<强>“推荐”部分,ListVIEW将是一个不错的选择。

您可以考虑对++/p>的组合进行优化。 通过使用,仅安装和绘制可见的项目

另一方面,通过使用+,即使只有少数项目可见,整个项目列表也会被装入并绘制


折衷的办法是灵活性较低。因此,对于包含少量项目的复杂布局,性能增益可能不值得费心,在这种情况下,我们可以使用。

您能为n个元素详细介绍不同的小部件吗?考虑到我必须显示一些菜单项与建议的部分为。您喜欢哪个,ListView/SingleChildScrollView?为什么?当你在屏幕上只显示ListView小部件时,然后是ListView,但是对于不同的小部件,SingleChildScrollView可以滚动其中声明的所有子部件。感谢@jitsm555的回答,这很有帮助。感谢@Kumar的回答,这很有帮助。感谢@Remi的回答,这很有帮助。只是想知道你是怎么获得这么多关于颤振的知识的?任何你推荐的学习资源。好奇心。我以前问过自己所有这些问题,并自动搜索答案。
Listview本身没有效率,或者您称之为优化,因为它还渲染和绘制列表中的所有项目
Listview.builder()
是使用延迟加载并有效使用资源的工具。@Badamchi no
Listview
也使用延迟渲染。唯一的区别是
子参数的内存分配。Quote“与默认的ListView构造函数不同,它要求一次创建所有项目,ListView.builder()构造函数在项目滚动到屏幕上时创建项目。”参考: