如何将相同的小部件传递给 blocs 构建器中的所有状态

How to pass same widget to all states in a blocs builder

假设我有以下 bloc 构建器:

    return BlocListener<LoginBloc, LoginState>(listener: (context, state) {
  if (state is ErrorLoginState) {
    showError(state.message, context);
  }
}, child: BlocBuilder<LoginBloc, LoginState>(
  builder: (context, state) {
    if (state is StartLogin) {
      return Center(
        child: Loading(),
      );
    }

    return Scaffold(
      backgroundColor: Colors.white,
      body: SingleChildScrollView(
        padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 50.0),
        child: Container(),
      ),
    );
  },
));

我如何将同一个小部件(如搜索栏)传递给所有状态渲染?唯一的方法是将他的代码放在所有状态条件中吗?

我已经做到了:

Widget build(BuildContext context){ 
       return Scaffold(
      backgroundColor: Colors.white,
      body: SingleChildScrollView(
        padding: EdgeInsets.symmetric(vertical: 20.0, horizontal:                     50.0),
        child: SizedBox(
                children: [
                    _showSearch(),
                ]),
      ),
  );
}

Widget _showSearch() {  
    return BlocListener<SearchBloc, SearchState>(          
        child: BlocBuilder<SearchBloc, SearchState>(        
            builder: (context, state) {          
                if (state is SearchInitial) {            
                    return SearchHome();          
                } else if (state is SuccessFilterState) {            
                    return SearchResult(opportunityList:       state.opportunityList);                       
                } else {            
                    return ErrorSearch();          
                }        
            },      
        ),    
    );  
}