lib/sign_in_screen.dart
// ...
class _SignInScreenState extends State<SignInScreen> {
// ...
@override
Widget build(BuildContext context) {
return Scaffold(
body: Form(
key: _formKey,
child: Center(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 24),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// ...
SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: () => _onSignIn(),
child: Text('ログイン'),
),
),
// ...
],
),
),
),
),
);
}
Future<void> _onSignIn() async {
try {
if (_formKey.currentState?.validate() != true) {
return;
}
// 新規登録と同じく入力された内容をもとにログイン処理を行う
final String email = _emailController.text;
final String password = _passwordController.text;
await FirebaseAuth.instance
.signInWithEmailAndPassword(email: email, password: password);
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (_) => PhotoListScreen(),
),
);
} catch (e) {
// 失敗したらエラーメッセージを表示
await showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text('エラー'),
content: Text(e.toString()),
);
},
);
}
}
// ...
}