当前位置: 首页 > 知识库问答 >
问题:

类型'Future'不是类型'List'的子类型。

洪涵亮
2023-03-14
  class Profile {

   final List<String> photos;
   final String name;
   final int age;
   final String education;
   final String bio;
   final int distance;

   Profile({
   this.photos,
   this.name,
   this.age,
   this.education,
   this.bio,
   this.distance
    });

    }



     class _MainControllerState extends State<MainController> {


     static  List<Profile> demoProfiles =   fetchData();

     static fetchData() async{

      final db = await Firestore.instance;
      List<Profile> list = [];
      db.collection("users").getDocuments().then((querySnapshot){
         querySnapshot.documents.forEach((document) {
            list.add(Profile(
                photos: document['photoUrl'],
                name: document['photoUrl'],
                age: document['photoUrl'],
                distance: document['photoUrl'],
                education: document['photoUrl']
            ));
            });
            });
            return list;
             }


           final MatchEngine matchEngine = MatchEngine (
           matches:demoProfiles.map((Profile profile) => Match(profile:
           profile)).toList()
            );                  

我是个新手。当我运行代码时,我得到一个错误:“Future”类型不是“List”类型的子类型。如果我改变屏幕,我将得到错误:NoSuchMethodError:方法“map”被调用为null。我怎样才能解决它?谢谢你帮助我。

共有2个答案

赫连泰宁
2023-03-14

你需要将你的方法转换为getData

  Future<List<Data>> getData() async {
        var response =
        await http.get(Uri.https('jsonplaceholder.typicode.com', 'users'));
        var jsonData = jsonDecode(response.body);
        List<Data> dataList = [];
             for (var u in jsonData) {
        Data data = Data(u["name"], u["phone"], u["email"]);
        dataList.add(data);
       }
       print(dataList.length);
      return dataList;
   }

并显示在一张卡片上

         @override
         Widget build(BuildContext context) {
          return Scaffold(
          appBar: AppBar(
          title: Text("Data Fetch"),
           ),
         body: Container(
               child: Card(
                     child: FutureBuilder<List<Data>>(
                       future: getData(),
                builder: (context, snapshot) {
                if (snapshot.data == null) {
                   return Container(
                         child: Text("Loading"),
                          );
                 }else{
                    return ListView.builder(
                           itemCount: snapshot.data!.length,
                           itemBuilder: (context, i) {
                                return ListTile(
                                   title: Column(
                                        children: [
                                            Text(snapshot.data![i].name),
                                            Text(snapshot.data![i].phone),
                                            Text(snapshot.data![i].email),
                                            ],
                                           ),
                                          );
                                       });
                                     }
                                   },
                                 ),
                               ),
                           ));
                         }

这对我来说很有效:):)我希望这会对你有所帮助。

朱高丽
2023-03-14

需要指定方法的返回类型getchData

static Future<List<Profile>> fetchData() async{
 类似资料:
  • 当我运行我的代码时,它返回了错误:类型“Future”不是类型转换中“List”类型的子类型。我该如何修复它?它是在我从Firebase获取数据之前匹配引擎运行的?我试图将wait添加到List demoProfiles=getdata()作为wait List;但它返回错误。我真的是新手,这个问题已经困扰了我一整天。请帮帮我

  • 我从Firestore示例中复制了一段代码: 但是我得到了这个错误 这里出了什么问题?

  • 我是一个新手,我尝试运行一个GitHub项目,但遇到了一个错误,比如类型ListDynamic不是类型ListInt的子类型。Github链接 误差线 以上代码文件 如有任何帮助,我们将不胜感激,并提前向您表示感谢。

  • 我正在开发一个依靠API REST调用的flutter应用程序。来自API的响应有点复杂。当调用我的API(例如:api/产品)时,我可以从日志中看到响应:但是我有这个错误: 类型列表 StackTrace: [更新]:退货产品响应。fromJson(response)而不是response ProductsRespository: ProductsBloc: 回应: ApiProvider: 模

  • 我正在学习飞镖和颤振。现在,我尝试将JSON作为一种持久性方法。我犯了很多错误,都是关于类型和内容的。这是我遇到的最新错误:

  • 我得到一个错误:输入'List'