错误:参数类型 'void Function()?'不能分配给参数类型 'void Function(String?)?'

Posted

技术标签:

【中文标题】错误:参数类型 \'void Function()?\'不能分配给参数类型 \'void Function(String?)?\'【英文标题】:error: The argument type 'void Function()?' can't be assigned to the parameter type 'void Function(String?)?'错误:参数类型 'void Function()?'不能分配给参数类型 'void Function(String?)?' 【发布时间】:2021-06-18 10:29:25 【问题描述】:

错误很简单,我不知道如何解决问题,请帮忙

import 'package:flutter/material.dart';

class CheetahInput extends StatelessWidget 
  final String? labelText;
  final VoidCallback? onSaved;

  CheetahInput(@required this.labelText, @required this.onSaved);

  @override
  Widget build(BuildContext context) 
    return TextFormField(
      decoration: InputDecoration(
        fillColor: Colors.white,
        filled: true,
        labelText: labelText,
        border: OutlineInputBorder(
          borderRadius: BorderRadius.circular(16),
        ),
        floatingLabelBehavior: FloatingLabelBehavior.never,
      ),
      initialValue: '',
      validator: (String? value) 
        return value!.isEmpty ? '$labelText is required' : null;
      ,
      onSaved: onSaved,
    );
  

我尝试用尖括号指定类型,但没有用 感谢您的提前帮助。

【问题讨论】:

onSaved 不是 VoidCallback !您应该提供带有 String 参数的 customCallback 或函数? 能否提供代码? 【参考方案1】:

替换

final VoidCallback? onSaved;

final Function(String)? onSaved;

【讨论】:

【参考方案2】:

替换

final VoidCallback? onSaved;

final FormFieldSetter<String>? onSaved;

【讨论】:

以上是关于错误:参数类型 'void Function()?'不能分配给参数类型 'void Function(String?)?'的主要内容,如果未能解决你的问题,请参考以下文章

参数类型“Function”不能分配给参数类型“void Function(bool)?”

如何将“Function”类型的参数分配给“void Function()”类型的参数?

参数类型“Function”不能分配给参数类型“void Function()?”在零安全之后

参数类型“void Function(Map<String, bool>)”不能分配给参数类型“Map<String, bool>”

错误:无法将类型“(_)->()”的值转换为预期的参数类型“(()-> Void)?”

firebase swift 3 转换:无法将类型“(_)->()”的值转换为预期的参数类型“((错误)-> Void)?