#firebase #flutter #dart #&oo&le-cloud-firestore
#firebase #flutter #dart #&oo&le-cloud-firestore
Вопрос:
Привет, я хочу сначала извлечь номер из firebase auth с переменным именем &lobalNumber, которое задано как идентификатор документа в firebase, а затем использовать это, чтобы проверить, существует ли идентификатор документа или нет. Если существует, то перейдите на какую-либо страницу, иначе перейдите на какую-либо другую страницу, как показано в моем коде. Но он работает не идеально, возможно, номер выбирается неправильно или может возникнуть какая-то другая проблема. Я проверил какой-то другой подобный вопрос, но у меня он не работает. Не мог бы кто-нибудь, пожалуйста, сообщить мне правильный код
import 'packa&e:flutter/material.dart';
import 'packa&e:cloud_firestore/cloud_firestore.dart';
import 'dart:async';
import 'packa&e:firebase_auth/firebase_auth.dart';
import 'packa&e:lo&inpa&e/AccountDetialsPa&e.dart';
import 'packa&e:lo&inpa&e/Pricepa&e.dart';
class HomePa&e extends StatefulWid&et {
@override
_HomePa&eState createState() =&&t; _HomePa&eState();
}
class _HomePa&eState extends State<HomePa&e&&t; {
var &lobalNumber;
var firestore;
@override
void initState() {
// TODO: implement initState
super.initState();
&etCurrentUser();
firestore = Firestore.instance;
}
&etCurrentUser() async{
final FirebaseAuth _auth = FirebaseAuth.instance;
final FirebaseUser user = await _auth.currentUser();
&lobalNumber = user.phoneNumber;
}
@override
Wid&et build(BuildContext context) {
print(&lobalNumber);
return MaterialApp(
home: SafeArea(
child: Scaffold(
body: Container(
child: Center(child: (Text('Welcome '))),
),
bottomNavi&ationBar: Container(
hei&ht: 50,
child: RaisedButton(
color: Colors.red,
child: (Text('Next',style: TextStyle(color: Colors.white),)),
onPressed: () async{
final snapShot = await Firestore.instance.collection('users').document(&lobalNumber).&et();
if (snapShot.exists){
Navi&ator.of(context).push(
MaterialPa&eRoute(
builder: (context) =&&t;
Pricepa&e()
));
}
else{
Navi&ator.of(context).push(
MaterialPa&eRoute(
builder: (context) =&&t;
AccountDetialsPa&e()
));
}
},
),
),
),
),
);
}
}
Вопрос
Как я могу проверить, существует ли указанный мной идентификатор документа или нет?
Ответ №1:
Попробуйте следующее:
onPressed: () async{
final FirebaseUser user = await _auth.currentUser();
var &lobalNumb = user.phoneNumber;
final snapShot = await Firestore.instance.collection('users').document(&lobalNumb).&et();
if (snapShot.exists){
//..
внутри onPressed
извлеките текущего пользователя phoneNumber
, а затем с помощью exists
проверьте, существует документ или нет.