update y uso de provider

This commit is contained in:
Felipe
2023-10-30 10:25:46 -05:00
parent efa8c37a88
commit 7c902696b6
7 changed files with 256 additions and 183 deletions
+63 -52
View File
@@ -7,6 +7,7 @@ import 'package:prosappco/src/authentication/authentication_repository.dart';
import 'package:prosappco/src/components/photo_view.dart';
import 'package:prosappco/src/models/scores_model.dart';
import 'package:prosappco/src/models/user_model.dart';
import 'package:prosappco/src/providers/user_provider.dart';
import 'package:prosappco/src/screens/configuracion.dart';
import 'package:prosappco/src/screens/messages_user.dart';
import 'package:prosappco/src/screens/professional_profile_web.dart';
@@ -17,6 +18,7 @@ import 'package:prosappco/src/screens/support.dart';
import 'package:prosappco/src/screens/web_view.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:get/get.dart';
import 'package:provider/provider.dart';
class DrawerMenu extends StatefulWidget {
@override
@@ -31,13 +33,6 @@ class _DrawerMenuState extends State<DrawerMenu> {
@override
void initState() {
super.initState();
if (user == null) {
UserModel.getUser(uid.toString()).then(
(UserModel s) => setState(() => user = s),
);
}
if (scoresModel == null) {
ScoresModel.scoreTo(uid.toString(), false, false).then(
(ScoresModel s) => setState(() => scoresModel = s),
@@ -57,7 +52,9 @@ class _DrawerMenuState extends State<DrawerMenu> {
@override
Widget build(BuildContext context) {
final User? currentUser = FirebaseAuth.instance.currentUser;
final userProvider = Provider.of<UserProvider>(context);
// final UserModel? user = userProvider.user;
return Drawer(
child: Column(
@@ -66,52 +63,18 @@ class _DrawerMenuState extends State<DrawerMenu> {
color: Colors.white,
child: Column(
children: [
ListTile(
onTap: () {
if (kIsWeb) {
Navigator.push(
context,
CupertinoPageRoute(
builder: (BuildContext context) {
return const ProfileWebScreen();
},
),
);
StreamBuilder<UserModel>(
stream: userProvider.itemsStream,
builder: (BuildContext context,
AsyncSnapshot<UserModel> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(child: CircularProgressIndicator());
} else if (snapshot.hasError) {
return Center(child: Text('Error: ${snapshot.error}'));
} else {
Navigator.push(
context,
CupertinoPageRoute(
builder: (BuildContext context) {
return const ProfileScreen();
},
),
);
return infoUser(context, snapshot.data);
}
},
title: Text(user?.name ?? '',
style: const TextStyle(fontWeight: FontWeight.bold)),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
currentUser?.phoneNumber ?? '',
style: const TextStyle(fontSize: 12),
),
Text(
user?.city ?? '',
style: const TextStyle(fontSize: 12),
),
],
),
leading: ReferencePhoto(
ref: user?.photo,
size: 55,
sizeCircle: 60,
),
trailing: const Icon(Icons.keyboard_arrow_right,
color: Colors.black),
contentPadding:
const EdgeInsets.symmetric(vertical: 20, horizontal: 16),
),
], //
),
@@ -392,7 +355,7 @@ class _DrawerMenuState extends State<DrawerMenu> {
snackPosition: SnackPosition.BOTTOM,
);
} else {
if (currentUser?.phoneNumber != user?.phoneNumber) {
if (user?.phoneNumber != user?.phoneNumber) {
Get.snackbar(
'Tu número de teléfono sigue sin cambios.',
'Para guardar esta información, dirígete a tu perfil y selecciona la opción Guardar',
@@ -461,4 +424,52 @@ class _DrawerMenuState extends State<DrawerMenu> {
),
);
}
ListTile infoUser(BuildContext context, UserModel? user) {
return ListTile(
onTap: () {
if (kIsWeb) {
Navigator.push(
context,
CupertinoPageRoute(
builder: (BuildContext context) {
return const ProfileWebScreen();
},
),
);
} else {
Navigator.push(
context,
CupertinoPageRoute(
builder: (BuildContext context) {
return const ProfileScreen();
},
),
);
}
},
title: Text(user?.name ?? '',
style: const TextStyle(fontWeight: FontWeight.bold)),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
user?.phoneNumber ?? '',
style: const TextStyle(fontSize: 12),
),
Text(
user?.city ?? '',
style: const TextStyle(fontSize: 12),
),
],
),
leading: ReferencePhoto(
ref: user?.photo,
size: 55,
sizeCircle: 60,
),
trailing: const Icon(Icons.keyboard_arrow_right, color: Colors.black),
contentPadding: const EdgeInsets.symmetric(vertical: 20, horizontal: 16),
);
}
}