Skip to content

Instantly share code, notes, and snippets.

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;
@coder-Aayush
coder-Aayush / authentication_provider.dart
Created November 12, 2022 13:51
Authentication State Provider
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;
}
@coder-Aayush
coder-Aayush / authentication_provider.dart
Created November 22, 2022 18:14
Authentication State Provider
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!),
);
}
@coder-Aayush
coder-Aayush / authentication_state.dart
Created November 22, 2022 18:35
Authentication State
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;
@coder-Aayush
coder-Aayush / authentication_provider.dart
Created November 22, 2022 19:18
Authentication State Provider
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 {
@coder-Aayush
coder-Aayush / login_view.dart
Last active November 23, 2022 13:54
Login View
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 {
@coder-Aayush
coder-Aayush / signup_view.dart
Last active November 23, 2022 14:00
Signup View
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});
@coder-Aayush
coder-Aayush / signup_view.dart
Last active November 23, 2022 13:59
Signup View
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),
),
)
@coder-Aayush
coder-Aayush / signup_view.dart
Created November 22, 2022 20:23
Signup View
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!),
@coder-Aayush
coder-Aayush / signup_view.dart
Created November 23, 2022 15:58
Signup View
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 {