DARTオブジェクトを使っているFireStoreからのフラッタListView

3279 ワード

Firebaseとフラッターは、天国で作られるマッチのようです.両方とも非常に驚くほどよく働きます.
前の記事では、私はあなたを作成する方法を示している.
これは、このようなデータプロパティから直接必要な情報を抽出することでした.
doc.data()["title"]

この記事では、実際のDARTオブジェクトにこれらのデータを変更し、その代わりにListViewで使用する方法を学びます.

モデルファイル


まず最初に、モデルDARTファイルを作成しなければなりません.そのファイルで、Noteオブジェクトのクラスを作成します.
class NoteModel{
String title;
String content;
NoteModel({
required this.title,
required this.content,
});
}

さあ、Firestore Docsを上記のDARTオブジェクトに変換する関数を作成します.

FireStoreで私たちのメモコレクション

FirestoreドキュメントをDARTオブジェクトに変換するファクトリ


このためには、ファクトリ関数を書く必要があります.心配しないでください、これはクラスのインスタンスを返す関数のただの名前です.
同じDARTクラスで、我々の工場をつくりましょう.
factory NoteModel.fromDocumentSnapshot({required DocumentSnapshot<Map<String,dynamic>> doc}){
return NoteModel(
title: doc.data()!["title"],
content:doc.data()!["content"],
);
}

上記の関数はDocumentSnapshot(Firestoreドキュメント)を受け入れ、notemodelに変換します.

FirStoreからノートをストリーミング


次に、データを表示するページで、Firestoreからすべてのメモを取得する機能を作成します.
final _db = FirebaseFirestore.instance;
Stream<List<NoteModel>> noteStream(){
try{
return
_db.collection("notes)
.snapshots
.map((notes){
final List<NoteModel> notesFromFirestore = <NoteModel>[];
for(final DocumentSnapshot<Map<String,dynamic>> doc in notes.docs){
notesFromFirestore.add(NoteModel.fromDocumentSnapshot(doc:doc));
}
return notesFromFirestore;
});
} catch(e){
rethrow;
}
}

上記の関数は、我々のFireStoreコレクションからメモをストリームします.

データの表示


ノートを表示するには、StreamBuilderを使用します.
StreamBuilder<List<NoteModel>>(
stream: noteStream();
builder: (context,snapshot){
if(!snapshot.hasData){
return Center(
child:Text("No Data");
)
} else if(snapshot.hasError){
return Center(
child: Text("An Error Occured);
)
} else if(snapshot.hasData){
return ListView.Builder(
itemCount: snapshot.data!.index,
itemBuilder: (context,index){
NoteModel currentModel = snapshot.data![index];
return Card(
child: ListTile(
title: Text(currentNote .title)
subtitle:Text(currentModel.content)
)
);
}
)
}
else return Center(child: Text("An Error occured));
}
)

上記のコードは、それらのFirestoreデータからリスト表示をもたらします.直接.dataにアクセスする代わりに、DARTオブジェクトのプロパティに直接アクセスしていることに注意してください.

ラップ


あなたはFirebase Hereに関連するより多くの記事を見つけることができます
あなたがここで役に立つ何かを見つけたという望み.
私は常に提案を開いている!
私にあなたの提案と意見をDMに知らせてください、さもなければ、メールを[email protected]に落としてください.
あなたが寛大すぎると感じているならば、あなたはBuy Me a Coffeeを通して私を支持することができます.
最後に、あなたがこれが役に立つならば、より多くの人々がこれから利益を得ることができるように、あなたの範囲内でこれを共有してください.そして、これらのようなより多くのポストを得るために、私に続いてください😉.