1

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();
  });
}
4

1 に答える 1