从Firestore检索数据

时间:2020-05-09 06:47:44

标签: firebase flutter google-cloud-firestore

我已经为应用程序创建了身份验证模块,但是现在我想检索数据并可能对其进行修改。
我已经做到了:

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)”之类的东西。

我在不同的网站上尝试了许多不同的东西,然后变得混乱,我认为我正在混搭几个概念。

0 个答案:

没有答案