class PixabayImage {
final String webformatURL;
final String previewURL;
final int likes;
PixabayImage({
required this.webformatURL,
required this.previewURL,
required this.likes,
});
}
factory
で、独自のファクトリーメソッドが作成可能
factory PixabayImage.fromMap(Map<String, dynamic> map) {
return PixabayImage(
webformatURL: map['webformatURL'],
previewURL: map['previewURL'],
likes: map['likes'],
);
}
final
をつけて初期値を与えれば、型を省略できる
- FlutterアプリにFirebaseを導入する方法はZennにまとめてある
- ID, Pass なら
firebase_auth
のみでOK
- Google Signin でログインするなら
google_sign_in
も使う
- Android はフィンガープリントを用意
- iOS は Info.plist にスキームの戻り設定を追加する???
- snapshot ←→ モデルクラス
- 変換のための関数を用意しておくと良い
withConverter
を使ってCollectionReference
を作成しておくと便利.
final postsReference =
FirebaseFirestore.instance.collection('posts').withConverter(
fromFirestore: (snapshot, _) {
return Post.fromFirestore(snapshot);
},
toFirestore: (value, _) {
return value.toMap();
},
);
add()
の代わりにdocs().set()
でもOK
- 参考
await FirebaseFirestore.instance
.collection('posts')
.add({
'text': ........,
'email': .......,
'date': ........,
});
FutureBuilder
とQuerySnapshot
を利用する
- 参考
FutureBuilder<QuerySnapshot>(
future: FirebaseFirestore.instance
.collection('posts')
.orderBy('date')
.get(),
builder: (context, snapshot) {
if (snapshot.hasData) {
final List<DocumentSnapshot> documents = snapshot.data!.docs;
// 以下省略.
}
},
)
FutureBuilder
の代わりにStreamBuilder
を利用する
get()
の代わりにsnapshot()
を利用する
- それ以外は同じ
- 参考
Row
と Column
の中で利用する
- 子要素を引き伸ばす、もしくは縮める
- 違いはこちら