# #firebase #flutter #dart #google-cloud-firestore
#огневая база #трепетать #дротик #google-облако-firestore
Вопрос:
У меня есть три ошибки:
- Ошибка: Получатель «пользователь» не определен для типа «Пользователь». Попробуйте импортировать библиотеку, которая определяет «пользователь», исправив имя на имя существующего получателя или определив получатель или поле с именем «пользователь».
- Ошибка: Получатель «пользователь» не определен для типа «Пользователь». Попробуйте импортировать библиотеку, которая определяет «пользователь», исправив имя на имя существующего получателя или определив получатель или поле с именем «пользователь».
- Ошибка: К свойству » 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
, так что вам придется изменить ее и там.