Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在颤振中单击按钮添加字段_Flutter_Flutter Layout_Flutter Sliver_Generate_Form Fields - Fatal编程技术网

Flutter 如何在颤振中单击按钮添加字段

Flutter 如何在颤振中单击按钮添加字段,flutter,flutter-layout,flutter-sliver,generate,form-fields,Flutter,Flutter Layout,Flutter Sliver,Generate,Form Fields,单击“添加”按钮时如何添加文本字段。它位于应用程序栏中。当我点击add按钮时,它将添加四个字段,我已经在我尝试过的示例代码中创建了这四个字段。所以请任何人帮忙。你的帮助可以让我开心:) 在这段代码中有四个类似的字段_buildidentificationtype1、\u builddocumentnumber1、\u buildexpirydate1、\u buildissuingauthority1 我想在单击add按钮时生成这四个字段 import 'dart:io'; import 'p

单击“添加”按钮时如何添加文本字段。它位于应用程序栏中。当我点击add按钮时,它将添加四个字段,我已经在我尝试过的示例代码中创建了这四个字段。所以请任何人帮忙。你的帮助可以让我开心:)

在这段代码中有四个类似的字段_buildidentificationtype1、\u builddocumentnumber1、\u buildexpirydate1、\u buildissuingauthority1 我想在单击add按钮时生成这四个字段

import 'dart:io';

import 'package:datetime_picker_formfield/datetime_picker_formfield.dart';
import 'package:flutter/material.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:image_picker/image_picker.dart';
import 'package:intl/intl.dart';
import 'package:tudo/src/modules/bsp_signup/bsp_licensed_signup_terms/bsp_licensed_signup_terms_page.dart';
import 'package:tudo/src/modules/bsp_signup/bsp_signup_common_model.dart';
import 'package:tudo/src/styles/colors.dart';

import 'package:tudo/src/utils/navigation_helper.dart';
import 'package:tudo/src/utils/validator.dart';
import 'package:tudo/src/widgets/tudo_selection_widget/TudoConditionWidget.dart';
import 'package:tudo/src/widgets/tudo_text_widget/TudoTextWidget.dart';

class BspUnlicensedSignupPage extends StatefulWidget {
  static const String routeName = "/bspUnlicensedSignup";
  final BspSignupCommonModel bspSignupCommonModel;

  BspUnlicensedSignupPage({
    Key key,
    @required this.bspSignupCommonModel,
  }) : super(key: key);

  @override
  _BspUnlicensedSignupPageState createState() =>
      _BspUnlicensedSignupPageState();
}

class _BspUnlicensedSignupPageState extends State<BspUnlicensedSignupPage> {
  final GlobalKey<FormState> _formKey = GlobalKey<FormState>();

  List<Object> images = List<Object>();
  Future<File> _imageFile;
  @override
  void initState() {
    super.initState();
    debugPrint(
        'BSP SIGNUP DATA: ${widget.bspSignupCommonModel.businessPhoneNo}');
    debugPrint('BSP SIGNUP DATA: ${widget.bspSignupCommonModel.businessYear}');
    debugPrint(
        'BSP SIGNUP DATA: ${widget.bspSignupCommonModel.numberofEmployees}');
    debugPrint('BSP SIGNUP DATA: ${widget.bspSignupCommonModel.businessType}');
    debugPrint(
        'BSP SIGNUP DATA: ${widget.bspSignupCommonModel.businessLegalName}');
    setState(() {
      images.add("Add Image");
      images.add("Add Image");
      images.add("Add Image");
      images.add("Add Image");
      images.add("Add Image");
    });
  }

  bool informationislegitimate = false;
  DateTime expirydate1 = DateTime.now();
  DateTime expirydate2 = DateTime.now();

  final format = DateFormat("yyyy-MM-dd");
  final format2 = DateFormat("yyyy-MM-dd");
  final TextEditingController clrbusinesslicense = TextEditingController();
  final TextEditingController clrbusinesslicense2 = TextEditingController();
  final TextEditingController clrissuingauthority = TextEditingController();
  final TextEditingController clrissuingauthority2 = TextEditingController();
  String _licenseno;
  String _licenseno2;
  String illusingauthority;
  String illusingauthority2;
  List<String> _type2 = <String>[
    'Passport',
    'Driving License',
    'Voter ID card',
    'Ration Card',
    'Aadhar'
        'Other Id'
  ];
  String type2 = 'Passport';
  List<String> _type = <String>[
    'Passport',
    'Driving License',
    'Voter ID card',
    'Ration Card',
    'Aadhar'
        'Other Id'
  ];
  String type = 'Passport';
  Map<String, String> _formdata = {};
  var _myPets = List<Widget>();
  int _index = 1;

  void _add() {
    int keyValue = _index;
    _myPets = List.from(_myPets)
      ..add(Column(
        key: Key("${keyValue}"),
        children: <Widget>[
          ListTile(
            leading: Text('Pet $_index : '),
            title: TextField(
              onChanged: (val) => _formdata['pet${keyValue - 1}'] = val,
            ),
          ),
          ListTile(
            leading: Text('Name of Pet $_index : '),
            title: TextField(
              onChanged: (val) {
                _formdata['name${keyValue - 1}'] = val;
              },
            ),
          ),
        ],
      ));

    setState(() => ++_index);
  }

  Widget _buildidentificationtype1() {
    return FormBuilder(
      autovalidate: true,
      child: FormBuilderCustomField(
          attribute: "Identification type",
          validators: [FormBuilderValidators.required()],
          formField: FormField(
            builder: (FormFieldState<dynamic> field) {
              return InputDecorator(
                decoration: InputDecoration(
                  prefixIcon: Icon(Icons.location_on),
                  labelText: 'Select Personal Identification type',
                  errorText: field.errorText,
                ),
                isEmpty: type == '',
                child: new DropdownButtonHideUnderline(
                  child: new DropdownButton(
                    value: type,
                    isDense: true,
                    onChanged: (String newValue) {
                      setState(() {
                        type = newValue;
                        field.didChange(newValue);
                      });
                    },
                    items: _type.map(
                      (String value) {
                        return new DropdownMenuItem(
                          value: value,
                          child: new Text(value),
                        );
                      },
                    ).toList(),
                  ),
                ),
              );
            },
          )),
    );
  }

  Widget _builddocumentnumber1() {
    return new TudoTextWidget(
      controller: clrbusinesslicense,
      prefixIcon: Icon(FontAwesomeIcons.idCard),
      labelText: "Business License No",
      hintText: "Business License No",
      validator: Validators().validateLicenseno,
      onSaved: (val) {
        _licenseno = val;
      },
    );
  }

  Widget _buildexpirydate1() {
    return FormField(builder: (FormFieldState state) {
      return DateTimeField(
        decoration: InputDecoration(
            labelText: expirydate1.toString(),
            prefixIcon: Icon(Icons.date_range)),
        format: format,
        onShowPicker: (context, currentValue) async {
          final DateTime picked = await showDatePicker(
              context: context,
              initialDate: expirydate1,
              firstDate: DateTime(1900),
              lastDate: DateTime.now());
          if (picked != null && picked != expirydate1)
            setState(() {
              expirydate1 = picked;
              print(expirydate1);
            });
        },
      );
    });
  }

  Widget _buildissuingauthority1() {
    return new TudoTextWidget(
      prefixIcon: Icon(FontAwesomeIcons.idCard),
      labelText: "Photo Identification issuing authority ",
      hintText: "Photo Identification issuing authority ",
      validator: (val) => Validators.validateName(val, "Issuing Authority"),
      onSaved: (val) {
        illusingauthority = val;
      },
      controller: clrissuingauthority,
    );
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: AppBar(
        title: Text("BSP Unlicensed Signup"),
        leading: IconButton(
          icon: Icon(Icons.arrow_back_ios),
          onPressed: () {
            NavigationHelper.navigatetoBack(context);
          },
        ),
        actions: <Widget>[IconButton(icon: Icon(Icons.add), onPressed: _add)],
        centerTitle: true,
      ),
      body: Container(
        height: double.infinity,
        width: double.infinity,
        child: Form(
          autovalidate: true,
          key: _formKey,
          child: Stack(
            children: <Widget>[
              // Background(),
              SingleChildScrollView(
                padding: const EdgeInsets.all(30.0),
                child: new Container(
                  child: new Column(
                    mainAxisAlignment: MainAxisAlignment.start,
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      _buildidentificationtype1(),
                      _builddocumentnumber1(),
                      _buildexpirydate1(),
                      _buildissuingauthority1(),
                    ],
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
导入'dart:io';
导入“包:datetime_picker_formfield/datetime_picker_formfield.dart”;
进口“包装:颤振/材料.省道”;
导入“包:flatter_form_builder/flatter_form_builder.dart”;
导入“package:font_awesome_flatter/font_awesome_flatter.dart”;
导入“包:image_picker/image_picker.dart”;
导入“包:intl/intl.dart”;
导入“包:tudo/src/modules/bsp_-signup/bsp_-licensed_-signup_-terms/bsp_-licensed_-signup_-terms/bsp_-signed_-terms_-page.dart”;
导入“包:tudo/src/modules/bsp_signup/bsp_signup_common_model.dart”;
导入“package:tudo/src/style/colors.dart”;
导入“package:tudo/src/utils/navigation_helper.dart”;
导入“package:tudo/src/utils/validator.dart”;
导入“package:tudo/src/widgets/tudo_selection_widget/TudoConditionWidget.dart”;
导入“包:tudo/src/widgets/tudo_text_widget/TudoTextWidget.dart”;
类BSPUnlicedSignupPage扩展StatefulWidget{
静态常量字符串routeName=“/bspunlessedsignup”;
最终BspSignupCommonModel BspSignupCommonModel;
BSP未经许可的SignupPage({
关键点,
@需要此.bspSignupCommonModel,
}):super(key:key);
@凌驾
_BSUnlicensedSignupPageState createState()=>
_BSPNalizedSignupPageState();
}
类bspuunlicensedSignupPageState扩展状态{
最终的GlobalKey _formKey=GlobalKey();
列表图像=列表();
未来图像文件;
@凌驾
void initState(){
super.initState();
调试打印(
'BSP注册数据:${widget.bspSignupCommonModel.businessPhoneNo}');
debugPrint('BSP注册数据:${widget.bspSignupCommonModel.businessYear}');
调试打印(
'BSP注册数据:${widget.bspSignupCommonModel.numberofEmployees}');
debugPrint('BSP注册数据:${widget.bspSignupCommonModel.businessType}');
调试打印(
'BSP注册数据:${widget.bspSignupCommonModel.businessLegalName}');
设置状态(){
图像。添加(“添加图像”);
图像。添加(“添加图像”);
图像。添加(“添加图像”);
图像。添加(“添加图像”);
图像。添加(“添加图像”);
});
}
bool informationisregimitate=false;
DateTime expireydate1=DateTime.now();
DateTime expireydate2=DateTime.now();
最终格式=日期格式(“yyyy-MM-dd”);
最终格式2=日期格式(“yyyy-MM-dd”);
最终TextEditingController clrbusinesslicense=TextEditingController();
最终文本编辑控制器clrbusinesslicense2=文本编辑控制器();
最终TextEditingController CLRISSINGAUTHORITY=TextEditingController();
最终TextEditingController CLRISSINGAUTHORITY2=TextEditingController();
字符串\u许可证编号;
字符串许可证2;
字符串幻觉权限;
字符串illusingauthority2;
列表类型2=[
“护照”,
“驾驶执照”,
"选民身份证",,
“配给卡”,
“阿达尔”
“其他Id”
];
字符串类型2='Passport';
列表类型=[
“护照”,
“驾驶执照”,
"选民身份证",,
“配给卡”,
“阿达尔”
“其他Id”
];
字符串类型='Passport';
映射_formdata={};
var_myPets=List();
int_指数=1;
void_add(){
int keyValue=_索引;
_myPets=列表。从(\u myPets)
…添加(第列)(
key:key(“${keyValue}”),
儿童:[
列表砖(
前导:文本('Pet$\索引:'),
标题:文本字段(
一旦更改:(val)=>_formdata['pet${keyValue-1}']=val,
),
),
列表砖(
前导:文本('Pet$_索引的名称:'),
标题:文本字段(
一旦更改:(val){
_formdata['name${keyValue-1}']=val;
},
),
),
],
));
设置状态(()=>++\u索引);
}
小部件_buildidentificationtype1(){
返回表单生成器(
自动验证:true,
子项:FormBuilderCustomField(
属性:“标识类型”,
验证器:[FormBuilderValidators.required()],
formField:formField(
生成器:(FormFieldState字段){
返回输入装饰器(
装饰:输入装饰(
前缀图标:图标(图标位置打开),
labelText:“选择个人标识类型”,
errorText:field.errorText,
),
isEmpty:type=='',
子项:新的下拉按钮hideUnderline(
孩子:新的下拉按钮(
值:类型,
是的,
onChanged:(字符串newValue){
设置状态(){
类型=新值;
字段.didChange(newValue);
});
},
项目:\ u type.map(
(字符串值){
返回新的DropdownMenuItem(
价值:价值,
子项:新文本(值),
);
},
).toList(),
),
),
);
},
)),
);
}
小部件_builddocumentnumber1(){
返回新的TudoTextWidget(
控制器:CLR商业许可证,
前缀:图标(FontAwesomeIcons.idCard),
labelText:“营业执照编号”,
hintText:“营业执照编号”,
validator:Validators().validateLicenseno,
保存:(val){
_许可证编号=val;
},
);
}
小部件_buildexpirydate1(){
返回表单字段(生成器)
//initialize with false
isClicked = false;

_add() {
  setState(() {
   isClicked = true;
  })
}

isClicked ? _buildidentificationtype1() : Container(),
isClicked ? _builddocumentnumber1() : Container(),
isClicked ? _buildexpirydate1() : Container(),
isClicked ? _buildissuingauthority1() : Container(),

import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
  home: MyHomePage(),
 );
}
}

class MyHomePage extends StatefulWidget {
 @override
 _MyHomePageState createState() => _MyHomePageState();
 }

 class _MyHomePageState extends State<MyHomePage> {
 List<Item> itemList = [
 Item("ID1", "First product"),
  Item("ID2", "Second product"),
 ];

  Map<String, int> quantities = {};

  void takeNumber(String text, String itemId) {
  try {
  int number = int.parse(text);
  quantities[itemId] = number;
  print(quantities);
 } on FormatException {}
  }

 Widget singleItemList(int index) {
Item item = itemList[index];

return Container(
  decoration: BoxDecoration(
    color: Colors.white,
  ),
  child: Row(
    children: [
      Expanded(flex: 1, child: Text("${index + 1}")),
      Expanded(
        flex: 3,
        child: TextField(
          keyboardType: TextInputType.number,
          onChanged: (text) {
            takeNumber(text, item.id);
          },
          decoration: InputDecoration(
            labelText: "Qty",
          ),
        ),
      ),
    ],
  ),
);
 }

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(title: Text("Demo")),
    body: Center(
      child: ListView.builder(
         shrinkWrap: true,
          itemCount: itemList.length,
          itemBuilder: (context, index) {
           if (itemList.isEmpty) {
            return CircularProgressIndicator();
            } else {
             return singleItemList(index);
           }
         }),
        ),
      );
    }
   }

  class Item {
  final String id;
  final String name;

  Item(this.id, this.name);
   }