flutter Form 表单组件的初步解析

在一个正常的应用程序中, 表单是用户交互的很重要的一部分

flutter 中你可以自己"绑定"用户的输入数据和 state 中的字段

当然, 还有另一个选择, Flutter 内置了 Form 组件给我们使用, 这个组件是 flutter 框架提供出来帮助我们操作表单的一个组件, 应该是官方较为推荐的方案

不过 Form 的相关中文文章不太多, 基本都是介绍一下 TextFormField 的使用, 更多的 api 云里雾里的, 可能有些朋友不太好理解
我粗略的解析下源码和自定义, 帮助看过的朋友理解下 Form 体系

Form 体系的简单使用

自动校验

官方提供给了我们一些组件来结合 Form 使用, 最常见的就是 TextFormField

import 'package:flutter/material.dart';

class SimpleUseComponent extends StatefulWidget {
  @override
  _SimpleUseComponentState createState() => _SimpleUseComponentState();
}

class _SimpleUseComponentState extends State<SimpleUseComponent> {
  @override
  Widget build(BuildContext context) {
    return Form(
      onChanged: () {
        print("form change");
      },
      child: Column(
        children: <Widget>[
          TextFormField(
            initialValue: "你好",
            validator: (value) {
              if (value.isEmpty) return "不能为空";
              return null;
            },
            autovalidate: true,
          ),
        ],
      ),
    );
  }
}

当我输入/删除时, 会出现日志: ‘form change’

20190722153013.png
有一个autovalidate的属性, 这个属性可以在TextFormField设置,也可以在Form设置, 自动提交验证的意思, 默认是 false.
当我将所有字符都删除时, 会出现’不能为空’的提示. 这个是由 validator 实现的, 因为我设置了autovalidatetrue, 然后这个返回值如果是 null, 则说明验证通过, 不通过则返回不通过的字符串.

点击后校验

当然,有些表单不要求自动校验, 可能是点击某个按钮后来校验, 这种情况下, 就需要使用 Form.of 来获取到表单状态

话不多说, 代码在下面:


                
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值