2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Flutter] google_sing_inを使ったサインイン時にキャンセルを押すとcatchできないErrorが出る問題

2
Last updated at Posted at 2020-07-31

環境

  • VSCode ← たぶん重要
  • iOS 13.6 シミュレータ
  • google_sign_in 4.5.1

※ 試していませんが、Android Studioでデバッグしている場合は起こらないかもしれません

問題

Googleアカウントでのサインインを行うためのパッケージgoogle_sign_inを使って、サインイン画面を表示させた際に、左上に表示されるキャンセルボタンを押して、サインインせずにサインイン画面を閉じると、下記のようなエラーが出る。しかもcatchできない。
signIn()関数は失敗時にnullを返すと関数の説明に書いてありますが、なぜ。。。?

PlatformException (PlatformException(sign_in_canceled, com.google.GIDSignIn, The user canceled the sign-in flow.))
Future<void> _handleSignIn() async {
  try {
    await _googleSignIn.signIn();
  } catch (error) {
    // サインインをキャンセルした時にここが実行されない。
    // _googleSignIn.signIn().catchError(onError)としても同様
    print(error);
  }
}

対処方法

先に対処方法から。
デバッグを開始する際、コマンドflutter runで実行する。

???
そんなんでほんとに変わるの?
と思いましたが、ちゃんと動きました。(自分の場合は)

Future<void> _handleSignIn() async {
  try {
    // キャンセルした時は、nullが返ってくる
    final GoogleSignInAccount googleSignInAccount await _googleSignIn.signIn();

    if (googleSignInAccount != null) {
      // ~~~
    } 
  } catch (error) {
    print(error);
  }
}

ちなみに、以下ではダメでした。
VSCodeのデバッグ機能を使うと起きる問題?

  • VSCodeのメニュー「実行」→「デバッグの開始」
  • F5

以下のQAを参考にしました。
https://github.com/flutter/flutter/issues/44431#issuecomment-657431886

なんとなく不便なので、他に対処方法をご存知の方がいらっしゃいましたら、教えていただけると大変助かります。

2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?