Firebaseを使ったアプリ概要
このページのゴール
- Firebaseを使ったアプリの概要を知る
- Firebaseを使ったアプリの雛形を作成する
Firebaseを使ったアプリ
ここからは、今まで学んだFlutterとFirebaseの知識をフル活用して
アプリを作っていきましょう。
まずは、作成するアプリの概要を紹介します。
アプリ概要
機能一覧
- ✨ メールアドレス・パスワードでログインできる
- ✨ ログアウトできる
- ✨ チャットの投稿一覧を表示できる
- ✨ チャットに投稿できる
- ✨ チャットの投稿を削除できる
画面一覧
- ログイン画面
- チャット画面
- 投稿画面
イメージ図
作るアプリのイメージは掴めましたか? 🤔
さっそく、プロジェクトの作成から始めましょう 🚀🚀🚀
Firebase初期設定
Firebaseプロジェクト作成
今回はFirebaseを使ったアプリの開発になるので、
Authentication概要ページを参考に、Firebaseプロジェクト作成
を行いましょう。
プロジェクト名は mychatapp
としておきましょう 👀
アプリの雛形作成
アプリの雛形として、プロジェクトと各画面のベースを作成していきます。
- ログイン画面
- チャット画面
- 投稿画面
❗️ 注意事項 ❗️
AuthenticationやFirestoreの設定が簡単なWebアプリで開発を進めていきます。
起動するデバイスは Chrome
を選択して下さい。
プロジェクト作成
アプリ起動のページ で説明したのと同じように、
まずはアプリ用のプロジェクトを作成しましょう。
$ flutter create mychatapp
...
In order to run your application, type:
$ cd mytodoapp
$ flutter run
Your application code is in mychatapp/lib/main.dart.
うまく作成できたでしょうか?
念の為 VSCode で作成したプロジェクトを開き、Webアプリを起動できることを確認しましょう。
各画面を作成
lib/main.dart
を開き、空の画面を作るため、以下のように書き換えましょう。
解説
- アプリ起動時に最初に表示するWidgetとして
MyChatApp
を指定 - トップ画面に表示するWidgetとして
LoginPage
を指定 - チャット画面
ChatPage
から ログイン画面LoginPage
に遷移できる - ログイン画面
LoginPage
から チャット画面ChatPage
に遷移できる - チャット画面
ChatPage
から 投稿画面AddPostPage
に遷移できる pushReplacement()
を使うと現在の画面を破棄して別の画面に遷移できる
スクリーンショット
ログイン画面 | チャット画面 | 投稿画面 |
---|---|---|
ソースコード
import 'package:flutter/material.dart';
void main() {
// 最初に表示するWidget
runApp(ChatApp());
}
class ChatApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
// アプリ名
title: 'ChatApp',
theme: ThemeData(
// テーマカラー
primarySwatch: Colors.blue,
),
// ログイン画面を表示
home: LoginPage(),
);
}
}
// ログイン画面用Widget
class LoginPage extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
child: Text('ログイン'),
onPressed: () async {
// チャット画面に遷移+ログイン画面を破棄
await Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (context) {
return ChatPage();
}),
);
},
)
],
),
),
);
}
}
// チャット画面用Widget
class ChatPage extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('チャット'),
actions: <Widget>[
IconButton(
icon: Icon(Icons.close),
onPressed: () async {
// ログイン画面に遷移+チャット画面を破棄
await Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (context) {
return LoginPage();
}),
);
},
),
],
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () async {
// 投稿画面に遷移
await Navigator.of(context).push(
MaterialPageRoute(builder: (context) {
return AddPostPage();
}),
);
},
),
);
}
}
// 投稿画面用Widget
class AddPostPage extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('チャット投稿'),
),
body: Center(
child: ElevatedButton(
child: Text('戻る'),
onPressed: () {
// 1つ前の画面に戻る
Navigator.of(context).pop();
},
),
),
);
}
}
雛形が作成できました
お疲れさまでした 👏
これでアプリの雛形作成が完了です。
ほとんどコードを書いていないのに動きのあるアプリが作れましたね 🤩
Flutterを使うと手軽にアプリが作れることが改めて実感できたんじゃないでしょうか。
この後も、各画面の機能を作り込んでいくので頑張っていきましょう 💪
まとめ
- AuthenticationやFirestoreを使いチャットアプリを作成していく
pushReplacement()
を使うと現在の画面を破棄して別の画面に遷移できる
次は、ログイン機能を作り込んでいきましょう 💪💪💪