flutter - AsyncSnapshot<...> 不是 AsyncSnapshot 的子类型, AsyncWidgetBuilder 错误
问题描述
我有一个特殊的类来处理来自资源(RepositoryResponse
类)的响应。
class RepositoryBuilder<T extends RepositoryResponse> extends StatefulWidget {
final Future<T> future;
final AsyncWidgetBuilder<T> builder;
const RepositoryBuilder({this.future, this.builder});
@override
_RepositoryBuilderState createState() => _RepositoryBuilderState<T>();
}
class _RepositoryBuilderState<T extends RepositoryResponse> extends State<RepositoryBuilder> {
Future<T> future;
@override
void initState() {
future = widget.future;
super.initState();
}
@override
Widget build(BuildContext context) {
return FutureBuilder<T>(future: future, builder: widget.builder);
}
}
这是我的应用程序屏幕之一的一部分:
RepositoryBuilder<RepositoryResponse<Set<Invoice>>>(
future: orderRepository.fetchInvoices(),
builder: (context, snapshot) {
if(snapshot.hasData){
return snapshot.data.apiData.isEmpty
? SomeWidget()
: AnotherWidget();
}
},
)
所以,一天结束,这是错误,这对我来说毫无意义:
生成以下断言
RepositoryBuilder<RepositoryResponse<Set<Invoice>>>(dirty, state: _RepositoryBuilderState<RepositoryResponse<Set<Invoice>>>#e23da)
:类型“(BuildContext, AsyncSnapshot<RepositoryResponse<Set<Invoice>>>) => Widget
”不是类型“”的子(BuildContext, AsyncSnapshot<RepositoryResponse<dynamic>>) => Widget
类型
那么,到底怎么Object<A>
不能是亚型Object<dynamic>
呢?
解决方案
推荐阅读
- python - 结合两个不同的数据集进行机器学习
- c# - 在运行时确定是否应构建服务
- css - 使用 http.get 显示 html 和 css
- python - Chromedriver 弹出验证消息 Python 填充
- html - 使用 CSS 覆盖图像的矩形
- jira - 哪些字段维护 Jira 和 Aha 之间的链接!一体化
- html - 如何使用一个搜索栏应用多个过滤器并在搜索栏中显示这些过滤器?
- amazon-web-services - openapi 发送动态文件名以响应文件
- apache - Apache LDAPS 配置
- c# - 在 Visual Studio 中添加的第三方 dll:您是否缺少 using 指令或程序集引用