我正在尝试使用具有内置值的sembast,同时尝试使BuiltList脱离列表而卡住
未定义命名参数'posts'。尝试将名称更正为现有命名参数的名称,或定义名称为'posts'.dart(undefined_named_parameter)的命名参数。
也是
没有为类'Post'定义'fromMap'方法。尝试将名称更正为现有方法的名称,或定义一个名为“ fromMap”的方法。
Future<PostsList> getPostsFromDb() async {
print('Loading from database');
// post list
var postsList;
// fetching data
final recordSnapshots = await _postsStore.find(
await _db,
);
// Making a List<Post> out of List<RecordSnapshot>
if (recordSnapshots.length > 0) {
postsList = PostsList(
posts: recordSnapshots.map((snapshot) {
final post = Post.fromMap(snapshot.value);
// An ID is a key of a record from the database.
post.id = snapshot.key;
return post;
}).toList());
}
return postsList;
}
PostList类
abstract class PostsList implements Built<PostsList, PostsListBuilder> {
PostsList._();
factory PostsList([updates(PostsListBuilder b)]) = _$PostsList;
BuiltList<Post> get posts;
String toJson() {
return json.encode(serializers.serializeWith(PostsList.serializer, this));
}
static PostsList fromJson(String jsonString) {
return serializers.deserializeWith(
PostsList.serializer, json.decode(jsonString));
}
static Serializer<PostsList> get serializer => _$postsListSerializer;
}
卡住了请帮助
您的PostsList
类实际上并不包含字段posts
。这是一个吸气剂,因此您无法设置其值,并且PostsList
中没有接受posts
参数的构造函数。因此,这正是错误消息告诉您的内容:posts
参数未为任何构造函数定义。
对于第二个问题,您似乎没有名为Post.fromMap(args)
的工厂构造函数,或者没有向其传递正确的数据类型。
谢谢,@ all,您的答复,我已经解决了以下更改的问题
final List<Post> postResponse = deserializeListOf<Post>(res).asList();
final Serializers serializers = _$serializers;
Serializers standardSerializers = (serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();
T deserialize<T>(dynamic value) =>
standardSerializers.deserializeWith<T>(standardSerializers.serializerForType(T), value);
BuiltList<T> deserializeListOf<T>(dynamic value) =>
BuiltList.from(value.map((value) => deserialize<T>(value)).toList(growable: false));
效果很好