私は最近フラッターを使い始めました。メールとパスワードを使用してFirebaseサインインを実装しようとしています。正しいメールとパスワードを入力したときに機能しますが、パスワードが間違っているときは機能しません。 Android studioがこれを以下に示すように、例外をキャッチしようとしても、パスワードが間違っているとアプリがフリーズし、PlatformExceptionが発生します。
ここに私のサインイン実装があります:
String _reason;
Future<void> _performLogin() async {
String reason;
// This is just a demo, so no actual login here.
try{
FirebaseUser user = await FirebaseAuth.instance.signInWithEmailAndPassword(email: _email, password: _password);
if(user != null){
Navigator.of(context).Push(new MaterialPageRoute<dynamic>(
builder: (BuildContext context) {
return new MyApp();
},
));
final snack = new SnackBar(
content: new Text("Signed In Successfully"),
action: null,
duration: new Duration(seconds: 4),
backgroundColor: Colors.black,
);
Scaffold.of(context).showSnackBar(snack);
}
}on PlatformException catch(e){
reason = '${e.message}';
/*final snack = new SnackBar(
content: new Text(e.message),
action: null,
duration: new Duration(seconds: 4),
backgroundColor: Colors.black,
);
Scaffold.of(context).showSnackBar(snack);*/
}
setState(() {
_reason = reason;
});
}
import 'package:flutter/services.Dart' show PlatformException;
も追加しました
例外をキャッチする方法を教えてください、ありがとうございます。
私はしばらく同じ問題を抱えていましたが、その理由を知りました。
ここでの問題は、PlatformExceptionをキャッチできないように見えますが、実際には、例外を「キャッチしている」ことです。
Android Studioでは、[実行]> [ブレークポイントの表示]に移動して、デバッグ違反ポリシーを設定できます。
[有効]をオフにすると、例外をキャッチするAndroid Studioが「邪魔しない」ようになり、アプリがcatch句を実行したときにスナックバーを適切に表示します。アプリを「デバッグしていないとき」に期待することです。
ただし、Break on exceptionsを有効にしてデバッグしている場合、Android Studioは、catch句が実行される前にPlatformExceptionで中断することによってその仕事をします。
したがって、[有効]オプションをオフにするか、Android Studioの[プログラムの再開]ボタンを押すだけで、心配する必要はありません。アプリはおそらく正常に動作しています。)