Класс «Пользователь» не имеет конструктора по умолчанию. Firebase

avatar
Cameron Johnson
8 августа 2021 в 22:38
117
1
1

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

import 'package:firebase_auth/firebase_auth.dart';

import 'database.dart';

class AuthService {

  final FirebaseAuth _auth = FirebaseAuth.instance;

  User _userFromFirebaseUser(User user) {
    return user != null ? User(uid: user.uid) : null;
  }

  // Auth change user stream
  Stream<User> get user {

    return _auth.authStateChanges().map(
            (User user) => _userFromFirebaseUser(user)
    );
  }
}
Источник
jamesdlin
8 августа 2021 в 23:00
0

Класс User из package:firebase_auth не предоставляет общедоступных конструкторов. Вы собираетесь создать какой-то другой класс User? Если это так, вам нужно либо переименовать другой, если это возможно, либо импортировать его с использованием библиотечного префикса.

Ответы (1)

avatar
Sajad Abdollahi
8 августа 2021 в 22:55
2

Я полагаю, что у вас есть конфликт в пользовательской модели при импорте, поэтому я просто назвал файл импорта базы данных как db и использовал в нем пользователя с db.User

Думаю, это будет работать так

import 'package:firebase_auth/firebase_auth.dart';

import 'database.dart' as db;

class AuthService {

  final FirebaseAuth _auth = FirebaseAuth.instance;

  db.User _userFromFirebaseUser(User user) {
    return user != null ? db.User(uid: user.uid) : null;
  }

  // Auth change user stream
  Stream<db.User> get user {

    return _auth.authStateChanges().map(
            (User user) => _userFromFirebaseUser(user)
    );
  }
}