参数类型 'void Function(String?)?' 无法分配给参数类型 'String?函数(字符串?)?在颤动中
The argument type 'void Function(String?)?' can't be assigned to the parameter type 'String? Function(String?)? in Flutter
代码:
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? Function(String?)?'
问:为什么下面这个点出现错误:
验证者:验证者
Validator 是一种类型
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,
),
),
);
}
}
代码:
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? Function(String?)?'
问:为什么下面这个点出现错误: 验证者:验证者
Validator 是一种类型
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,
),
),
);
}
}