00.flutter:04.flutter_webでfirestore
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| 00.flutter:04.flutter_webでfirestore [2021/05/26] – [Flutter(web)アプリにFirebaseを追加(FirebaseとFlutterアプリの紐付け)] adash333 | 00.flutter:04.flutter_webでfirestore [2021/05/26] (現在) – [Firestoreリンク] adash333 | ||
|---|---|---|---|
| 行 153: | 行 153: | ||
| (変更前) | (変更前) | ||
| {{: | {{: | ||
| - | |||
| (変更後) | (変更後) | ||
| + | {{: | ||
| + | |||
| + | ===== Cloud Firestoreにデータ書き込み ===== | ||
| + | 以下の本を、Webアプリにしてみてやってみたいと思います。 | ||
| + | |||
| + | < | ||
| + | <a href=" | ||
| + | </ | ||
| + | |||
| + | |||
| + | {{: | ||
| + | |||
| + | まずは、開発モードの状態で、以下のように入力します。 | ||
| + | |||
| + | {{: | ||
| + | {{: | ||
| + | |||
| + | |||
| + | ===== Cloud Firestoreからのデータ取得 ===== | ||
| + | 参考:https:// | ||
| + | |||
| + | flutter run して、Flutterアプリを起動します。 | ||
| + | {{: | ||
| + | |||
| + | |||
| + | lib/ | ||
| + | |||
| + | < | ||
| + | import ' | ||
| + | |||
| + | // Import the firebase_core and cloud_firestore plugin | ||
| + | import ' | ||
| + | import ' | ||
| + | |||
| + | Future< | ||
| + | // Fireabse初期化 | ||
| + | await Firebase.initializeApp(); | ||
| + | runApp(MyApp()); | ||
| + | } | ||
| + | |||
| + | class MyApp extends StatelessWidget { | ||
| + | @override | ||
| + | Widget build(BuildContext context) { | ||
| + | return MaterialApp( | ||
| + | title: ' | ||
| + | theme: ThemeData( | ||
| + | primarySwatch: | ||
| + | ), | ||
| + | home: MyFirestorePage(), | ||
| + | ); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | class MyFirestorePage extends StatefulWidget { | ||
| + | @override | ||
| + | _MyFirestorePageState createState() => _MyFirestorePageState(); | ||
| + | } | ||
| + | |||
| + | class _MyFirestorePageState extends State< | ||
| + | // 作成したドキュメント一覧 | ||
| + | List< | ||
| + | |||
| + | @override | ||
| + | Widget build(BuildContext context) { | ||
| + | return Scaffold( | ||
| + | appBar: AppBar(title: | ||
| + | body: Center( | ||
| + | child: Column( | ||
| + | children: < | ||
| + | ElevatedButton( | ||
| + | child: Text(' | ||
| + | onPressed: () async { | ||
| + | // ドキュメント作成 | ||
| + | await FirebaseFirestore.instance | ||
| + | .collection(' | ||
| + | .doc(' | ||
| + | .set({' | ||
| + | }, | ||
| + | ), | ||
| + | ElevatedButton( | ||
| + | child: Text(' | ||
| + | onPressed: () async { | ||
| + | // ドキュメント作成 | ||
| + | await FirebaseFirestore.instance | ||
| + | .collection(' | ||
| + | .doc(' | ||
| + | .set({' | ||
| + | }, | ||
| + | ), | ||
| + | ElevatedButton( | ||
| + | child: Text(' | ||
| + | onPressed: () async { | ||
| + | // サブコレクション内にドキュメント作成 | ||
| + | await FirebaseFirestore.instance | ||
| + | .collection(' | ||
| + | .doc(' | ||
| + | .collection(' | ||
| + | .doc(' | ||
| + | .set({' | ||
| + | }, | ||
| + | ), | ||
| + | ElevatedButton( | ||
| + | child: Text(' | ||
| + | onPressed: () async { | ||
| + | // コレクション内のドキュメント一覧を取得 | ||
| + | final snapshot = | ||
| + | await FirebaseFirestore.instance.collection(' | ||
| + | // 取得したドキュメント一覧をUIに反映 | ||
| + | setState(() { | ||
| + | documentList = snapshot.docs; | ||
| + | }); | ||
| + | }, | ||
| + | ), | ||
| + | // コレクション内のドキュメント一覧を表示 | ||
| + | Column( | ||
| + | children: documentList.map((document) { | ||
| + | return ListTile( | ||
| + | title: Text(' | ||
| + | subtitle: Text(' | ||
| + | ); | ||
| + | }).toList(), | ||
| + | ), | ||
| + | ], | ||
| + | ), | ||
| + | ), | ||
| + | ); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | Ctrl+Sで保存して、ターミナル画面で r を押して、更新します。 | ||
| + | さらに、上から順番にボタンをクリックしていくと、以下のようになります。 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | なお、82行目が、 | ||
| + | < | ||
| + | documentList = snapshot.docs; | ||
| + | </ | ||
| + | で動いて、 | ||
| + | < | ||
| + | documentList = snapshot.documents; | ||
| + | </ | ||
| + | ではエラーがでて動きませんでした。 | ||
| 行 163: | 行 307: | ||
| Cloud Firestore概要 | Cloud Firestore概要 | ||
| →すごく分かりやすいです。お勧め。 | →すごく分かりやすいです。お勧め。 | ||
| + | |||
| + | |||
| + | https:// | ||
| + | @Riscait | ||
| + | が2020年11月03日に更新 | ||
| + | FlutterFireがアップデートしたからMigration Guideに沿って修正した記録 | ||
| + | →過去の記事のコードを写経して動かなかったときなど、非常に参考になります。 | ||
| + | |||
| + | https:// | ||
| + | CRUD operations using Firebase Cloud Firestore and Flutter | ||
| + | Apr 14, 2021 | ||
| + | |||
| + | |||
| 行 193: | 行 350: | ||
| Firestoreでリアルタイム更新 | Firestoreでリアルタイム更新 | ||
| + | https:// | ||
| + | @glassmonkey | ||
| + | が2020年03月14日に更新 | ||
| + | Dart(Flutter)における非同期処理入門(Firestoreのデータ取得サンプルつき) | ||
00.flutter/04.flutter_webでfirestore.1622022263.txt.gz · 最終更新: 2021/05/26 by adash333
