android - 如何修复颤振中的尺寸错误?
问题描述
我有 4 个字段并且具有标准行为,就在我转到此页面时,一切都很好。但是当您单击最后一个字段时,它显示没有足够的大小,我想让它滚动以便您输入的内容可见。但是我得到一个无限大小的错误,我不知道如何处理它。任何人都可以帮忙吗?最好有一个例子,如果可能的话,有文档来理解为什么会发生这种情况......
import 'package:flutter/material.dart';
import 'package:testdb/models/cart.dart';
import 'package:testdb/widgets/cart_list_item.dart';
import 'package:provider/provider.dart';
import 'package:http/http.dart' as http;
import 'package:flutter_masked_text/flutter_masked_text.dart';
class Order extends StatefulWidget {
@override
_OrderState createState() => _OrderState();
}
class _OrderState extends State<Order> {
// String _name = "Tom";
final _controllerName = TextEditingController();
final _controllerAdr = TextEditingController();
final _controllerCom = TextEditingController();
final _controllerPhone = new MaskedTextController(mask: '+000(00)000-00-00');
@override
void initState() {
super.initState();
}
@override
void dispose() {
_controllerName.dispose();
_controllerPhone.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final cartData = context.watch<CartDataProvider>();
return SingleChildScrollView(
child:Scaffold(
appBar: AppBar(
title: Text('t'),
),
body: Padding(
padding: EdgeInsets.only(top: 50, left: 20, right: 20),
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.only(bottom: 50),
child: Text("t",
style: TextStyle(
fontSize: 26,
fontWeight: FontWeight.bold,
)),
),
TextFormField(
validator: (value) {
if (value == null || value.isEmpty) {
return 't';
}
return null;
},
decoration: InputDecoration(
hintText: "t",
labelText: "t",
icon: Icon(Icons.person)),
style: TextStyle(fontSize: 22),
controller: _controllerName),
TextFormField(
validator: (value) {
if (value == null || value.isEmpty || value.length < 12) {
return 't';
}
return null;
},
decoration: InputDecoration(
hintText: "333",
labelText: "t",
icon: Icon(Icons.phone),
),
style: TextStyle(fontSize: 22),
keyboardType: TextInputType.number,
controller: _controllerPhone),
TextFormField(
validator: (value) {
if (value == null || value.isEmpty) {
return 't';
}
return null;
},
decoration: InputDecoration(
hintText: "t",
labelText: "t",
icon: Icon(Icons.home)),
style: TextStyle(fontSize: 22),
controller: _controllerAdr),
TextFormField(
validator: (value) {
if (value == null || value.isEmpty) {
return 't';
}
return null;
},
maxLines: null,
keyboardType: TextInputType.multiline,
decoration: InputDecoration(
hintText: "t",
labelText: "test",
icon: Icon(Icons.message)),
style: TextStyle(fontSize: 22),
controller: _controllerCom),
Padding(
padding: EdgeInsets.only(top: 50),
child:ElevatedButton(
child: Text("test"),
onPressed: () {
var text = '''
Test order
${_controllerName.text}
${_controllerPhone.text}
${_controllerAdr.text}
${_controllerAdr.text}
${cartData.toString()}
''';
var response = http.get(Uri.parse(
''));
})
)
],
))));
}
}
解决方案
import 'package:flutter/material.dart';
import 'package:testdb/models/cart.dart';
import 'package:testdb/widgets/cart_list_item.dart';
import 'package:provider/provider.dart';
import 'package:http/http.dart' as http;
import 'package:flutter_masked_text/flutter_masked_text.dart';
class Order extends StatefulWidget {
@override
_OrderState createState() => _OrderState();
}
class _OrderState extends State<Order> {
// String _name = "Tom";
final _controllerName = TextEditingController();
final _controllerAdr = TextEditingController();
final _controllerCom = TextEditingController();
final _controllerPhone = new MaskedTextController(mask: '+000(00)000-00-00');
@override
void initState() {
super.initState();
}
@override
void dispose() {
_controllerName.dispose();
_controllerPhone.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final cartData = context.watch<CartDataProvider>();
return Scaffold(
appBar: AppBar(
title: Text('t'),
),
body: SingleChildScrollView(
child: Padding(
padding: EdgeInsets.only(top: 50, left: 20, right: 20),
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.only(bottom: 50),
child: Text("t",
style: TextStyle(
fontSize: 26,
fontWeight: FontWeight.bold,
)),
),
TextFormField(
validator: (value) {
if (value == null || value.isEmpty) {
return 't';
}
return null;
},
decoration: InputDecoration(
hintText: "t",
labelText: "t",
icon: Icon(Icons.person)),
style: TextStyle(fontSize: 22),
controller: _controllerName),
TextFormField(
validator: (value) {
if (value == null || value.isEmpty || value.length < 12) {
return 't';
}
return null;
},
decoration: InputDecoration(
hintText: "333",
labelText: "t",
icon: Icon(Icons.phone),
),
style: TextStyle(fontSize: 22),
keyboardType: TextInputType.number,
controller: _controllerPhone),
TextFormField(
validator: (value) {
if (value == null || value.isEmpty) {
return 't';
}
return null;
},
decoration: InputDecoration(
hintText: "t",
labelText: "t",
icon: Icon(Icons.home)),
style: TextStyle(fontSize: 22),
controller: _controllerAdr),
TextFormField(
validator: (value) {
if (value == null || value.isEmpty) {
return 't';
}
return null;
},
maxLines: null,
keyboardType: TextInputType.multiline,
decoration: InputDecoration(
hintText: "t",
labelText: "test",
icon: Icon(Icons.message)),
style: TextStyle(fontSize: 22),
controller: _controllerCom),
Padding(
padding: EdgeInsets.only(top: 50),
child:ElevatedButton(
child: Text("test"),
onPressed: () {
var text = '''
Test order
${_controllerName.text}
${_controllerPhone.text}
${_controllerAdr.text}
${_controllerAdr.text}
${cartData.toString()}
''';
var response = http.get(Uri.parse(
''));
})
)
],
)),
));
}
}
推荐阅读
- javascript - 设置状态导致 TypeError: this is undefined
- java - 参数中的 Java 语法
- powershell - (Get-Date).ToUniversalTime() 转换为字符串但不更改格式
- java - 在 Android Things 中使用 SharedPreferences
- mysql - 想用两个请求值查找
- javascript - 在异步存储中保存和删除每周计划反应原生
- python - 从多个文件中删除多行
- django - 为什么这种情况不起作用?- 如果在模板中
- sql - 比较两列的字符串
- mysql - MySQL SELECT-query:在查询中使用 MIN()-function 时如何获得正确的 ID?