【问题标题】:Getting this error - type 'Future<dynamic>' is not a subtype of type 'List<dynamic>'出现此错误 - 类型 'Future<dynamic>' 不是类型 'List<dynamic>' 的子类型
【发布时间】:2020-01-07 12:19:18
【问题描述】:

每当尝试调用未来数据并尝试转换为List 时,它都会返回错误

类型“未来”不是类型“列表”的子类型

尝试过类型转换,但没有帮助

在 HomePage.dart

final getPost = NetworkFile().getPosts();
  List posts;

  void getPostsList() {
    setState(() {
      var res = getPost;
      posts = res as List<dynamic>;
      print(posts);
    });
  } 

在 Network.dart

class NetworkFile{

Future<dynamic> getPosts() async {
    var response = await http.get('$kBlogURL' + 'posts?_embed');
    Iterable resBody = await jsonDecode(response.body.toString());
    return resBody;
  }
} 

【问题讨论】:

    标签: flutter


    【解决方案1】:

    您正在解码响应及其类型为dynamicList。处理它的方法很少。您可以创建一个简单的 PODO 类并转换/映射到它。或者像下面这样:

    List posts = [];
    
    void getPostsList() async {
      final fetchedPosts = await NetworkFile().getPosts();
      setState(() {
        posts = fetchedPosts;
      });
      print(posts);
    }
    

    Here is a nice article about PODO.

    【讨论】:

    • 它有帮助!谢谢。
    【解决方案2】:
    final getPost = NetworkFile().getPosts();
    Map posts;
    
    void getPostsList() async {
      var res = await getPost;
      setState(() {
        posts = res as Map<String, dynamic>;
        print(posts);
      });
    }
    
    
    class NetworkFile {
      Future<dynamic> getPosts() async {
        var response = await http.get('https://onetechstop.net/wp-json/wp/v2');
        var resBody = await jsonDecode(response.body.toString());
        return resBody;
      }
    }
    

    【讨论】:

    猜你喜欢
    • 2021-08-13
    • 2022-01-23
    • 2020-09-20
    • 2019-12-31
    • 1970-01-01
    • 2021-10-20
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多