如何使用 onFieldSubscribed 单独验证 TextFormField

2023-12-19

我正在制作一个自定义 TextFormField 小部件,它将被多次使用。如何验证单个 TextFormField 而不验证同一列表/行/列中的任何其他 TextFormField。

Widget timeTextField (TextEditingController controller){
       return TextFormField(
         controller: controller,
         validator: (String userInput){
           if(userInput.isEmpty){return 'Need to input time';}
         },
         onFieldSubmitted: (String userInput){
           setState(() {
             debugPrint(userInput);
             controller.text = "amout";
             debugPrint(controller.text);
         });

   },
   );
 }

当用户按下键盘上的“提交”按钮时,它会进行验证,如果 TextFormField 为空,它只会向用户按下“提交”按钮的 TextFormField 发送验证错误。


验证于TextField发生的情况基于Form它们被放置在(而不是Column or Row or List)。要分别验证 TextFields,请将它们放入不同的表单中,分配不同的键并调用_formKey.currentState.validate分别地。

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final GlobalKey<FormState> _form1Key = GlobalKey();
    final GlobalKey<FormState> _form2Key = GlobalKey();
    final GlobalKey<FormState> _form3Key = GlobalKey();

    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Form(
            key: _form1Key,
            child: TextFormField(
              validator: (value) {
                if (value.isEmpty) return "Cannot be empty";
              },
            ),
          ),
          Form(
            key: _form2Key,
            child: TextFormField(
              validator: (value) {
                if (value.isEmpty) return "Cannot be empty";
              },
            ),
          ),
          Form(
            key: _form3Key,
            child: TextFormField(
              validator: (value) {
                if (value.isEmpty) return "Cannot be empty";
              },
            ),
          ),
        ],
      ),
      floatingActionButton: FloatingActionButton(onPressed: () {
        _form2Key.currentState.validate();
      }),
    );
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 onFieldSubscribed 单独验证 TextFormField 的相关文章

随机推荐

  • 使用 _* 的 varargs 的 Scala 类型归属导致错误

    我对 Scala 可变参数有一个初步的了解 接受可变参数的方法的参数需要hint它是一个 varargs 使用 使用Scala 2 10 3 我定义了以下两个方法 scala gt def method varargs Int more S
  • Qt QCalendarWidget QSS 样式

    我知道没有人支持QCalendarWidget QSS样式 但有人知道一些更改部分颜色的解决方法1 and 2 of the QCalendarWidget 浅蓝色部分1白色部分2 Thanks 我已经检查过QCalendarWidget
  • 升级到 2021-06 (4.20.0) 后,Eclipse 内容辅助循环失败

    有人问了类似的问题here https stackoverflow com questions 68199554 content assist cannot find proposals in loop if there is code b
  • 如何在 Delphi 中输入分数?

    我有一个应用程序将使用测量值 特别是小至 1 16 英寸 我真的想要一种方便的方式让最终用户输入包含小数部分的值 例如 3 7 16 我意识到我可以要求用户只输入十进制值 即 3 1875 但我真的想要一种更好的方法 有谁知道可以轻松输入的
  • 从 ArrayList 中删除所有出现的元素

    我在用java util ArrayList 我想删除所有出现的特定元素 List
  • 检索 Dynamics 2011 中的选项集

    我正在使用此代码来检索全局选项集 var request new RetrieveOptionSetRequest Name OptionsetNameGoesHere var retrieveOptionSetResponse Retri
  • 在 eclipse 中使用 mahout 而不使用 Maven

    我真的不想使用maven 因为它看起来很麻烦 有没有办法只下载 mahout 并在我的 eclipse 项目中使用它 我从使用 Maven 得到的只是构建路径错误和数百万条警告 我一直在寻找一种方法来做到这一点 但人们似乎一直都在使用 Ma
  • 四舍五入至小数点后两位

    Math round doubleValue 100 100 0 有没有更好的方法将小数四舍五入到小数点后两位 如果您对小数位以及精确的小数值感兴趣 您通常应该使用java math BigDecimal http download ora
  • Zend 实例随机丢失

    我有一个在 zend 上运行的网站 最近它表示登录时会丢失会话变量 auth Zend Auth getInstance 有时似乎不起作用任何线索可能是什么问题 None
  • Realm 中具有惰性属性的复合键

    我发现了在 Swift 中使用带有复合主键的 Realm 的绝佳解决方案 https github com realm realm cocoa issues 1192 https github com realm realm cocoa i
  • 构建过程中ASP.NET Core设置托管环境

    我有一个ASP NET Core Api我在其中使用 appsettings environmentname json 配置文件 然后 我还有带有不同环境选项的相应 launchSettings json 文件 以便我可以使用任何特定的环境
  • 设计模式或代码味道,功能分解导致的非规范化数据

    我是以下的忠实粉丝http highscalability com http highscalability com 并且一直在我当前的开发中沿着功能边界分解我的应用程序 作为能够扩展服务器端 特别是数据库层 的途径 这涉及到将应用程序的不
  • 在 Reporting Services 中向条形图添加趋势线

    如何在 Reporting Services 2005 中向条形图添加趋势线 您必须从数据源创建趋势线的数据 从图表属性的数据选项卡上 选择趋势数据系列 单击编辑 然后在 编辑图表值 对话框中选择 外观 选项卡 选中 将数据绘制为线 框 使
  • MySQL 从 3 个表中选择不同的产品

    MySQL 从 3 个表中选择 我有这 5 个表 CREATE TABLE category c id int 6 NOT NULL AUTO INCREMENT name varchar 40 NOT NULL PRIMARY KEY c
  • 在 next js 13 中使用新的“app 目录”导入 bootstrap js 文件的位置

    我在下一个 js 13 中使用新的应用程序目录 当使用 bootstrap 下拉菜单时 只有 UI 可以工作 bootstrap 的 js 功能在其中不起作用 我尝试在layout tsx中导入js文件 但它抛出了这个错误 gt 文档未定义
  • 任何巧妙的方法来修复 LINQ 的“字符串或二进制数据将被截断”警告

    有没有一种巧妙的方法来确定哪个字段导致 字符串或二进制数据将被 LINQ 截断 我总是通过逐步调试器来手动完成此操作 但是对于使用 SubmitChanges 的批处理 我必须更改代码以插入单行以在一批行中找到罪魁祸首 我是否遗漏了某些东西
  • Android 未签名应用程序无法安装在设备上

    我的应用程序可以在模拟器上运行 并将其导出为未签名的应用程序 在我的手机设置 gt gt 应用程序 gt gt 检查了未知来源 我通过 USB 将 apk 下载到手机存储中 然后在文件管理器下 我发现存储了 apk 并点击安装按钮 它尝试安
  • $watchGroup 与 $watchCollection?

    有观察一组变量的 2 种方法 https docs angularjs org api ng type 24rootScope Scope在角度 但它们之间有什么区别呢 他们似乎都做浅表 是否存在其中一种明显优于另一种的情况 watchCo
  • App Engine 部署:获取应用程序的权限错误

    我们使用服务帐户通过 Travis 将我们的应用程序部署到 App Engine 在每个合并的 PR 中 Travis 从我们的 GitHub 存储库中提取代码 并提取Docker镜像 https github com hollowvers
  • 如何使用 onFieldSubscribed 单独验证 TextFormField

    我正在制作一个自定义 TextFormField 小部件 它将被多次使用 如何验证单个 TextFormField 而不验证同一列表 行 列中的任何其他 TextFormField Widget timeTextField TextEdit