I keep getting this error in my code for firebase, I am using a stream list and it produces this error when calling from the map.
How can I resolve this?
error: The argument type 'StreamTransformer<dynamic, dynamic>' can't be assigned to the parameter type 'StreamTransformer<QuerySnapshot*, List>
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:new_todo_list_shopping/model/todo.dart';
import 'package:new_todo_list_shopping/utils.dart';
class FirebaseApi {
static Future<String> createTodo(Todo todo) async {
final docTodo = FirebaseFirestore.instance.collection('todo').doc();
todo.id = docTodo.id;
await docTodo.set(todo.toJson());
return docTodo.id;
}
static Stream<List<Todo>> readTodos() => FirebaseFirestore.instance
.collection('todo')
.orderBy(TodoField.createdTime, descending: true)
.snapshots()
.transform(Utils.transformer(Todo.fromJson));
static Future updateTodo(Todo todo) async {
final docTodo = FirebaseFirestore.instance.collection('todo').doc(todo.id);
await docTodo.update(todo.toJson());
}
static Future deleteTodo(Todo todo) async {
final docTodo = FirebaseFirestore.instance.collection('todo').doc(todo.id);
await docTodo.delete();
}
}
update the return type of transformer fucntion. I was also facing same issue, you can use the transformer method code below:
static StreamTransformer<QuerySnapshot<Map<String, dynamic>>, List<T>> transformer<T>(
T Function(Map<String, dynamic> json) fromJson) =>
StreamTransformer<QuerySnapshot<Map<String, dynamic>>, List<T>>.fromHandlers(
handleData: (QuerySnapshot<Map<String, dynamic>> data, EventSink<List<T>> sink) {
final snaps = data.docs.map((doc) => doc.data()).toList();
final objects = snaps.map((json) => fromJson(json as Map<String, dynamic>)).toList();
sink.add(objects);
},
);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.