android - 类型 'Future<List<Data>>' 不是类型转换中类型 'List<Data>' 的子类型

标签 android ios flutter dart

我正在从服务器获取数据并尝试将其设置为 GridView ,但出现错误:

type 'Future<List<Data>>' is not a subtype of type 'List<Data>' in type cast

这是我的数据类:

class Data with ChangeNotifier {
Data({
  this.name,
  this.image,
});

final String image;
final String name;


factory Data.fromJson(Map<String, dynamic> json) {
print(json['title'].toString());
return Data(
  name: json['title'].toString(),
  image: json['image'].toString(),
 );

}
}

这是我的 Data_screen,我在这里调用它:

 var datas= Provider.of<Datas>(context).fetchData() as List<Data>;
 var datalength = datas.length;

小部件:

 Expanded(
            child: GridView.builder(
              gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(

                crossAxisSpacing: 10,
                mainAxisSpacing: 10,
              ),
              padding: EdgeInsets.only(left: 28, right: 28, bottom: 58),
              itemCount: datas.length,

              itemBuilder: (context, index) => DataCard(
                datas[index],
                index: index,
                onPress: () {
                },
              ),
            ),
          ),

在 Datas.dart 中:

 Future<List<Data>> fetchData() async {
 var response = await http.get(url);
 var responseJson = json.decode(response.body);
 print(responseJson);
 return (responseJson['datas'])
    .map<Data>((p) => Data.fromJson(p))
  .toList();

最佳答案

信息很清楚。您不能从 List<Data> 转换至 Future<List<Data>> .尝试使用:

List<Data> fetchData() async {
 var response = await http.get(url);
 var responseJson = json.decode(response.body);
 print(responseJson);
 return (responseJson['datas'])
    .map<Data>((p) => Data.fromJson(p))
  .toList();
}

或者返回一个新的 FutureList<Data>

Future<List<Data>> fetchData() async {
 var response = await http.get(url);
 var responseJson = json.decode(response.body);
 print(responseJson);
 var response = (responseJson['datas'])
    .map<Data>((p) => Data.fromJson(p))
  .toList();
 return Future.value(response)
}

这只是一个想法(未经测试)

关于android - 类型 'Future<List<Data>>' 不是类型转换中类型 'List<Data>' 的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59150359/

相关文章:

android - 在 Android Studio 中降级 Android 插件

Android:API 级别 VS。安卓版

java - Android:获取一个已经启动的定时器

ios - 在 SwiftUI 中切换更改后更新数组

objective-c - Xcode 一起触发函数和 Action

flutter - 如何在 Flutter 项目中查找所有已弃用的方法/类 (Android studio)

android - RecyclerView 延迟滚动

ios - 设置 Spritekit 重力源

firebase - 我必须从 Firebase 下载图像才能显示吗?

angularjs - 如何修复flutter webview中无法访问视频流(NotAllowedError)以使用html5+webRTC相机api?