gpt4 book ai didi

Flutter:使用带有卡住和 json_serializable 的 Map

转载 作者:行者123 更新时间:2023-12-03 03:36:28 28 4
gpt4 key购买 nike

我有一个看起来像这样的卡住类 -

@freezed
abstract class User with _$User {
factory User(
{@required String uid,
String firstName,
String lastName,
String email,
Map<String, dynamic> pictures,
@Default(false) bool isAdmin}) = _User;

factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
}


这个类保存在 cloud firestore 中,我正在使用它来阅读它:
User user = User.fromJson(dataFromFirebase);
但是我在阅读时遇到了这个错误:
#0      _$_$_UserFromJson (package:my_app/freezed/freezed_classes.g.dart:15:32)
#1 new _$_User.fromJson (package:my_app/freezed/freezed_classes.freezed.dart:68:7)
#2 _$UserFromJson (package:my_app/freezed/freezed_classes.freezed.dart:11:16)
#3 new User.fromJson (package:my_app/freezed/freezed_classes.dart:18:55)
#4 FirestoreService.getUserInfo (package:my_app/services/firestore_service.dart:75:22)
<asynchronous suspension>
#5 FirebaseAuthService.currUserFromUserCollection (package:my_app/services/firebase_auth_service.dart:27:53)
#6 FirebaseAuthService._userFromFirebase (package:my_app/services/firebase_auth_service.dart:17:27)
#7 FirebaseAuthService.signInWithEmailAndPassword (package:my_app/services/firebase_auth_service.dart:47:12)
<asynchronous suspension>
#8 EmailPasswordSignInModel.submit (package:finc<…>

有谁知道这里会发生什么?我尝试使用 和 作为我的 Map 类的类型(它有一个 String 键和一个 String 值),但仍然抛出相同的异常。

最佳答案

当我添加 的 map 时,我遇到了与 json_serializable 相同的错误并卡住了项目 反对我的 客户没有类型声明的类。
之前(触发错误时)
通知Map items,没有特定的类型声明。这适用于普通 Dart 。

@freezed
abstract class Client with _$Client {
const factory Client(
String id,
String name,
int createdDate,
int updatedDate,
List<UploadJob> uploadJobs,
Map items,
int clientModelVersion) = _Client;

factory Client.fromJson(Map<String, dynamic> json) => _$ClientFromJson(json);
}
之后(正确生成)
通知 Map<String, Item> items,声明 key 作为 字符串 ,以及 作为 项目 目的。现在可以正常生成了。
@freezed
abstract class Client with _$Client {
const factory Client(
String id,
String name,
int createdDate,
int updatedDate,
List<UploadJob> uploadJobs,
Map<String, Item> items,
int clientModelVersion) = _Client;

factory Client.fromJson(Map<String, dynamic> json) => _$ClientFromJson(json);
}
有了这个改变,我就没有必要使用 build.yaml 文件声明 any_map .

关于Flutter:使用带有卡住和 json_serializable 的 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60753850/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com