flutter - 提供者的通用类返回?
问题描述
我确定有办法从riverpod FutureProvider 返回一个类dynamic
或一个类的实例?generic
我可以从 API 获取不同的跟踪器数据。例如,它可以用于体育活动或体重数据。到目前为止,我尝试了这个但不起作用,甚至没有编译:
final trackerDataProvider = FutureProvider.family<AbstractTrackerData, TrackerType>((ref, trackerType) async {
final repository = ref.read(trackerRepositoryProvider);
AbstractTrackerData trackerData =
await repository.getTrackerData(trackerType);
return trackerData;
});
在我的小部件中
class PhysicalActivityLandingTrackerScreen extends HookWidget {
@override
Widget build(BuildContext context) {
final trackerData = useProvider(trackerDataProvider(TrackerType.physicalactivity));
...
}
}
和我的跟踪器数据类
class SmokeFree extends AbstractTrackerData {
...
}
class PhysicalActivity extends AbstractTrackerData {
...
}
class Weight extends AbstractTrackerData {
...
}
和枚举
enum TrackerType {
physicalactivity,
exercise,
weeklyweight,
bloodpressure,
saltyfoodsubstitution,
goodfatsubstitution,
medicationuse,
smokefree
}
解决方案
是的,因为泛型方法在方法声明的返回类型之前有一个类型参数(包含类型的菱形运算符)。... 泛型方法可以在方法签名中使用逗号分隔的不同类型参数。泛型方法的方法体就像普通方法一样。因此我们可以说它是由提供者返回的。
推荐阅读
- javascript - 如何在移动视图中制作可拖动的 div
- c# - 展平 IQueryable 时出错
在 GroupBy() 之后 - spring-boot - Spring Batch 'jobs 不能为空也不能为空' 错误
- kubernetes - Kubernetes Spark Operator:配置自动应用重启和故障处理
- python - 如何在带有列表的python中将具有重复键的字典作为整数制作
- c - 函数不返回整数值 (C)
- python - 为什么错误 - AttributeError: 'NoneType' 对象没有属性
- android - Android Studio 无法在 Windows 10 上运行
- mit-scratch - 我可以在 WYSIWYG 中克隆精灵,但不能在代码中克隆吗?
- html - 如何将 Div 定位在屏幕中间的其他内容之上?