stream image

This commit is contained in:
Felipe
2024-02-16 11:37:12 -05:00
parent d9d6b50d78
commit 1b565d70f4
8 changed files with 129 additions and 211 deletions
+5 -7
View File
@@ -6,8 +6,6 @@ import 'package:prosappco/blocs/my_user_bloc/my_user_bloc.dart';
import 'package:prosappco/blocs/sign_up_bloc/sign_up_bloc.dart'; import 'package:prosappco/blocs/sign_up_bloc/sign_up_bloc.dart';
import 'package:prosappco/blocs/sing_in_bloc/sign_in_bloc.dart'; import 'package:prosappco/blocs/sing_in_bloc/sign_in_bloc.dart';
import 'package:prosappco/blocs/update_user_info_bloc/update_user_info_bloc.dart'; import 'package:prosappco/blocs/update_user_info_bloc/update_user_info_bloc.dart';
import 'package:prosappco/screens/home/home_screen.dart';
import 'package:user_repository/user_repository.dart';
import 'app_view.dart'; import 'app_view.dart';
@@ -33,12 +31,12 @@ class MainApp extends StatelessWidget {
BlocProvider<SignUpBloc>( BlocProvider<SignUpBloc>(
create: (context) => Injector.appInstance.get<SignUpBloc>(), create: (context) => Injector.appInstance.get<SignUpBloc>(),
) )
// RepositoryProvider<AuthenticationBloc>(
// create: (_) => AuthenticationBloc(myUserRepository: userRepository),
// ),
], ],
child: BlocBuilder<MyUserBloc, MyUserState>(builder: (context, state) { child: BlocBuilder<MyUserBloc, MyUserState>(
builder: (context, state) {
return const MyAppView(); return const MyAppView();
})); },
),
);
} }
} }
+9 -29
View File
@@ -1,11 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:prosappco/blocs/my_user_bloc/my_user_bloc.dart';
import 'package:prosappco/blocs/sing_in_bloc/sign_in_bloc.dart';
import 'package:prosappco/blocs/update_user_info_bloc/update_user_info_bloc.dart';
import 'package:prosappco/screens/authentication/welcome_screen.dart'; import 'package:prosappco/screens/authentication/welcome_screen.dart';
import 'package:prosappco/screens/home/home_screen.dart'; import 'package:prosappco/screens/home/home_screen.dart';
import 'package:prosappco/screens/profile/profile_screen.dart';
import 'blocs/authentication_bloc/authentication_bloc.dart'; import 'blocs/authentication_bloc/authentication_bloc.dart';
@@ -31,33 +27,17 @@ class MyAppView extends StatelessWidget {
), ),
home: BlocBuilder<AuthenticationBloc, AuthenticationState>( home: BlocBuilder<AuthenticationBloc, AuthenticationState>(
builder: (context, state) { builder: (context, state) {
if (state.status == AuthenticationStatus.authenticated) { switch (state.status) {
// MultiBlocProvider( case AuthenticationStatus.authenticated:
// providers: [
// BlocProvider(
// create: (context) => SignInBloc(
// userRepository:
// context.read<AuthenticationBloc>().userRepository),
// ),
// BlocProvider(
// create: (context) => UpdateUserInfoBloc(
// userRepository:
// context.read<AuthenticationBloc>().userRepository),
// ),
// BlocProvider(
// create: (context) => MyUserBloc(
// myUserRepository:
// context.read<AuthenticationBloc>().userRepository)
// ..add(GetMyUser(
// myUserId:
// context.read<AuthenticationBloc>().state.user!.uid)),
// ),
// ],
// child: const HomeScreen(),
// );
return const HomeScreen(); return const HomeScreen();
} else {
case AuthenticationStatus.unauthenticated:
return const WelcomeScreen(); return const WelcomeScreen();
case AuthenticationStatus.unknown:
return const Center(
child: CircularProgressIndicator(), // splash screen
);
} }
}), }),
); );
@@ -2,7 +2,6 @@ import 'dart:async';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:meta/meta.dart'; import 'package:meta/meta.dart';
import 'package:user_repository/user_repository.dart'; import 'package:user_repository/user_repository.dart';
+1 -40
View File
@@ -15,38 +15,12 @@ class MyUserBloc extends Bloc<MyUserEvent, MyUserState> {
: _userRepository = myUserRepository, : _userRepository = myUserRepository,
super(const MyUserState.loading()) { super(const MyUserState.loading()) {
_userRepository.streamUser().listen((event) { _userRepository.streamUser().listen((event) {
log('xd ---: ${event}');
if (event == null) { if (event == null) {
log('UserChanged: ${event}');
emit(const MyUserState.failure()); emit(const MyUserState.failure());
} else { } else {
log('UserChanged: ${event}'); emit(MyUserState.success(event));
emit(MyUserState.success(event!));
} }
}); });
// on<UserChanged>(_onUserChanged);
// _userRepository.user.first.then((user) {
// log('xd: ${user}');
// if (user != null) {
// add(UserChanged(user: user));
// _userSubscription = _userRepository.user.listen((user) {
// log('xd: ${user}');
// add(UserChanged(user: user));
// });
// }
// }).catchError((e) {
// log('xd: ${e}');
// add(UserChanged(user: null));
// });
// on<GetMyUser>(_onGetMyUser);
// _userRepository.user.listen((user) {
// if (user != null) {
// add(GetMyUser(myUserId: user.uid));
// }
// });
// emit(MyUserState.success(MyUser(
// name: 'John', id: '123', email: 'johndoe@gmail.com', picture: '')));
} }
void _onUserChanged(UserChanged event, Emitter<MyUserState> emit) { void _onUserChanged(UserChanged event, Emitter<MyUserState> emit) {
@@ -59,17 +33,4 @@ class MyUserBloc extends Bloc<MyUserEvent, MyUserState> {
emit(MyUserState.success(event.user!)); emit(MyUserState.success(event.user!));
} }
} }
// void _onGetMyUser(GetMyUser event, Emitter<MyUserState> emit) async {
// log('GetMyUser: ${event.myUserId}');
// emit(const MyUserState.loading());
// try {
// MyUser myUser = await _userRepository.getMyUser(event.myUserId);
// log('GetMyUser: $myUser');
// emit(MyUserState.success(myUser));
// } catch (e) {
// log('GetMyUser: $e');
// emit(const MyUserState.failure());
// }
// }
} }
+1 -2
View File
@@ -1,7 +1,6 @@
RegExp emailRexExp = RegExp(r'^[\w-\.]+@([\w-]+.)+[\w-]{2,4}$'); RegExp emailRexExp = RegExp(r'^[\w-\.]+@([\w-]+.)+[\w-]{2,4}$');
RegExp passwordRexExp = RegExp( RegExp passwordRexExp = RegExp(r'^(?=.*?[A-Z])(?=.*?[0-9]).{8,}$');
r'^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#\$&*~`)\%\-(_+=;:,.<>/?"[{\]}\|^]).{8,}$');
RegExp specialCharRexExp = RegExp specialCharRexExp =
RegExp(r'^(?=.*?[!@#$&*~`)\%\-(_+=;:,.<>/?"[{\]}\|^])'); RegExp(r'^(?=.*?[!@#$&*~`)\%\-(_+=;:,.<>/?"[{\]}\|^])');
+4 -11
View File
@@ -169,29 +169,22 @@ class _SignUpScreenState extends State<SignUpScreen> {
? Colors.green ? Colors.green
: Theme.of(context).colorScheme.onBackground), : Theme.of(context).colorScheme.onBackground),
), ),
Text(
"⚈ 1 number",
style: TextStyle(
color: containsNumber
? Colors.green
: Theme.of(context).colorScheme.onBackground),
),
], ],
), ),
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
"1 special character", "8 minimum character",
style: TextStyle( style: TextStyle(
color: containsSpecialChar color: contains8Length
? Colors.green ? Colors.green
: Theme.of(context).colorScheme.onBackground), : Theme.of(context).colorScheme.onBackground),
), ),
Text( Text(
"8 minimum character", "1 number",
style: TextStyle( style: TextStyle(
color: contains8Length color: containsNumber
? Colors.green ? Colors.green
: Theme.of(context).colorScheme.onBackground), : Theme.of(context).colorScheme.onBackground),
), ),
+9 -17
View File
@@ -26,10 +26,7 @@ class _HomeScreenState extends State<HomeScreen> {
}, },
child: Scaffold( child: Scaffold(
backgroundColor: Theme.of(context).colorScheme.background, backgroundColor: Theme.of(context).colorScheme.background,
drawer: drawer: Drawer(
BlocBuilder<MyUserBloc, MyUserState>(builder: (context, state) {
if (state.status == MyUserStatus.success) {
return Drawer(
backgroundColor: Theme.of(context).colorScheme.background, backgroundColor: Theme.of(context).colorScheme.background,
child: SingleChildScrollView( child: SingleChildScrollView(
child: Column( child: Column(
@@ -53,7 +50,7 @@ class _HomeScreenState extends State<HomeScreen> {
), ),
child: Column( child: Column(
children: [ children: [
state.user!.picture == "" context.read<MyUserBloc>().state.user!.picture == ""
? Container( ? Container(
width: 80, width: 80,
height: 80, height: 80,
@@ -75,7 +72,11 @@ class _HomeScreenState extends State<HomeScreen> {
shape: BoxShape.circle, shape: BoxShape.circle,
image: DecorationImage( image: DecorationImage(
image: NetworkImage( image: NetworkImage(
state.user!.picture!, context
.read<MyUserBloc>()
.state
.user!
.picture!,
), ),
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
@@ -83,14 +84,14 @@ class _HomeScreenState extends State<HomeScreen> {
), ),
const SizedBox(height: 12), const SizedBox(height: 12),
Text( Text(
state.user!.name, context.read<MyUserBloc>().state.user!.name,
style: const TextStyle( style: const TextStyle(
fontSize: 24, fontSize: 24,
color: Colors.white, color: Colors.white,
), ),
), ),
Text( Text(
state.user!.email, context.read<MyUserBloc>().state.user!.email,
style: const TextStyle( style: const TextStyle(
fontSize: 15, fontSize: 15,
color: Colors.white, color: Colors.white,
@@ -122,16 +123,7 @@ class _HomeScreenState extends State<HomeScreen> {
], ],
), ),
), ),
);
} else {
return Drawer(
backgroundColor: Theme.of(context).colorScheme.background,
child: const Center(
child: CircularProgressIndicator(),
), ),
);
}
}),
appBar: AppBar(), appBar: AppBar(),
body: Center( body: Center(
child: Text( child: Text(
@@ -29,10 +29,6 @@ class FirebaseUserRepository implements UserRepository {
_userStreamController.add(null); _userStreamController.add(null);
} }
}); });
this.streamUser().listen((event) {
log('xd - : ${event}');
});
} }
// Stream<MyUser?> get user => _userStreamController.stream; // Stream<MyUser?> get user => _userStreamController.stream;