Flutter 可以在dart中使用getter作为函数参数吗?

Flutter 可以在dart中使用getter作为函数参数吗?,flutter,dart,freezed,Flutter,Dart,Freezed,我有这样一个重复的功能: repetitiveFunction(Type type) async* { yield* _recordCollectionQuery(type) .snapshots() .map((snapshot) { final List<Record> records = snapshot.docs .map((doc) => RecordDto.fromFirestore(doc).toDomain())

我有这样一个重复的功能:

repetitiveFunction(Type type) async* {
  yield* _recordCollectionQuery(type)
    .snapshots()
    .map((snapshot) {
      final List<Record> records = snapshot.docs
        .map((doc) => RecordDto.fromFirestore(doc).toDomain())
        .toList();
    // Here instead of using "record1.number", I want to use parameter like "record1.param"
    records.sort((record1, record2) => record2.number.compareTo(record1.number));
    return records;
  });
}
repetitiveFunction(类型)异步*{
收益率*\u记录收集查询(类型)
.快照()
.map((快照){
最终列表记录=snapshot.docs
.map((doc)=>RecordDto.fromFirestore(doc).toDomain())
.toList();
//这里不使用“record1.number”,而是使用类似“record1.param”的参数
records.sort((record1,record2)=>record2.number.compareTo(record1.number));
退货记录;
});
}

这里的
记录
类是
冻结的
数据类。我必须多次使用这个函数,只需更改
record.number
,这里
number
record
类的一个getter。那么我可以使用这个getter作为函数参数吗?

您不能直接使用getter/setter作为函数,因为getter/setter的点与成员变量是不可区分的

相反,您可以轻松地将getter包装在匿名函数中(例如,
(record)=>record.number)
,然后可以为不同的getter提供不同的匿名函数:

下面是一个具体的例子:

流重复功能(
列出记录,
可比函数(记录)getComparableProperty,
)异步*{
yield*\u recordCollectionQuery(类型).snapshots().map((快照){
最终列表记录=snapshot.docs
.map((doc)=>RecordDto.fromFirestore(doc).toDomain())
.toList();
records.sort((record1,record2)=>getComparableProperty(record2)
.compareTo(getComparableProperty(record1));
退货记录;
});
}

您可以为不同的成员传递不同的匿名函数(例如,
(record)=>record.number
)。@jamesdlin您能为给定的函数写一个答案吗?