LoginSignup
1
1

【Flutter x Supabase】 ログアウトやり方+おまけつき

Last updated at Posted at 2023-12-06

スクリーンショット 2023-11-30 17.16.14(2).png

この記事は、株式会社ゆめみの23卒 Advent Calendar 2023のアドベントカレンダーになります!!
色々な種類の記事が投稿されるので、お楽しみに🤗

こんにちは。いせりゅーです。今回は、Flutter x Supabaseでログアウトやり方に加えて、必要そうな記載を書いてみました。(あくまでも一例です)

Supabaseを学習し始めてからまもないため、間違えた実装を記載するかも知れません。その場合はコメントなどで教えていただけると幸いです🙇

1、ログアウトしてもいいか確認する
2、ログアウトする
3、ログイン画面に遷移をする

こんな感じで進めていきます〜〜!!

ログアウトしてもいいか確認する

ログアウトの確認方法は、いろいろやり方があるかも知れませんが、今回はダイアログを出すことにしました。

 void openLogOutDialog() {
    showDialog(
      context: context,
      builder: (context) {
        return CupertinoAlertDialog(
          title: Text('ログアウト'),
          content: Text('ログアウトしますか?'),
          actions: <Widget>[
            CupertinoDialogAction(
              child: Text(
                'キャンセル',
                style: TextStyle(color: Colors.blueAccent),
              ),
              isDestructiveAction: true,
              onPressed: () => Navigator.pop(context),
            ),
            CupertinoDialogAction(
              child: Text(
                'ログアウト',
                style: TextStyle(color: Colors.red),
              ),
              onPressed: () {
                logout();
                Navigator.pop(context);
              },
            ),
          ],
        );
      },
    );
  }

  void logout() {
   // ログアウトの処理を書く
  }
 

ログアウトする

ログアウトする処理はシンプルに記載をすることができます。

final supabase = Supabase.instance.client;

Future<void> logout() async {
  await supabase.auth.signOut();
}

ログイン画面に遷移をする

今回は、ログアウトした後にログイン画面に遷移する処理を記載してみました。
また、pushだと前の画面に戻れてしまうため、pushReplacementを使用します。

Navigator.pushReplacement(
  context,
  MaterialPageRoute( 
    builder: (context) => LoginPage(),
  ),
);

ソースコード


final supabase = Supabase.instance.client;

  void openLogOutDialog() {
    showDialog(
      context: context,
      builder: (context) {
        return CupertinoAlertDialog(
          title: Text('ログアウト'),
          content: Text('ログアウトしますか?'),
          actions: <Widget>[
            CupertinoDialogAction(
              child: Text(
                'キャンセル',
                style: TextStyle(color: Colors.blueAccent),
              ),
              isDestructiveAction: true,
              onPressed: () => Navigator.pop(context),
            ),
            CupertinoDialogAction(
              child: Text(
                'ログアウト',
                style: TextStyle(color: Colors.red),
              ),
              onPressed: () {
                logout();
                Navigator.pop(context);
              },
            ),
          ],
        );
      },
    );
  }

  Future<void> logout() async {
    await supabase.auth.signOut();
    await Navigator.pushReplacement(
      context,
      MaterialPageRoute( 
        builder: (context) => LoginPage(),
      ),
    );
  }

最後に

自分もまだまだ学習中ですが、Supabaseのいいところが毎日見つかってきてとてもいいですね。個人的にはこれからの発展に期待したいですね😁

ちょっとした宣伝

株式会社ゆめみの23卒のメンバーでアドベントカレンダーを作成しています。
新卒のフレッシュな記事がたくさん投稿予定なので、少しでも興味があれば購読いただけると幸いです!!

YUMEMI New Grad Advent Calendar 2023
1
1
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
1
1