#flutter #dart #freezed
#флаттер #dart #замороженный
Вопрос:
Я пытаюсь начать работу с Freezed, и я определяю этот класс ниже, а остальная часть моего приложения, похоже, не понимает, что у него есть id
свойство:
import 'package:firebase_auth/firebase_auth.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'user.freezed.dart';
@freezed
abstract class VpUser implements _$VpUser {
factory VpUser({String id, User firebaseUser}) = _VpUser;
const factory VpUser.empty() = _Empty;
const VpUser._();
}
Я использую класс в своей службе аутентификации:
class AuthenticationService extends VpService {
final FirebaseAuth _auth = FirebaseAuth.instance;
final Rx<User> _firebaseUser = Rx<User>();
VpUser get user =>
VpUser(id: _firebaseUser.value?.uid, firebaseUser: _firebaseUser.value);
затем я вызываю пользователя, подключенного к AuthService, следующим образом:
if (_authenticationService.user.id != null) {
И у меня ошибка:
Ошибка: средство получения ‘id’ не определено для класса ‘VpUser’.
- ‘VpUser’ взят из ‘package:vepo/domain/auth/user.dart’ (‘lib/domain/auth/user.dart’). Попробуйте исправить имя на имя существующего средства получения или определить средство получения или поле с именем ‘id’. если (_authenticationService.user.id != null) {
Как мне объявить идентификатор, VpUser
чтобы другие классы могли получить к нему доступ?
Ответ №1:
Должно быть, это была моя VpUser.empty
реализация, а не объявление id
поля.
Я думаю, что это как сделать пустое значение, не заставляя остальную часть приложения не видеть это свойство:
const factory VpUser.empty(
{@nullable @Default(null) String id,
@nullable @Default(null) User firebaseUser}) = _Empty;