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
Forms “我的表单”小部件没有滚动。如何在颤振中定义表单小部件的大小,完整表单不显示或不可见_Forms_Flutter - Fatal编程技术网

Forms “我的表单”小部件没有滚动。如何在颤振中定义表单小部件的大小,完整表单不显示或不可见

Forms “我的表单”小部件没有滚动。如何在颤振中定义表单小部件的大小,完整表单不显示或不可见,forms,flutter,Forms,Flutter,“我的表单”小部件没有滚动。如何定义颤振中表单小部件的大小,完整表单不显示或不可见。用户必须输入以下数据/信息并提交 下面是我的代码` class MiMobilesPageState extends State<MiMobilesPage> { String _companyname; String _modelname; String _series; String _year; String _serielnumber; String _warrant

“我的表单”小部件没有滚动。如何定义颤振中表单小部件的大小,完整表单不显示或不可见。用户必须输入以下数据/信息并提交

下面是我的代码`

class  MiMobilesPageState extends State<MiMobilesPage> {
  String _companyname;
  String _modelname;
  String _series;
  String _year;
  String _serielnumber;
  String _warrantydate;
  String _servicecentredetails;
  String _name;
  String _mobilenumber;
  String _address;

  final GlobalKey<FormState> _formKey = GlobalKey<FormState>();

  Widget _buildCompanyName() {
    return TextFormField(
      decoration: InputDecoration(labelText: 'CompanyName'),
      maxLength: 10,
      validator: (String value) {
        if (value.isEmpty) {
          return 'Company Name is Required';
        }

        return null;
      },
      onSaved: (String value) {
        _companyname = value;
      },
    );
  }

  Widget _buildModelName() {
    return TextFormField(
      decoration: InputDecoration(labelText: 'ModelName'),
      validator: (String value) {
        if (value.isEmpty) {
          return 'Model Name';
        }


      },
      onSaved: (String value) {
        _modelname = value;
      },
    );
  }

  Widget _buildSeries() {
    return TextFormField(
      decoration: InputDecoration(labelText: 'Series'),
      keyboardType: TextInputType.visiblePassword,
      validator: (String value) {
        if (value.isEmpty) {
          return 'Series is Required';
        }

        return null;
      },
      onSaved: (String value) {
        _series = value;
      },
    );
  }

  Widget _buildYear() {
    return TextFormField(
      decoration: InputDecoration(labelText: 'Year'),
      keyboardType: TextInputType.url,
      validator: (String value) {
        if (value.isEmpty) {
          return 'Year of MFG is Required';
        }

        return null;
      },
      onSaved: (String value) {
        _year = value;
      },
    );
  }

  Widget _buildSerielNumber() {
    return TextFormField(
      decoration: InputDecoration(labelText: 'SerielNumber'),
      keyboardType: TextInputType.phone,
      maxLength: 20,
      validator: (String value) {
        if (value.isEmpty) {
          return 'Seriel-Number is Required';
        }

        return null;
      },
      onSaved: (String value) {
        _serielnumber = value;
      },
    );
  }

  Widget _buildWarrantyDate() {
    return TextFormField(
      decoration: InputDecoration(labelText: 'Warranty-Date'),
      keyboardType: TextInputType.number,
      maxLength: 10,
      validator: (String value) {
        int date = int.tryParse(value);

        if (date == null || date <= 0) {
          return 'Warranty Date must be greater than 0';
        }

        return null;
      },
      onSaved: (String value) {
        _warrantydate = value;
      },
    );
  }


  Widget _buildServiceCentreDetails() {
    return TextFormField(
      decoration: InputDecoration(labelText: 'ServiceCentreDetails'),
      maxLength: 10,
      validator: (String value) {
        if (value.isEmpty) {
          return 'Service Centre Details are  Required';
        }

        return null;
      },
      onSaved: (String value) {
        _servicecentredetails = value;
      },
    );
  }



  Widget _buildName() {
    return TextFormField(
      decoration: InputDecoration(labelText: 'Name'),
      maxLength: 10,
      validator: (String value) {
        if (value.isEmpty) {
          return 'Name is Required';
        }

        return null;
      },
      onSaved: (String value) {
        _name = value;
      },
    );
  }



  Widget _buildMobileNumber() {
    return TextFormField(
      decoration: InputDecoration(labelText: 'MobileNumber'),
      maxLength: 10,
      validator: (String value) {
        if (value.isEmpty) {
          return 'Mobile Number is Required';
        }

        return null;
      },
      onSaved: (String value) {
        _mobilenumber = value;
      },
    );
  }



  Widget _buildAddress() {
    return TextFormField(
      decoration: InputDecoration(labelText: 'Address'),
      maxLength: 10,
      validator: (String value) {
        if (value.isEmpty) {
          return 'Address is Required';
        }
        if (!RegExp(
            r"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?")
            .hasMatch(value)) {
          return 'Please enter a valid Address';
        }
        return null;
      },
      onSaved: (String value) {
        _companyname = value;
      },
    );
  }




  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(centerTitle: true,backgroundColor: Colors.lightBlueAccent,title: Text("Basic Details",style:
      TextStyle(fontSize: 20), textAlign: TextAlign.center),
          actions:<Widget>[IconButton(icon:Icon(Icons.home),  onPressed: (){
      //debugPrint("Add New Device Cattegorry");
      Navigator.push(context,MaterialPageRoute(builder:(context){
        return MyHomePage();
      }
      )
      ); //
    },



    )    ],






      ),
      body: Container(
        margin: EdgeInsets.all(24),
        child: Form(
          key: _formKey,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget> [
              _buildCompanyName(),
              _buildModelName(),
              _buildSeries(),
              _buildYear(),
              _buildSerielNumber(),
              _buildWarrantyDate(),
              _buildServiceCentreDetails(),
              _buildName(),
              _buildMobileNumber(),
              _buildAddress(),

              SizedBox(height:400),
              RaisedButton(
                child: Text(
                  'Submit',
                  style: TextStyle(color: Colors.blue, fontSize: 20),
                ),
                onPressed: () {
                  if (!_formKey.currentState.validate()) {
                    return;
                  }

                  _formKey.currentState.save();

                  print(_companyname);
                  print(_modelname);
                  print(_series);
                  print(_year);
                  print(_serielnumber);
                  print(_warrantydate);
                  print(_servicecentredetails);
                  print(_name);
                  print(_mobilenumber);
                  print(_address);

                  //Send to API
                },


              )
            ],
          ),
        ),
      ),
    );
  }
}
类MiMobilesPageState扩展状态{
字符串_companyname;
字符串_modelname;
串(u)系列,;
弦年;
字符串_序列号;
字符串_d;
字符串\u服务中心详细信息;
字符串\u名称;
字符串mobilenumber;
字符串地址;
最终的GlobalKey _formKey=GlobalKey();
小部件_buildCompanyName(){
返回TextFormField(
装饰:输入装饰(标签文本:“公司名称”),
最大长度:10,
验证器:(字符串值){
if(value.isEmpty){
返回“需要公司名称”;
}
返回null;
},
onSaved:(字符串值){
_公司名称=价值;
},
);
}
小部件_buildModelName(){
返回TextFormField(
装饰:输入装饰(labelText:“ModelName”),
验证器:(字符串值){
if(value.isEmpty){
返回“模型名”;
}
},
onSaved:(字符串值){
_modelname=值;
},
);
}
Widget_buildSeries(){
返回TextFormField(
装饰:输入装饰(labelText:“系列”),
键盘类型:TextInputType.visiblePassword,
验证器:(字符串值){
if(value.isEmpty){
返回“需要系列”;
}
返回null;
},
onSaved:(字符串值){
_系列=数值;
},
);
}
小部件_buildYear(){
返回TextFormField(
装饰:输入装饰(标签文本:“年”),
键盘类型:TextInputType.url,
验证器:(字符串值){
if(value.isEmpty){
返回“需要制造年份”;
}
返回null;
},
onSaved:(字符串值){
_年份=价值;
},
);
}
小部件_buildSerielNumber(){
返回TextFormField(
装饰:输入装饰(labelText:“序列号”),
键盘类型:TextInputType.phone,
最大长度:20,
验证器:(字符串值){
if(value.isEmpty){
返回“需要序列号”;
}
返回null;
},
onSaved:(字符串值){
_序列号=值;
},
);
}
小部件{
返回TextFormField(
装饰:输入装饰(标签文本:“保修日期”),
键盘类型:TextInputType.number,
最大长度:10,
验证器:(字符串值){
int日期=int.tryParse(值);

if(date==null | | date如果希望滚动,请将
包装在
SingleChildScrollView

像这样

Form(
 child: SingleChildScrollView(
   child: Column(
     children: [...]
    )
 )
)

我假设
SizedBox(高度:400),
是一个打字错误,意思是
40

要使您的
表单
滚动,您需要将其包装在一个
可滚动的
小部件中,通常是一个
列表视图
或一个
SingleChildScrollView

我使用您的代码添加了一个示例:

body:SingleChildScrollView(//使用SingleChildScrollView包装以允许滚动
子:容器(
保证金:全部(24),
孩子:表格(
//键:_formKey,
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
_buildCompanyName(),
_buildModelName(),
_buildSeries(),
_buildYear(),
_buildSerielNumber(),
_BuildQuartyDate(),
_buildServiceCentredDetails(),
_buildName(),
_buildMobileNumber(),
_buildAddress(),
SizedBox(高度:400),//如果这不是我假设的错误,请更改为400
升起的按钮(
子:文本(
“提交”,
样式:TextStyle(颜色:Colors.blue,字体大小:20),
),
已按下:(){
如果(!\u formKey.currentState.validate()){
返回;
}
_formKey.currentState.save();
打印(_companyname);
打印(_modelname);
印刷品(_系列);
印刷品(每年);
打印(序列号);
打印(_保修日期);
打印(服务中心详细信息);
打印(_名称);
打印(_mobilenumber);
打印地址;
//发送到API
},
)
],
),
),
),
);

谢谢,现在我的表单小部件滚动非常好。它甚至可以用于SizedBox(高度:100)。我认为这不是问题所在。但我不知道表单数据在哪里提交。提交没有发生。我的意思是提交后它将保存或存储在哪里。