嘿,也许有人可以帮我弄清楚如何在 Flutter 中实现正确的表单验证。
所以基本上在 InputDecoration 我们有
decoration: InputDecoration(
// focusedBorder: OutlineInputBorder(
// borderSide: BorderSide(color: Colors.white, width: 3.0),
// ),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.red, width: 3.0),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.greenAccent, width: 3.0),
),
focusedErrorBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.red, width: 3.0),
),
border: OutlineInputBorder(
borderSide: BorderSide(color: Colors.white, width: 3.0),
),
labelText: 'Email',
// errorText: !_isValid ? "Invalid Email" : null,
labelStyle: TextStyle(color: Colors.white),
prefixIcon: Padding(
padding: const EdgeInsets.only(top: 10, left: 13),
child: FaIcon(
FontAwesomeIcons.at,
color: Colors.white,
size: 25,
),
),
),
所以问题是我无法理解如何在不触摸表单时设置常规边框,而不是在触摸表单时,在每个输入上它必须验证输入并在无效时设置错误。我知道在 TextFormField 上我可以传递 onchange 函数并进行验证
onChanged: (value) {
if (value.isEmpty || !value.contains('@')) {
setState(() {
_isValid = false;
});
print('invalid');
} else {
setState(() {
_isValid = true;
});
}
使用这种方法我有问题,首先我必须设置 _isValid 的初始值,在这种情况下,当表单打开且未触摸时,它已经启用或出错,具体取决于 _isValid 的初始值。
我来自网络并与 Angular 合作,我们有反应形式,也许有人解释了如何在颤振中实现类似的行为?