我需要有一个父部件此功能
User? _user;
void _onChangeUser(User? user) {
setState(() {
_user = user;
});
}
我想把它传递给一个接收一个带有动态参数的函数的子部件,所以在父部件构建方法上我这样做:
return _ChildView(
onPress: _onChangeUser,
);
在我的子部件上,我想传递这个函数,但是让它有一个动态参数,像这样:
class _ChildView extends StatelessWidget {
const _ChildView({
Key? key,
required this.onPress,
}) : super(key: key);
final ValueChanged<dynamic> onPress;
然而,Flutter不允许这样做。参数类型'void Function(User?)'不能分配给参数类型'void Function(dynamic)'。我希望能够分配一个用户?一个动态值。
我该怎么做?
我也试过
final Function(dynamic) onPress;
但也不管用
2条答案
按热度按时间2ledvvac1#
你的函数在
_ChildView
中有一个dynamic
类型作为参数,而你的函数_onChangeUser
有一个User?
类型作为参数。如果希望
_ChildView
中的onPress
函数在每次调用时接受不同类型的参数,可以将其定义为接受泛型类型T
,如下所示:vd2z7a6w2#
变更
转换为常规函数类型
然后用