我有一个验证为Empty的TextFormField
。
为了控制高度,TextFormField
被嵌套在Container
小部件中。
这会导致意外的副作用,将错误消息重叠显示为附加图片。
要测试示例代码,请按“提交”查看错误。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: SimpleForm(),
);
}
}
class SimpleForm extends StatelessWidget {
@override
Widget build(BuildContext context) {
final formKey = GlobalKey<FormState>();
return SafeArea(
child: Scaffold(
// primary: true,
body: Form(
key: formKey,
child: Column(
children: [
SizedBox(
height: 0,
),
// Container(height: 0,),
Container(
height: 38,
margin: EdgeInsets.all(6),
child: TextFormField(
maxLines: 1,
decoration: InputDecoration(
border: OutlineInputBorder(),
hintText: 'Name',
// errorStyle: TextStyle(fontSize: 0, height: 0),
),
validator: (value) => (value.isEmpty) ? '**' : null,
),
),
FlatButton(
child: Text('Submit'),
onPressed: () {
formKey.currentState.validate();
},
)
],
),
)),
);
}
}
4条答案
按热度按时间xu3bshqb1#
**解决方案1.**您可以为
TextField
的decoration
设置helperText
,并增加Container
的高度:**解决方案2.**您可以将错误消息的行高设置为0(它将显示在文本字段上方):
hec6srdp2#
你可以用这个
xqnpmsa83#
谢谢你的回答Mobina
似乎问题是Flutter限制。暂时..
我决定在顶部显示错误信息。(您的解决方案:1)
没有边框,我可以像往常一样显示错误消息。(您的解决方案:(2)
pbpqsu0x4#
删除容器的高度,它会工作正常。这里是我的程序的一部分,你可以参考