К свойству » uid «нельзя получить безусловный доступ, потому что получатель может быть «нулевым». Попробуйте сделать доступ условным (используя»?»).

# #firebase #flutter #dart #google-cloud-firestore

#огневая база #трепетать #дротик #google-облако-firestore

Вопрос:

У меня есть три ошибки:

  1. Ошибка: Получатель «пользователь» не определен для типа «Пользователь». Попробуйте импортировать библиотеку, которая определяет «пользователь», исправив имя на имя существующего получателя или определив получатель или поле с именем «пользователь».
  2. Ошибка: Получатель «пользователь» не определен для типа «Пользователь». Попробуйте импортировать библиотеку, которая определяет «пользователь», исправив имя на имя существующего получателя или определив получатель или поле с именем «пользователь».
  3. Ошибка: К свойству » uid «нельзя получить безусловный доступ, поскольку получатель может быть «нулевым». Попробуйте сделать доступ условным (используя ‘?.’) или добавить нулевую проверку к цели (‘!’)
   import 'package:cloud_firestore/cloud_firestore.dart';  import 'package:firebase_auth/firebase_auth.dart';   class _AuthService {  final FirebaseAuth _auth = FirebaseAuth.instance;  final FirebaseFirestore _firestore = FirebaseFirestore.instance;   //giriş yap  Futurelt;Usergt; signIn(String email, String password) async {  var user = await _auth.signInWithEmailAndPassword(  email: email, password: password);  return User.user;  }   //çıkış yap  signOut() async {  return await _auth.signOut();  }   //kayıt ol  Futurelt;Usergt; createPerson(String name, String lastname,  String telephoneNumber, String email, String password) async {  var user = await _auth.createUserWithEmailAndPassword(  email: email, password: password);   await _firestore.collection('Person').doc(user.user.uid).set({  'name': name,  'lastname': lastname,  'telephone': telephoneNumber,  'email': email,  });   return User.user;  }  

Комментарии:

1. Я имею в виду, что ошибка вроде как говорит сама за себя. Вы вызываете .user на пользователя, который является несуществующим свойством. в последнем случае вы также вызываете .uid для свойства, допускающего обнуление, поэтому, возможно, вы захотите рассмотреть возможность использования user?.uid.

Ответ №1:

Последняя строка здесь выглядит неправильно:

 Futurelt;Usergt; signIn(String email, String password) async {  var user = await _auth.signInWithEmailAndPassword(  email: email, password: password);  return User.user; }  

User Во-первых, User.user вход-это класс. Скорее всего, вы хотите сослаться на user переменную, которую вы объявили в строке выше, поэтому: return user.user .

Так что у этого больше шансов:

 Futurelt;Usergt; signIn(String email, String password) async {  var user = await _auth.signInWithEmailAndPassword(  email: email, password: password);  return user.user; }  

И поскольку я знаю , что мы запутаемся user.user , я предпочитаю дать переменной другое имя:

 Futurelt;Usergt; signIn(String email, String password) async {  var credentials = await _auth.signInWithEmailAndPassword(  email: email, password: password);  return credentials.user; }  

Похоже , у вас та же проблема createPerson , так что вам придется изменить ее и там.