返回顶部
首页 > 资讯 > 精选 >Flutter Form表单控件超全总结
  • 722
分享到

Flutter Form表单控件超全总结

2023-06-04 22:06:09 722人浏览 薄情痞子
摘要

注意:无特殊说明,Flutter版本及dart版本如下:Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0FORM、FormField、TextFormField是表单相关控件,类似于H5中form。Form

Flutter Form表单控件超全总结

注意:无特殊说明,Flutter版本及dart版本如下:

  • Flutter版本: 1.12.13+hotfix.5
  • Dart版本: 2.7.0

FORM、FormField、TextFormField是表单相关控件,类似于H5中form。

FormField

FormField是一个表单控件,此控件包含表单的状态,方便更新UI,通常情况下,我们不会直接使用FormField,而是使用TextFormField。

TextFormField

TextFormField继承自FormField,是一个输入框表单,因此TextFormField中有很多关于TextField的属性,TextFormField的基本用法:

TextFormField(  onSaved: (value){    print('$value');  },  autovalidate: false,  validator: (String value){    return value.length>=6?null:'账号最少6个字符';  },)

TextFormField效果如下:

Flutter Form表单控件超全总结

onSaved是一个可选参数,当Form调用FormState.save时才会回调此方法。

autovalidate参数为是否自动验证,设置为true时,TextField发生变化就会调用validator,设置false时,FormFieldState.validate调用时才会回调validator,如果Form的autovalidate设置为true,TextFormField忽略此参数。

validator验证函数,输入的值不匹配的时候返回的字符串显示在TextField的errorText属性位置,返回null,表示没有错误。

Form

Form组件是一个容器类控件,可以包含多个FormField表单控件,这样的好处是统一管理。

在使用Form的时候需要设置其key,通过key获取当前的FormState,然后可以调用FormState的savevalidatereset等方法,一般通过如下方法设置:

final _formKey = GlobalKey<FormState>();Form(    key: _formKey,    ...)

获取FormState并调用相关方法:

var _state = _formKey.currentState;if(_state.validate()){  _state.save();}

validate方法为验证表单数据的合法性,此方法会调用每一个FormField的validator回调,此回调需要字符串表示数据验证不通过,将会在改表单下显示返回的字符串,具体可查看下TextFormField介绍。

save方法回调每一个FormField的save方法,通常情况下保存表单数据。

用Form写一个简单的登录功能,代码如下:

var _account = '';var _pwd = '';final _formKey = GlobalKey<FormState>();Form(  key: _formKey,  child: Column(    children: <Widget>[      TextFormField(        decoration: InputDecoration(hintText: '输入账号'),        onSaved: (value) {          _name = value;        },        validator: (String value) {          return value.length >= 6 ? null : '账号最少6个字符';        },      ),      TextFormField(        decoration: InputDecoration(hintText: '输入密码'),        obscureText: true,        onSaved: (value) {          _pwd = value;        },        validator: (String value) {          return value.length >= 6 ? null : '账号最少6个字符';        },      ),      RaisedButton(        child: Text('登录'),        onPressed: () {          var _state = Form.of(context);          if(_state.validate()){            _state.save();            login(_name,_pwd);          }        },      )    ],  ),)

Flutter Form表单控件超全总结

我们希望用户在输入表单时点击返回按钮提示用户”确认退出吗?”,用法如下:

Form(  key: _formKey,  onWillPop: () async {    return await showDialog<bool>(        context: context,        builder: (BuildContext context) {          return AlertDialog(            title: Text('提示'),            content: Text('确认退出吗?'),            actions: <Widget>[              FlatButton(                child: Text('取消'),                onPressed: () {                  Navigator.of(context).pop(false);                },              ),              FlatButton(                child: Text('确认'),                onPressed: () {                  Navigator.of(context).pop(true);                },              ),            ],          );        });  },  ...)

效果如下:

Flutter Form表单控件超全总结

onWillPop回调决定Form所在的路由是否可以直接返回,该回调需要返回Future<bool>,返回false表示当前路由不会返回;为true,则会返回到上一个路由。此属性通常用于拦截返回按钮。

onChanged:当子表单控件发生变化时回调。

欢迎加入Flutter的微信交流群(MQd_zzy),让我们一起学习,一起进步,开始我们的故事,生活不止眼前的苟且,还有诗和《远方》。

当然我也非常希望您关注我个人的公众号,里面有各种福利等着大家哦。

Flutter Form表单控件超全总结

--结束END--

本文标题: Flutter Form表单控件超全总结

本文链接: https://lsjlt.com/news/240176.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Flutter Form表单控件超全总结
    注意:无特殊说明,Flutter版本及Dart版本如下:Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0Form、FormField、TextFormField是表单相关控件,类似于H5中form。Form...
    99+
    2023-06-04
  • el-form表单验证的一些实用方法总结
    目录前言前置知识点表单校验相关属性方式一(无表单嵌套)方式二(表单嵌套)方式三(动态表单验证)方式四(动态添加校验规则)方式五(手动控制校验状态)总结前言 Form 组件提供了表单验...
    99+
    2023-01-04
    elform表单验证 el-form表单验证的使用 el-form表单验证
  • 如何在HTML5中使用form控件和表单属性
    如何在HTML5中使用form控件和表单属性?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。第一个知识点:我们常见的表单验证有哪些呢  text  文本框标签  password...
    99+
    2023-06-09
  • 怎么解决layui前端框架form表单,table表等内置控件不显示的问题
    这篇文章将为大家详细讲解有关怎么解决layui前端框架form表单,table表等内置控件不显示的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用form表单前需要...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作