LoginSignup
0
2

More than 3 years have passed since last update.

【Flutter】【Firestore】FutureBuilder<->StreamBuilderに切り替える

Posted at

はじめに

FlutterでFirestoreを使う際に題のような切り替えをする際の備忘録。
FutureとStreamの違いに関してはこちらの記事が参考になった。

やりかた

それぞれ以下のように対応させる。

FutureBuilder

class ListFuture extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FutureBuilder<QuerySnapshot>(
      future: FirebaseFirestore.instance.collection('hoge').get(),
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.hasError) return new Text('Error: ${snapshot.error}');
        switch (snapshot.connectionState) {
          case ConnectionState.waiting:
            return new Text('Loading...');
          default:
            return new ListView(
              children: snapshot.data.docs.map((DocumentSnapshot document) {
                return new ListTile(
                  title: new Text(document['hige']),
                  subtitle: new Text(document['hage']),
                );
              }).toList(),
            );
        }
      },
    );
  }
}

StreamBuilder

class ListStream extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
      stream: FirebaseFirestore.instance.collection('hoge').snapshots(),
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.hasError) return new Text('Error: ${snapshot.error}');
        switch (snapshot.connectionState) {
          case ConnectionState.waiting:
            return new Text('Loading...');
          default:
            return new ListView(
              children: snapshot.data.docs.map((DocumentSnapshot document) {
                return new ListTile(
                  title: new Text(document['hige']),
                  subtitle: new Text(document['hage']),
                );
              }).toList(),
            );
        }
      },
    );
  }
}

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2