Flutter中如何解决找不到@jsoncodable()的问题

在Flutter项目中使用json_serializable时,遇到了找不到@jsoncodable()的问题。我已经按照文档添加了json_annotation和json_serializable依赖,并在build.yaml中进行了配置,但在运行build_runner时仍然报错"Target of Annotation doesn’t exist: @jsoncodable"。请问这是什么原因导致的?是否需要额外安装其他依赖?正确的注解应该是@JsonSerializable()吗?如何解决这个报错?


更多关于Flutter中如何解决找不到@jsoncodable()的问题的实战教程也可以访问 https://www.itying.com/category-92-b0.html

2 回复

确保已添加json_annotation依赖,并在代码中正确导入:

import 'package:json_annotation/json_annotation.dart';
part 'your_file.g.dart';

运行flutter pub run build_runner build生成对应文件。

更多关于Flutter中如何解决找不到@jsoncodable()的问题的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,[@jsoncodable](/user/jsoncodable)() 通常来自 json_annotation 包,用于自动生成JSON序列化代码。如果遇到“找不到 @jsoncodable()”的错误,请按以下步骤解决:

  1. 添加依赖
    pubspec.yamldependenciesdev_dependencies 中添加以下内容:

    dependencies:
      json_annotation: ^4.8.1
    
    dev_dependencies:
      build_runner: ^2.4.4
      json_serializable: ^6.7.0
    

    运行 flutter pub get 安装包。

  2. 正确导入注解
    在Dart文件中导入:

    import 'package:json_annotation/json_annotation.dart';
    
  3. 使用正确注解名称

    • 确保使用 [@JsonSerializable](/user/JsonSerializable)(),而不是 [@jsoncodable](/user/jsoncodable)()(后者不存在):
    [@JsonSerializable](/user/JsonSerializable)()
    class User {
      final String name;
      final int age;
    
      User(this.name, this.age);
    
      factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
      Map<String, dynamic> toJson() => _$UserToJson(this);
    }
    
  4. 生成代码
    运行以下命令生成序列化代码:

    flutter pub run build_runner build
    

    如果文件已存在,使用 flutter pub run build_runner build --delete-conflicting-outputs

  5. 检查拼写和大小写
    确保注解和导入语句无拼写错误。

完成以上步骤后,问题应得到解决。如果仍报错,请检查Flutter环境是否正常,或尝试重启IDE。

回到顶部