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