我正在尝试使用具有内置值的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;
}
卡住了请帮助
答案 0 :(得分:0)
您的PostsList
类实际上并不包含字段posts
。这是一个吸气剂,因此无法设置其值,并且PostsList
中没有接受posts
参数的构造函数。因此,错误消息告诉您的恰恰是:没有为任何构造函数定义posts
参数。
对于第二个问题,似乎您没有名为Post.fromMap(args)
的工厂构造函数,或者没有向其传递正确的数据类型。
答案 1 :(得分:0)
谢谢@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));
工作正常