gpt4 book ai didi

android - 在 Flutter Form Widget 中动态添加字段

转载 作者:行者123 更新时间:2023-11-29 22:51:50 25 4
gpt4 key购买 nike

我一整天都在寻找答案,我正在尝试动态地在表单中添加字段(目前,通过创建一个创建字段的循环),我找不到我的问题的任何答案.如果你能做点什么,请告诉我:

我正在用我的 Fieldset 类创建一个 View ,这是我的表单,我在里面放了一个 Field 列表:

List<Field> fieldset;

void main() {

for (int i = 0; i < 10; i++) {
Field field = Field();
fieldset.add(field);
};
runApp(MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final appTitle = 'Form Validation Demo';

return MaterialApp(
title: appTitle,
home: Scaffold(
appBar: AppBar(
title: Text(appTitle),
),
body: Fieldset(fieldset: List<Field>()),
),
);
}
}

如您所见,我只是启动应用程序,使用循环创建一些字段并将其放入 Fieldset Widget 继续:

class Fieldset extends StatefulWidget {
final List<Field> fieldset;
final state = _FieldsetState();

@override
_ FieldsetState createState() {
return _FieldsetState();
}

Fieldset({this.fieldset});


}

class _FieldsetState extends State<Fieldset> {
final _formKey = GlobalKey<FormState>();

@override
Widget build(BuildContext context) {
return Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget> [
// widget.fieldset.forEach((f) => f.build(context)) ==> THIS DOESN'T WORK
,
RaisedButton(
onPressed: () {
if (_formKey.currentState.validate()) {
Scaffold.of(context)
.showSnackBar(SnackBar(content: Text('processing')));
}
},
child: Text('Submit'),
)
]));
}
}

我真的希望你能帮助我,看来我错过了什么..

最佳答案

试试这个

var listOfFields = <Widget>[];
listOfFields.add(RaisedButton( onPressed : (){
addNewField();
}, child: Text("Add new Field")
));
void addNewField(){
setState((){
listOfFields.add(TextFormField());
});
}
final _formKey = GlobalKey<FormState>()

@override
Widget build(BuildContext context) {
return Form(
key : _formKey,
child :Scaffold(
body : ListView.builder(
itemCount: listOfFields.length,
itemBuilder: (context, index){
return listOfFields[index];
}
)
)
);

}

关于android - 在 Flutter Form Widget 中动态添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57824417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com