Freezed — средство получения ‘x’ не определено для x

#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;