dart 如何在Flutter中传递非静态方法作为参数

jk9hmnmh  于 2023-09-28  发布在  Flutter
关注(0)|答案(1)|浏览(129)

我想做的是最容易从代码示例中理解:

class A {
    List<B> bs;

    void batchFuntion(List<B> selectedBs, MethodOfB){
        for (B b in selectedBs) {
        b.MethodOfB();
        }
    }
}

class B {
    void foo() {
        do something;
    }
}

// so to apply any method of B to a selection of B items in A:
a_instance.batchFuntion(selectedBs, foo);

换句话说:我有两个班,A班和B班。A包含B项的列表。我想批量地将B的方法应用于A的给定示例中的选定B项。因为我想为很多不同的方法做这件事,我不想为每个B方法都写一个新的A方法。但是我不知道如何传递一个非静态方法。

a11xaf1n

a11xaf1n1#

不知道为什么这里需要selectedBs,因为你在batchFunction中没有使用这个参数,但是对于MethodOfB,你可以传递一个函数参数。就像这样:

class A {
  List<B> bs;

  void batchFuntion(List<B> selectedBs, void Function(B b) apply) {
    for (B b in bs) {
      apply(b);
    }
  }
}

class B {
  void foo() {}
}

a_instance.batchFuntion(selectedBs, (b) => b.foo());

相关问题