【问题标题】:Abstract class can't be instantiated! in AuthenticationBloc抽象类无法实例化!在 AuthenticationBloc 中
【发布时间】:2021-06-11 22:29:32
【问题描述】:

AuthenticationBloc 的屏幕截图

如何处理这些错误?

这是我的身份验证状态。

part of 'authentication_bloc.dart';

@immutable
abstract class AuthenticationState extends Equatable {
  //
  final AuthenticationStatus status;
  final User user;

  AuthenticationState._({
    this.status = AuthenticationStatus.unknown,
    this.user = User.empty,
  });

  AuthenticationState.unknown() : this._();

  AuthenticationState.authenticated(User user)
      : this._(status: AuthenticationStatus.authentidated, user: user);

  AuthenticationState.unauthenticated()
      : this._(status: AuthenticationStatus.unauthenticated);

  @override
  List<Object> get props => [status, user];
}

【问题讨论】:

  • 你能显示你的AuthenticationState吗?
  • 嗨,我已经添加了 AuthenticationState。

标签: flutter dart bloc flutter-bloc


【解决方案1】:

也许您想使用单个状态,为此您需要从状态类声明中删除 abstract 关键字。你可以使用

注意类不是抽象的

part of 'authentication_bloc.dart';

@immutable
class AuthenticationState extends Equatable {
  //
  final AuthenticationStatus status;
  final User user;

  AuthenticationState._({
    this.status = AuthenticationStatus.unknown,
    this.user = User.empty,
  });

  AuthenticationState.unknown() : this._();

  AuthenticationState.authenticated(User user)
      : this._(status: AuthenticationStatus.authentidated, user: user);

  AuthenticationState.unauthenticated()
      : this._(status: AuthenticationStatus.unauthenticated);

  @override
  List<Object> get props => [status, user];
}

【讨论】:

    【解决方案2】:

    您的AuthenticationState 是一个抽象类。所以你不能实例化它,这意味着你不能从它创建一个对象。要解决此问题,请省略 abstract
    我对Bloc 非常熟悉,我建议您为每个状态创建一个新类并从 AuthenticationState 扩展。

    @immutable
    abstract class AuthenticationState extends Equatable {
      final AuthenticationStatus status;
      final User user;
    
      AuthenticationState({
        this.status = AuthenticationStatus.unknown,
        this.user = User.empty,
      });
    
      @override
      List<Object> get props => [status, user];
    }
    
    class AuthenticationStateUnknown extends AuthenticationState {
      AuthenticationStateUnknown() : super();
    }
    
    class AuthenticationStateAuthenticated extends AuthenticationState {
      AuthenticationStateAuthenticated(User user)
          : super(status: AuthenticationStatus.authenticated, user: user);
    }
    
    class AuthenticationStateUnAuthenticated extends AuthenticationState {
      AuthenticationStateUnAuthenticated()
          : super(status: AuthenticationStatus.unAuthenticated);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-08-04
      • 1970-01-01
      • 2017-02-05
      • 2015-10-06
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多