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)。我认为这不是问题所在。但我不知道表单数据在哪里提交。提交没有发生。我的意思是提交后它将保存或存储在哪里。