Я уже создал модуль аутентификации для приложения, но теперь я хотел бы получить данные и, возможно, изменить их.
Я уже сделал это:
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:harcelementapp/authentification/controlAuth.dart';
import 'package:provider/provider.dart';
class Test extends StatefulWidget {
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
@override
Widget build(BuildContext context) {
Utilisateur _utilisateurDeFirebaseUser(FirebaseUser user){
return user != null ? Utilisateur(idUtil: user.uid) : null;
}
var utilisateur = Provider.of<FirebaseUser>(context);
final db = DataService();
child: Scaffold(
appBar: new AppBar(
title: Text('Test'),
),
body: StreamBuilder(
stream: Firestore.instance.collection('utilisateurs').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return Text('loading');
return Column(
children: <Widget>[
StreamProvider<Personne>.value(
stream: db.streamPersonne(user), // All children will have access to SuperHero data
child: Text('here i would like to show name or email or role for example. juste choose one information from current user data'),
),
]
);
}
)
);
}
}
class Personne {
final String userId;
final String nom;
final String mail;
final String tel;
final String role;
Personne({this.userId, this.nom, this.mail, this.tel, this.role});
factory Personne.fromFirestore(DocumentSnapshot doc) {
Map data = doc.data;
return Personne(
userId: doc.documentID,
nom: data['nomComplet'],
mail: data['emailUtil'],
tel: data['numeroTel'],
role: data['userRole'],
);
}
}
class DataService {
final Firestore _db = Firestore.instance;
Stream<Personne> streamPersonne(String id) {
return _db
.collection('utilisateurs')
.document(id)
.snapshots()
.map((snap) => Personne.fromMap(snap.data));
}
}
firebase
Я знаю, что в этом нет смысла, но я немного запутался в некоторых частях библиотеки. Я хотел бы получить информацию от моего текущего пользователя, который был аутентифицирован из моей базы данных. Затем поместите эту информацию в объект, чтобы иметь доступ ко всей информации, когда она мне нужна. Если я хочу напечатать где-нибудь просто имя, я думаю о чем-то вроде «text (object.name)».
Я пробовал много разных вещей с разных веб-сайтов, и тут начался хаос, и мне кажется, я смешиваю несколько концепций.