Firestore запрос к переменной для заполнения общих настроек - PullRequest
0 голосов
/ 24 марта 2020

Впервые во Флаттере, и хотя я уже много лет занимаюсь программированием, это мой первый опыт разработки. Я пытался выяснить, как сделать запрос к облачному хранилищу пожаров и сопоставить одно из этих свойств с общим предпочтением. Поскольку мое приложение общается с облачным пожарным хранилищем, когда пользователь входит в систему, я чувствую, что могу обновить свои общие настройки несколькими полями, которые избавят меня от необходимости вызывать пожарное хранилище каждый раз, когда я хочу получить эту информацию.

Я создал класс, который представляет макет коллекции в хранилище

class FirestoreUser {
  FirestoreUser(this.aboutMe, this.nickname);

  final String aboutMe;
  final String nickname;


  factory FirestoreUser.fromMap(Map<String, dynamic> data) {
    if (data == null) {
      return null;
    }
    final String aboutMe = data['aboutMe'];
    final String nickname = data['nickname'] ?? '';
    return FirestoreUser(aboutMe, nickname);
  }

  Map<String, dynamic> toMap() {
    return {
      'aboutMe': aboutMe,
      'nickname': nickname,

    };
  }
}

У меня также есть функция, которая записывает данные в коллекцию Firestore. Это работает просто отлично.

С чем мне тяжело, как я могу запросить "aboutMe" в коллекции выше? Я использую провайдера для получения UID, но как мне сделать что-то вроде этого:

aboutMe = Firestore.query.tothatdocument

Вот то, над чем я работаю до сих пор:

final user = Provider.of<User>(context, listen: false);
final firestore = Provider.of<FirestoreService>(context, listen:false);
final firebaseUser = await FirebaseAuth.instance.currentUser();
final QuerySnapshot result = await Firestore.instance.collection('users').where('id', isEqualTo: firebaseUser.uid).getDocuments();
final List<DocumentSnapshot> documents = result.documents;
SharedPreferences prefs = await SharedPreferences.getInstance();

И я хотите сделать что-то вроде этого:

prefs.setString('aboutMe', 'thatAboutMeVariable);

Возможно ли это? Я думаю, что мне не хватает захвата потока в качестве снимка? но не уверен.

Еще раз спасибо!

...