Listview.builder和Listview有什么区别? 我们可以使用ListView.builder提交表单吗?
我现在正在使用Listview.builder创建表单。
答案 0 :(得分:1)
ListView.builder()根据需要构建小部件(当它们可见时)。此过程也称为“延迟渲染小部件”。
答案 1 :(得分:1)
ListView和ListView.builder
的主要区别 ListView
构造函数要求我们一次创建所有项。当列表项较少并且可以在屏幕上看到所有列表项时,这很好,但如果列表项较长,则不是一个好习惯。
而
ListView.Builder
构造函数将按需滚动滚动到屏幕上来创建项目。这是开发“列表”窗口小部件的最佳实践,其中,仅当在屏幕上看到项目时,项目才会呈现。
答案 2 :(得分:0)
摘自官方文档:
https://api.flutter.dev/flutter/widgets/ListView/ListView.builder.html
ListView:通过创建一个可滚动的线性小部件数组 显式列表。 此构造函数适用于少量的列表视图 孩子,因为构建列表需要为每个人做工作 可能显示在列表视图中而不是 那些实际上是可见的孩子。
https://api.flutter.dev/flutter/widgets/ListView/ListView.html
ListView.builder创建可滚动的线性小部件数组, 是按需创建的。此构造函数适用于列表视图 拥有大量(或无限)子代,因为生成器是 仅针对那些实际可见的孩子。
基本上,buider
构造函数创建一个惰性列表。当用户向下滚动列表时,Flutter会“按需”构建窗口小部件。
默认的ListView构造函数一次构建整个列表。
在您的情况下,默认构造工作良好,因为您现在已经在Column()上放置了多少个小部件。
答案 3 :(得分:0)
要了解每个人之间的区别,请访问ListView Class。
当然,您可以使用ListView.builder()
创建表单,但是我发现尝试使用它时会遇到一些问题。
ListView()
之外还有更多项目,我不能将其放入Column()
中的任何一个Form()
中。ListView.builder()
的位置,我什至都无法添加Button。因此,您必须使用textInputAction: TextInputAction.done
在onFieldSubmitted:
上执行某种操作array
方法时将它们全部添加到onSaved:
中,我认为这不是一个好方法(也许是)。话虽如此,这就是我用来使其工作的方式:
body: Form(
key: _key,
child: Container(
child: ListView.builder(
itemCount: 5,
itemBuilder: (context, index) {
return TextFormField(
textInputAction: TextInputAction.done,
validator: (text) {
if (text.isEmpty) {
return "The text is empty";
}
},
onFieldSubmitted: (text) {
_onSaved();
},
onSaved: (text) {
form.add(text);
},
);
},
),
),
),
void _onSaved() {
if (_key.currentState.validate()) {
_key.currentState.save();
print(form);
}
}
结果:
I/flutter ( 7106): [fjjxjx, hxjxjcj, jxjxjfj, jfjfj, jxjxj]