Я пытаюсь очистить некоторый (рабочий) код на развилке проекта Flutter Architecture Samples github.У кого-нибудь, кто знаком с кастингом в Dart 2, есть какие-либо предложения о том, как очистить мою попытку?
Это может измениться после публикации, но у меня сейчас есть:
Stream<List<TodoEntity>> todos() {
return firebase.reference().child(path).onValue.map((event) {
if (event.snapshot == null || event.snapshot.value == null) return [];
return Map
.castFrom(event.snapshot.value.map((key, doc) {
return MapEntry(
key,
TodoEntity(
doc['task'],
key,
doc['note'] ?? '',
doc['complete'] ?? false,
));
}))
.values
.toList()
.cast();
});
}
I'mПри многократном приведении я ожидаю, что смогу удалить .cast()
и быть более точным в отношении типов, чтобы компилятор знал, что делать, и его было легче читать и понимать.
Полный код в настоящее время можно найти наmy fork
кстати: приложение flutter_redux flutter работает с firestore , я добавил поддержку, чтобы оно работало с firebaseбаза данных реального времени , включая тесты.
редактировать: Благодаря Rémi Rousselet , следующие работы без приведения:
Stream<List<TodoEntity>> todos() {
return firebase.reference().child(path).onValue.map((event) {
if (event.snapshot == null || event.snapshot.value == null) return [];
final Map<dynamic, dynamic> value = event.snapshot.value;
final todoMap = value.map((key, doc) {
return MapEntry(
key,
TodoEntity(
doc['task'],
key,
doc['note'] ?? '',
doc['complete'] ?? false,
));
});
return todoMap.values.toList();
});
}