类型'(dynamic)=> Null'不是'f'类型'(String,dynamic)=> void'的子类型

时间:2020-10-01 12:49:52

标签: flutter

我正在尝试填充从Web API检索的数据:

  void asyncInitState() async {
    BulletinController bulletinController = BulletinController() ;
    var value = await bulletinController.AfficherEtablissement();
    value.forEach((entry) {
      print(entry['id']);
    });
  }

  @override
  void initState() {
    super.initState();
    asyncInitState(); 
    super.initState();
  }

这是“ AfficherEtablissement()”方法:

 Future<dynamic> AfficherEtablissement() async {
     final response =
     await http.get('https://jsonplaceholder.typicode.com/albums/1');
     if (response.statusCode == 200) {
       var parsedJson = json.decode(response.body);
       //decode
       print(parsedJson);
       Map<String, dynamic> data = json.decode(response.body);
       return data  ;
     } else {
       throw Exception('Failed to load');
     }
   }

我遇到此错误:

type '(dynamic) => Null' is not a subtype of type '(String, dynamic) => void' of 'f'

一行以下:

print(entry['id']);

2 个答案:

答案 0 :(得分:0)

AfficherEtablissement 函数返回一个 Map 对象,因此对于响应的迭代,应使用:

value.forEach((key, value) {
   // do something
});

请注意,传递给forEach的函数带有两个参数(键,值)。

答案 1 :(得分:0)

AfficherEtablissement函数返回Map ,因此对于响应的迭代,应使用:

 void asyncInitState() async {
    BulletinController bulletinController = BulletinController() ;
    Map<String, dynamic> value = await bulletinController.AfficherEtablissement();
    value.forEach((String key, dynamic entry) {
      print(entry['id']);
    });
  }