This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import 'package:firebase_auth/firebase_auth.dart'; | |
| import 'package:freezed_annotation/freezed_annotation.dart'; | |
| part "authentication_state.freezed.dart"; | |
| @freezed | |
| class AuthenticationState with _$AuthenticationState { | |
| const factory AuthenticationState.initial() = _Initial; | |
| const factory AuthenticationState.loading() = _Loading; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import 'package:firebase_auth_riverpod/src/feature/auth/data_source/auth_data_source.dart'; | |
| import 'package:firebase_auth_riverpod/src/feature/auth/providers/state/authentication_state.dart'; | |
| import 'package:hooks_riverpod/hooks_riverpod.dart'; | |
| class AuthNotifier extends StateNotifier<AuthenticationState> { | |
| AuthNotifier(this._dataSource) : super(const AuthenticationState.initial()); | |
| final AuthDataSource _dataSource; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Future<void> login({required String email, required String password}) async { | |
| state = const AuthenticationState.loading(); | |
| final response = await _dataSource.login(email: email, password: password); | |
| state = response.fold( | |
| (error) => AuthenticationState.unauthenticated(message: error), | |
| (response) => AuthenticationState.authenticated(user: response!), | |
| ); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import 'package:firebase_auth/firebase_auth.dart'; | |
| import 'package:freezed_annotation/freezed_annotation.dart'; | |
| part "authentication_state.freezed.dart"; | |
| @freezed | |
| class AuthenticationState with _$AuthenticationState { | |
| const factory AuthenticationState.initial() = _Initial; | |
| const factory AuthenticationState.loading() = _Loading; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import 'package:firebase_auth_riverpod/src/feature/auth/data_source/auth_data_source.dart'; | |
| import 'package:firebase_auth_riverpod/src/feature/auth/providers/state/authentication_state.dart'; | |
| import 'package:hooks_riverpod/hooks_riverpod.dart'; | |
| class AuthNotifier extends StateNotifier<AuthenticationState> { | |
| AuthNotifier(this._dataSource) : super(const AuthenticationState.initial()); | |
| final AuthDataSource _dataSource; | |
| Future<void> login({required String email, required String password}) async { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import 'package:firebase_auth_riverpod/src/core/widgets/custom_button.dart'; | |
| import 'package:firebase_auth_riverpod/src/feature/auth/views/signup_view.dart'; | |
| import 'package:flutter/material.dart'; | |
| import 'package:flutter_signin_button/button_list.dart'; | |
| import 'package:flutter_signin_button/button_view.dart'; | |
| import 'package:hooks_riverpod/hooks_riverpod.dart'; | |
| // ignore: depend_on_referenced_packages | |
| import 'package:flutter_hooks/flutter_hooks.dart'; | |
| class LoginView extends HookConsumerWidget { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import 'package:firebase_auth_riverpod/src/feature/auth/views/login_view.dart'; | |
| import 'package:flutter/material.dart'; | |
| import 'package:flutter_signin_button/button_list.dart'; | |
| import 'package:flutter_signin_button/button_view.dart'; | |
| import 'package:hooks_riverpod/hooks_riverpod.dart'; | |
| // ignore: depend_on_referenced_packages | |
| import 'package:flutter_hooks/flutter_hooks.dart'; | |
| class SignupView extends HookConsumerWidget { | |
| const SignupView({super.key}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Center( | |
| child: CustomButton( | |
| title: 'Signup', | |
| isDisabled: false, | |
| onPressed: () => ref.read(authNotifierProvider.notifier).signup(email: email.text,password: password.text), | |
| loading: ref.watch(authNotifierProvider).maybeWhen(orElse: () => false, loading: () => true), | |
| ), | |
| ) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ref.listen(authNotifierProvider, (previous, next) { | |
| next.maybeWhen( | |
| orElse: () => null, | |
| authenticated: (user) { | |
| // Navigate to any screen | |
| }, | |
| unauthenticated: (message) => | |
| ScaffoldMessenger.of(context).showSnackBar( | |
| SnackBar( | |
| content: Text(message!), |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import 'package:firebase_auth_riverpod/src/core/widgets/custom_button.dart'; | |
| import 'package:firebase_auth_riverpod/src/feature/auth/providers/authentication_provider.dart'; | |
| import 'package:flutter/material.dart'; | |
| import 'package:flutter_signin_button/button_list.dart'; | |
| import 'package:flutter_signin_button/button_view.dart'; | |
| import 'package:hooks_riverpod/hooks_riverpod.dart'; | |
| // ignore: depend_on_referenced_packages | |
| import 'package:flutter_hooks/flutter_hooks.dart'; | |
| class SignupView extends HookConsumerWidget { |