类型“Future<dynamic>”不是类型转换中“List<Profile>”类型的子类型

Posted

技术标签:

【中文标题】类型“Future<dynamic>”不是类型转换中“List<Profile>”类型的子类型【英文标题】:type 'Future<dynamic>' is not a subtype of type 'List<Profile>' in type cast 【发布时间】:2020-09-10 08:49:59 【问题描述】:
List<Profile> demoProfiles =  getdata() as List<Profile>;

Future getdata() async
              List<Profile> list=[];
              list = await Firestore.instance
              .collection("users").getDocuments().then((querySnapshot)
               querySnapshot.documents.forEach((document) 
               list.add( Profile(
                    photos: [document['photoUrl'],],
                    name: document['nickname'],
                    age: 2,
                    distance: 2,
                    education: document['photoUrl']

                ));

            );
            return list;
        );


class _MainControllerState extends State<MainController> 



 final MatchEngine matchEngine = MatchEngine (

    matches:demoProfiles.map((Profile profile) => Match(profile: profile)).toList()

  );
  @override
  Widget build(BuildContext context) 
    return Container(
      padding: EdgeInsets.fromLTRB(0.0, 60.0, 0.0, 30.0),  
      child: CardStack (
        matchEngine: matchEngine
      ),

    );
  


当我运行我的代码时,它返回错误:type 'Future' is not a subtype of type 'List' in type cast。 我该如何解决?在我从 Firebase 获取数据之前,它是 matchEngine 运行的吗? 我尝试将 await 添加到 List demoProfiles = getdata() as await List; 但它返回错误。我对颤振真的很陌生,这个问题整天都在困扰着我。请帮帮我

【问题讨论】:

这能回答你的问题吗? type 'Future<dynamic>' is not a subtype of type 'List<Profile> 还没有,我还在琢磨怎么做 【参考方案1】:

创建一个FutureBuilder 小部件,并将getdata() 方法分配给future 属性。

Future getdata() async
              List<Profile> list=[];
              list = await Firestore.instance
              .collection("users").getDocuments().then((querySnapshot)
               querySnapshot.documents.forEach((document) 
               list.add( Profile(
                    photos: [document['photoUrl'],],
                    name: document['nickname'],
                    age: 2,
                    distance: 2,
                    education: document['photoUrl']

                ));

            );
            return list;
        );


         FutureBuilder(
            future: getdata(),
            builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) 
              if (snapshot.connectionState == ConnectionState.done) 
              //...

【讨论】:

我应该在哪里使用 FutureBuilder? 使用 FutureBuilder 而不是 CardStack ( matchEngine: matchEngine ),,然后在 ConnectionState.done 中使用 CardStack 谢谢你的帮助,我现在试试 我刚刚尝试添加future builder,但是它返回了一些错误,我更新了一些错误截图,如果你有时间请看一下。

以上是关于类型“Future<dynamic>”不是类型转换中“List<Profile>”类型的子类型的主要内容,如果未能解决你的问题,请参考以下文章

类型 'Future<dynamic>' 不是 Flutter 数据库创建中的“Future<int>”类型异常的子类型

错误:类型“Future<dynamic>”不是“List<dynamic>”类型的子类型。扑

颤振类型错误future <dynamic> 不是future <bool> 类型的子类型

参数类型“Iterable<Future<dynamic>>”不能分配给参数类型“Iterable<Future<news_item>>”

类型“Future<dynamic>”不是类型转换中“List<Profile>”类型的子类型

颤振:类型“Future<dynamic>”不是“Widget”类型的子类型?错误