Home > Back-end >  How to access a bloc's current state's property in the initState?
How to access a bloc's current state's property in the initState?

Time:10-11

I have a global bloc that wraps the materiapApp widget and I am able to get the bloc inside my deep nested widget tree. However, I would like to access the current state's property.


  @override
  void initState() {

    super.initState();
    _internetConnectionBloc = BlocProvider.of<InternetConnectionBloc>(context); 
    //I am able to get the bloc but I would like to access it's current state's property

  }

States:

abstract class InternetConnectionState extends Equatable {
  const InternetConnectionState();

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

class InternetConnectionInitial extends InternetConnectionState {}

class InternetConnectionStatusUpdated extends InternetConnectionState {
  final InternetConnectionType connectionType;

  const InternetConnectionStatusUpdated(this.connectionType);

  @override
  List<Object> get props => [connectionType];
}

I would like to access the InternetConnectionStatusUpdated state's connectionType property in the initState instead of blocListenerin the build method.

CodePudding user response:

try this in initState

var connectionType = BlocProvider.of<InternetConnectionBloc>(context).state.connectionType;

CodePudding user response:

I fixed it like this:

 @override
 void initState() {

    super.initState();
    _internetConnectionBloc = BlocProvider.of<InternetConnectionBloc>(context); 
     final state = _internetConnectionBloc!.state; 
    if(state is InternetConnectionStatusUpdated){ // --> this way dart
     //analyze was able to understand the state type
      print(state.connectionType);
    }
  
 }

  • Related