flutter for web で firebase その2
https://gyazo.com/bfecab0e4bab3c57194b1effecf3c588
Widgetに値を流す方法見つけるのにかなり苦戦しました...
最終的に下記のコードで読み取れました。
code:main.dart
Widget _buildBody(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: firestore().collection("user").onSnapshot,
builder: (context, snapshot) {
if (!snapshot.hasData) return LinearProgressIndicator();
return Text(snapshot.data.docs0.data()'test'); },
);
}
下記のcloud_firestore版のコードを参考にしました。 code:cloud_firestore.dart
Widget _buildBody(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('baby').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return LinearProgressIndicator();
return _buildList(context, snapshot.data.documents);
},
);
}
snapshot.data.docs[0].data()['test']のsnapshot.dataが肝で、VSCodeの補完を頼りに試しにやってみたら何故かうまくいきました。ドキュメントにはdataのようなプロパティはないはずなのに何故?(hasDataもない)VScodeはどこを参照してきているんだ? StreamBuilderのsnapshotはAsyncSnapshot<QuerySnapshot>というStreamBuilder固有のクラスになっていてdataはstreamの非同期処理によって受信したデータ(QuerySnapshot)を返すプロパティになっている。紛らわしいわ 本番で使うなら、今後FlutterFireでも叩けるようになるのを見越してBLoCとか使うべきだよなぁ
次はAuthをやる