어플리케이션을 개발하는데 빠질 수 없는 것이 바로 Authentication 부분일 것입니다. 여기서는 Firebase Auth를 Flutter에 구현하는 기본과정을 정리했습니다.
https://sudarlife.tistory.com/entry/flutter-firebase-auth-플러터-파이어베이스-연동-로그인을-구연해보자-part-1
우선적으로 pubspec.yaml 에 dependency 설정을 해두어야 한다. 그 뒤 다음을 참고하여 Cocoapods를 설정한다.
main.dart
import 'package:auth/screens/app.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return GetMaterialApp(
home: App(),
);
}
}
app.dart
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class App extends StatelessWidget {
final _firebaseAuth = FirebaseAuth.instance;
final _emailController = TextEditingController();
final _passwordController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Auth'),
),
body: Center(
child: Column(
children: <Widget>[
TextFormField(
controller: _emailController,
decoration: const InputDecoration(labelText: 'Email'),
),
TextFormField(
controller: _passwordController,
decoration: const InputDecoration(labelText: 'Password'),
),
ElevatedButton(onPressed: Register, child: Text('Register'))
],
),
),
);
}
@override
void dispose() {
// Clean up the controller when the Widget is disposed
_emailController.dispose();
_passwordController.dispose();
}
Future<void> Register() async {
try {
final User? user = (await _firebaseAuth.createUserWithEmailAndPassword(
email: _emailController.text,
password: _passwordController.text,
))
.user;
if (user != null) {
print('Success');
} else {
print('Failed');
}
_emailController.text = '';
_passwordController.text = '';
} catch (e) {
print(e);
Get.snackbar('Error', e.toString(), snackPosition: SnackPosition.BOTTOM);
}
}
}
firebase_auth: ^3.3.5
firebase_core: ^1.11.0
get: ^4.6.1