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();
});
}
私は何度もキャストして.cast()
います。コンパイラが何をすべきかを理解し、読みやすく理解しやすいように、型を削除して型をより明確にすることができると期待しています。
完全なコードは現在、私のフォークにあります
ところで: flutter_reduxフラッター アプリは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();
});
}