Flutter - 'List<dynamic>' 不是类型的子类型

Posted

技术标签:

【中文标题】Flutter - \'List<dynamic>\' 不是类型的子类型【英文标题】:Flutter - 'List<dynamic>' is not a subtype of typeFlutter - 'List<dynamic>' 不是类型的子类型 【发布时间】:2021-10-17 16:30:01 【问题描述】:

我一直在寻找一个 WordPress + Flutter App 集成并找到了一个不错的,但我收到了以下错误消息:

我很高兴这是一个简单的错误,但我更喜欢设计人员而不是开发人员,所以如果你们中的一些人能给我一些提示,那就太好了。提前致谢!

import 'dart:convert';

    import 'package:http/http.dart' as http;

    import '../config.dart';
    import '../model/post_entity.dart';

    class WpApi 
    static const String BASE_URL = URL + REST_URL_PREFIX + '/wp/v2/';

    static Future<List<PostEntity>> getPostsList(
      int category = 0, int page = 1) async 
    var posts = [];
    try 
      String extra = category != 0 ? '&categories=' + '$category' : '';

      dynamic response = await http.get(Uri.parse(BASE_URL +
          '''
      posts?_embed&page=$page''' +
          extra));
      dynamic json = jsonDecode(response.body);

      (json as List).forEach((v) 
        posts.add(PostEntity.fromJson(v));
      );
      catch (e) 
      //TODO Handle No Internet Response
    
    return posts;
    

     static Future<List<PostCategory>> getCategoriesList(int page = 1) async 
    List<PostCategory> categories = [];
    try 
      dynamic response = await http.get(Uri.parse(BASE_URL +
          'categories?orderby=count&order=desc&per_page=15&page=$page'));
      dynamic json = jsonDecode(response.body);

      (json as List).forEach((v) 
        categories.add(PostCategory.fromJson(v));
      );
      catch (e) 
      //TODO Handle No Internet Response
     
     return categories;
     
     


错误在于返回posts

Exception has occurred.
_TypeError (type 'List<dynamic>' is not a subtype of type 'FutureOr<List<PostEntity>>')

【问题讨论】:

【参考方案1】:

var posts = [] 更改为List&lt;PostEntity&gt; posts = []

  static Future<List<PostEntity>> getPostsList(
      int category = 0, int page = 1) async 
    List<PostEntity> posts = []; //<-- change var posts = [] to List<PostEntity> posts = []
    try  ...

【讨论】:

嘿,@Mehdi,谢谢!现在我得到了类别列表,但仍然没有得到帖子。你能发现我的代码有什么问题吗?

以上是关于Flutter - 'List<dynamic>' 不是类型的子类型的主要内容,如果未能解决你的问题,请参考以下文章

Flutter-Firestore “参数类型 'Map<String, dynamic> Function()' 不能分配给参数类型 'Map<String, dynamic>

Flutter 转换 List<List<dynamic>>

Flutter 参数类型 'List<dynamic>' 不能分配给参数类型 'List<Widget>'

在 Flutter 中将 List<List<dynamic>> 转换为 ArrayList

Flutter/Dart - “List<dynamic>”不是“List<Product>”类型的子类型

Flutter/Firebase - List<dynamic> 没有实例 getter 'documents'