provider fix

This commit is contained in:
Felipe
2023-11-01 13:06:49 -05:00
parent cdd9b040a8
commit ab0dfb83d1
3 changed files with 37 additions and 38 deletions
+12 -24
View File
@@ -19,30 +19,16 @@ import 'package:url_launcher/url_launcher.dart';
import 'package:get/get.dart';
import 'package:provider/provider.dart';
class DrawerMenu extends StatefulWidget {
@override
State<DrawerMenu> createState() => _DrawerMenuState();
}
class _DrawerMenuState extends State<DrawerMenu> {
class DrawerMenu extends StatelessWidget {
final uid = AuthenticationRepository.instance.getCurrentUserUid();
ScoresModel? scoresModel;
@override
void initState() {
super.initState();
if (scoresModel == null) {
ScoresModel.scoreTo(uid.toString(), false, false).then(
(ScoresModel s) => setState(() => scoresModel = s),
);
}
}
Future<void> _irSugerencias() async {
const url =
'https://admin.prosapp.co/sugerencias'; // Aquí debes poner la URL a la que quieres dirigirte
if (await canLaunch(url)) {
await launch(url);
const url = 'https://admin.prosapp.co/sugerencias';
final Uri _url = Uri.parse(url);
if (await canLaunchUrl(_url)) {
await launchUrl(_url);
} else {
throw 'No se pudo abrir la URL $url';
}
@@ -50,8 +36,9 @@ class _DrawerMenuState extends State<DrawerMenu> {
@override
Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context, listen: false);
final userProvider = Provider.of<UserProvider>(context);
UserModel? user = userProvider.user;
ScoresModel? score = userProvider.score;
return Drawer(
child: Column(
@@ -280,7 +267,7 @@ class _DrawerMenuState extends State<DrawerMenu> {
subtitle: Row(
children: [
RatingBar.builder(
initialRating: scoresModel?.average ?? 0,
initialRating: score?.average ?? 0,
minRating: 1,
direction: Axis.horizontal,
allowHalfRating: true,
@@ -298,7 +285,7 @@ class _DrawerMenuState extends State<DrawerMenu> {
),
const SizedBox(width: 5),
Text(
'(${scoresModel?.total.toString()}) ${scoresModel?.average.toStringAsFixed(1)}'),
'(${score?.total.toString()}) ${score?.average.toStringAsFixed(1)}'),
],
),
),
@@ -417,6 +404,7 @@ class _DrawerMenuState extends State<DrawerMenu> {
ListTile infoUser(BuildContext context, UserModel? user) {
return ListTile(
onTap: () {
Navigator.pop(context);
if (kIsWeb) {
Navigator.push(
context,
+1 -1
View File
@@ -27,7 +27,7 @@ class ScoresModel {
// Me
static Future<ScoresModel> scoreTo(
String userReceived, bool isFromClient, bool userInfo) async {
String? userReceived, bool isFromClient, bool userInfo) async {
final receivedScoresQuery = FirebaseFirestore.instance
.collection('scores')
.where('is_from_professional', isEqualTo: isFromClient)
+24 -13
View File
@@ -1,28 +1,39 @@
// ignore_for_file: avoid_print
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:prosappco/src/models/scores_model.dart';
import 'package:prosappco/src/models/user_model.dart';
class UserProvider extends ChangeNotifier {
final FirebaseFirestore _firestore = FirebaseFirestore.instance;
final tag = "UserProvider";
UserModel? _user;
ScoresModel? _score;
UserProvider() {
_loadUser();
}
var uid = FirebaseAuth.instance.currentUser?.uid;
print("$tag uid=$uid");
if (uid == null) return;
Future<void> _loadUser() async {
final documentSnapshot = await _firestore
.collection('users')
.doc(FirebaseAuth.instance.currentUser?.uid)
.get();
if (documentSnapshot.exists) {
final data = documentSnapshot.data() as Map<String, dynamic>;
_user = UserModel.fromFirestore(data);
notifyListeners();
}
final stream = _firestore.collection('users').doc(uid).snapshots();
stream.listen((documentSnapshot) async {
if (documentSnapshot.exists) {
final data = documentSnapshot.data() as Map<String, dynamic>;
_user = UserModel.fromFirestore(data);
_score = await ScoresModel.scoreTo(uid, false, false);
print("$tag _user=$_user");
print("$tag _score=$_score");
notifyListeners();
}
}, onDone: () {
print("Task Done");
}, onError: (error) {
print("Some Error");
});
}
UserModel? get user => _user;
ScoresModel? get score => _score;
}