首页 > 解决方案 > 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>呢?

标签: flutterdart

解决方案


推荐阅读