TKK_E32211340/lib/auth_provider.dart

73 lines
1.8 KiB
Dart

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
class AuthProvider with ChangeNotifier {
final FirebaseAuth _firebaseAuth;
AuthProvider(this._firebaseAuth);
Stream<User?> get authStateChanges => _firebaseAuth.authStateChanges();
Future<bool> signIn({
required String email,
required String password,
required BuildContext context,
}) async {
try {
await _firebaseAuth.signInWithEmailAndPassword(
email: email,
password: password,
);
return true;
} on FirebaseAuthException catch (e) {
_showErrorDialog(context, e.message!);
return false;
}
}
Future<bool> register({
required String email,
required String password,
required String displayName, // Tambahkan parameter displayName
required BuildContext context,
}) async {
try {
UserCredential userCredential =
await _firebaseAuth.createUserWithEmailAndPassword(
email: email,
password: password,
);
if (userCredential.user != null) {
await userCredential.user!.updateDisplayName(displayName);
await userCredential.user!.reload();
}
return true; // Registrasi berhasil
} on FirebaseAuthException catch (e) {
_showErrorDialog(context, e.message!);
return false; // Registrasi gagal
}
}
Future<void> signOut() async {
await _firebaseAuth.signOut();
}
void _showErrorDialog(BuildContext context, String message) {
showDialog(
context: context,
builder: (context) => AlertDialog(
title: const Text('Error'),
content: Text(message),
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: const Text('OK'),
),
],
),
);
}
}