Abstract class can't be instantiated! in AuthenticationBloc

3,492

Solution 1

Maybe you want to use a single state, for that u need to remove the abstract keyword from state class declaration. U can use

Note class is not 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];
}

Solution 2

Your AuthenticationState is an abstact class. So you can't instantied it, which means you can't create an object from it. To fix this omit the abstract.
I'm quite familar with Bloc and I would suggest you to create a new class for each state and extend from 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);
}
Share:
3,492
Nikash Deka
Author by

Nikash Deka

Updated on December 28, 2022

Comments

  • Nikash Deka
    Nikash Deka over 1 year

    Screenshot of the AuthenticationBloc

    Screenshot of the AuthenticationBloc ...

    how to handle these errors?

    This is my AuthenticatationState.

    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];
    }
    
    • quoci
      quoci about 3 years
      Can you show your AuthenticationState?
    • Nikash Deka
      Nikash Deka about 3 years
      Hi, I have added the AuthenticationState.