Получение данных из Firestore - PullRequest
0 голосов
/ 09 мая 2020

Я уже создал модуль аутентификации для приложения, но теперь я хотел бы получить данные и, возможно, изменить их.
Я уже сделал это:

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)».

Я пробовал много разных вещей с разных веб-сайтов, и тут начался хаос, и мне кажется, я смешиваю несколько концепций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...