Flutter 传递函数两级深度不工作

Flutter 传递函数两级深度不工作,flutter,Flutter,我对祖父母有一个作用。我把它传给父母,父母把它传给孩子。该函数在子对象上调用。预期的行为是执行祖父母上的函数,但不是。什么也没发生。出于测试目的,我还在父级上添加了一个按钮,该按钮可以正常工作 因此,应该发生的是:当点击子级上的listTile时,控制台上应该出现“从父级打印” 祖父母片段: StateLoaded( vm: vm, procesStatus: _procesStatus, onTapChange: () => print('print from pare

我对祖父母有一个作用。我把它传给父母,父母把它传给孩子。该函数在子对象上调用。预期的行为是执行祖父母上的函数,但不是。什么也没发生。出于测试目的,我还在父级上添加了一个按钮,该按钮可以正常工作

因此,应该发生的是:当点击子级上的listTile时,控制台上应该出现“从父级打印”

祖父母片段:

StateLoaded(
   vm: vm,
   procesStatus: _procesStatus,
   onTapChange: () => print('print from parent'),
),
class StateLoaded extends StatelessWidget {
  const StateLoaded({
    @required this.vm,
    @required ProcesStatus procesStatus,
    @required this.onTapChange,
  }) : _procesStatus = procesStatus;

  final AuthViewModel vm;
  final ProcesStatus _procesStatus;
  final Function() onTapChange;

  @override
  Widget build(BuildContext context) {
    return Visibility(
      visible: vm.failureVm.failure == null &&
          vm.isAuth &&
          _procesStatus == ProcesStatus.loaded,
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          SizedBox(height: 8),
          Avatar(),
          Divider(),
          UserName(vm: vm, onTapChange: onTapChange),
父代码段:

StateLoaded(
   vm: vm,
   procesStatus: _procesStatus,
   onTapChange: () => print('print from parent'),
),
class StateLoaded extends StatelessWidget {
  const StateLoaded({
    @required this.vm,
    @required ProcesStatus procesStatus,
    @required this.onTapChange,
  }) : _procesStatus = procesStatus;

  final AuthViewModel vm;
  final ProcesStatus _procesStatus;
  final Function() onTapChange;

  @override
  Widget build(BuildContext context) {
    return Visibility(
      visible: vm.failureVm.failure == null &&
          vm.isAuth &&
          _procesStatus == ProcesStatus.loaded,
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          SizedBox(height: 8),
          Avatar(),
          Divider(),
          UserName(vm: vm, onTapChange: onTapChange),

ListTile子级上的onTap错误

有两种方法可以纠正它:

onTap: onTapChange,


ListTile子级上的onTap错误

有两种方法可以纠正它:

onTap: onTapChange,


哇,我为此挣扎了好几个小时。谢谢你的快速回答。这两种方法都有效。哇,我为此挣扎了好几个小时。谢谢你的快速回答。这两种方法都有效。