我已经为我的搜索筛选器项目定义了如下模型:
typedef OnFilterButtonPressed<T> = String Function(SearchFilterItemModel<T> searchFilterItem);
class SearchFilterItemModel<T> {
final String id, name;
final OnFilterButtonPressed<T> onPressed;
SearchFilterItemModel({
required this.id,
required this.name,
required this.onPressed,
});
}
然后,我定义了一个筛选项列表.
List<SearchFilterItemModel> searchFilterItems = [
SearchFilterItemModel<DateTime>(
id: "filter_id_date",
name: "Date",
onPressed: (SearchFilterItemModel<DateTime> item) {
return item.id;
},
),
SearchFilterItemModel<String>(
id: "filter_id_cost",
name: "Cost",
onPressed: (SearchFilterItemModel<String> item) {
return item.id;
},
),
];
我将搜索筛选器项作为onPressed
函数参数传递,因为我需要访问onPressed
函数当前所在的当前模型.您可以看到,我已经在onPressed
功能块中使用了项ID.
现在,我已经定义了示例Main函数,如下所示:
void main() {
print(searchFilterItems.map<String>((SearchFilterItemModel filterItem) {
return filterItem.onPressed(filterItem);
}));
}
它会抛出以下错误:
未处理的异常: 类型‘(SearchFilterItemModel<;DateTime>;)=>;字符串’不是类型‘(SearchFilterItemModel<;动态&>)=>;字符串’的子类型
错误在Main函数的第return filterItem.onPressed(filterItem);
行抛出.
问题:
- 为什么它不能将动态类型转换为字符串类型?
- 我如何修改我的代码来解决它?