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

标签 android mobile flutter dart

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

我正在用我的 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/

相关文章:

Android - 导出加密 key 以注册已发布的应用程序

当窗口大小增加时,jQuery 移动菜单不会消失

android - 根据 oAuth2.0 身份验证应该在设备 native 浏览器中进行,那么为什么所有已知的应用程序都具有 native 登录屏幕

flutter - zsh:找不到命令: flutter

java - 使用标准 main(String [] args) 方法运行单个 java 文件 - Android Studio

android - 如何在Android中阅读音频和文本

flutter - 错误 : google_fonts was unable to load font

ios - 将带有绑定(bind) Rust 二进制文件的 Flutter 应用程序发布到 AppStore 时出现问题

Java 字符串比较

javascript - navigator.geolocation 报告错误的第一个值