TextFormField 验证器参数类型“动态函数()”不能分配给

Posted

技术标签:

【中文标题】TextFormField 验证器参数类型“动态函数()”不能分配给【英文标题】:TextFormField validator The argument type 'dynamic Function()' can't be assigned to the 【发布时间】:2021-12-07 18:37:51 【问题描述】:

我正在尝试制作自定义小部件 TextFormField, 但是验证器:验证器,显示错误

参数类型“动态函数()”不能分配给参数类型“字符串?函数(字符串?)?'.dartargument_type_not_assignable 动态 Function() 验证器 包:store/widgets/mytextformfield.dart

mytextformfield.dart

导入'package:flutter/material.dart';

class MyTextFormField extends StatelessWidget 
  final Function() validator;
  final bool obserText;
  final String name;

  const MyTextFormField(
    Key? key,
    required this.obserText,
    required this.validator,
    required this.name,
  ) : super(key: key);

  @override
  Widget build(BuildContext context) 
    return TextFormField(
      obscureText: obserText,
      **validator: validator,**
      decoration: InputDecoration(
        border: const OutlineInputBorder(),
        hintText: name,
      ),
    );
  

在 login.dart 上

MyTextFormField(
      obserText: obserText,
      name: "Email",
          validator: (value) 
          if (value == "") 
         return "Please Fill Email";
         else if (!regExp.hasMatch(value!)) 
          return "Email is Invaild";
        
      return "";
      ,
     ),

【问题讨论】:

【参考方案1】:

验证器必须有参数,如果值没有任何错误则返回null,如果值无效则返回一个String表示错误。

     TextFormField(
        // The validator receives the text that the user has entered.
        validator: (value) 
          if (value == null || value.isEmpty) 
            return 'Please enter some text';
          
          return null;
        ,
      ),

【讨论】:

我知道你的意思,但我会在另一个名为 login.dart 的文件中使用它,我会在 YouTube 上跟着 tut 和他一起工作,我将编辑我的帖子检查我的意思是什么代码使用

以上是关于TextFormField 验证器参数类型“动态函数()”不能分配给的主要内容,如果未能解决你的问题,请参考以下文章

AlertDialog 中的 TextFormField 未验证

如何使用 GetX 实现 Flutter TextFormField 验证器?

TextFormField 在验证时不显示错误

用户交互后自动验证 TextFormField

在 Flutter 中仅允许 TextFormField 中的特定输入而无需验证

Flutter:TextFormField Validator 打破了字段的样式