【问题标题】:TextFormField validator The argument type 'dynamic Function()' can't be assigned to theTextFormField 验证器参数类型“动态函数()”不能分配给
【发布时间】: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 "";
      },
     ),

【问题讨论】:

    标签: android flutter visual-studio-code


    【解决方案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 和他一起工作,我将编辑我的帖子检查我的意思是什么代码使用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2021-09-10
    • 2021-09-21
    • 1970-01-01
    • 2021-12-05
    • 2021-07-05
    相关资源
    最近更新 更多