【问题标题】:The argument type 'void Function(String?)?' can't be assigned to the parameter type 'String? Function(String?)? in Flutter参数类型 'void Function(String?)?'不能分配给参数类型'String?函数(字符串?)?在颤振中
【发布时间】:2021-08-24 01:19:05
【问题描述】:

守则:

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class CustomTextFormField extends StatelessWidget {
  final String hintText;
  final Color color;
  final Color fillColor;
  final void Function(String?)? onSave;
  final void Function(String?)? validator;

  const CustomTextFormField({
     this.hintText = "",
     this.color = Colors.black,
     this.fillColor = Colors.grey,
     this.onSave ,
     this.validator,
  });

  @override
  Widget build(BuildContext context) {
    return Container(
      child: TextFormField(
        onSaved: onSave,
        validator: validator,
        decoration: InputDecoration(
          hintText: hintText,
          hintStyle: TextStyle(
            color: color,
          ),
          fillColor: fillColor,
        ),
      ),
    );
  }
}

问题: 参数类型 'void Function(String?)?'不能分配给参数类型'String?函数(字符串?)?'

问:为什么会出现以下错误: 验证器:验证器

【问题讨论】:

  • 它需要一个返回值。 “没有返回值”有什么用?因此必须使用兼容的签名,可能会包装原始签名以提供虚拟值。

标签: string flutter validation null


【解决方案1】:

验证器是一种

typedef FormFieldValidator<in T> = String? Function(T? value)

所以对于验证器,你需要使用

final FormFieldValidator<String>? validator;

完整代码:

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class CustomTextFormField extends StatelessWidget {
  final String hintText;
  final Color color;
  final Color fillColor;
  final void Function(String?)? onSave;
  final FormFieldValidator<String>? validator;

  const CustomTextFormField({
     this.hintText = "",
     this.color = Colors.black,
     this.fillColor = Colors.grey,
     this.onSave ,
     this.validator,
  });

  @override
  Widget build(BuildContext context) {
    return Container(
      child: TextFormField(
        onSaved: onSave,
        validator: validator,
        decoration: InputDecoration(
          hintText: hintText,
          hintStyle: TextStyle(
            color: color,
          ),
          fillColor: fillColor,
        ),
      ),
    );
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2020-08-26
    相关资源
    最近更新 更多