多块构建器

avi*_*ash 6 state-management dart flutter bloc

这是情况——

我的 Flutter 应用仪表板屏幕有两个单独的列表

  1. 页面视图在顶部和
  2. 项目清单

在此处输入图片说明

我有一个名为dashboard_bloc 和dashboard_event 的块,有两个单独的事件来分别获取pageView 数据和列表项数据以及dashboard_state。

这就是我开始的方式。

    void initState() {
    // TODO: implement initState
    super.initState();
    _dashboardBloc = DashboardBloc(repository: ProductRepositoryImpl());
    _dashboardBloc.add(FetchHomeProductsEvent(token: token, productId: "1"));
    _dashboardBloc.add(FetchProductsEvent(token: token));
  }

    Widget build(BuildContext context) {
    return Scaffold(
      body: BlocProvider(
        create: (context) => _dashboardBloc,
        child: SingleChildScrollView(
          child: Column(
            children: <Widget>[
              Container(
                child: BlocBuilder<DashboardBloc, DashboardState>(
                    bloc: _dashboardBloc,
                    builder: (context, state) {
                      if (state is DashboardLoadingState) {
                        return buildLoading();
                      } else if (state is DashboardErrorState) {
                        return buildErrorUi(state.message);
                      } else if (state is DashboardLoadedState) {
                        return buildProdctsList(state.products, context);
                      } else {
                        return Container();
                      }
                    }),
              ),
              Container(
                child: BlocBuilder<DashboardBloc, DashboardState>(
                    
                    bloc: _dashboardBloc,
                    builder: (context, state) {
                      if (state is DashboardProductState) {
                        return Text(state.products.name);
                      } else if (state is DashboardErrorState) {
                        return buildErrorUi(state.message);
                      } else {
                        return Container();
                      }
                    }),
              ),
            ],
          ),
        ),
      ),
    );
  }
Run Code Online (Sandbox Code Playgroud)

这是集团过渡日志 -

I/flutter (  877): Transition { currentState:DashboardStateInitialState, event: FetchHomeProductsEvent,
        nextState: DashboardProductState }
I/flutter (  877): Transition { currentState: DashboardProductState, event: FetchProductsEvent, nextState:
        DashboardLoadingState }
I/flutter (  877): Transition { currentState: DashboardLoadingState, event: FetchProductsEvent, nextState:
        DashboardLoadedState }
Run Code Online (Sandbox Code Playgroud)

这里的问题是我无法呈现 FetchHomeProductsEvent 的状态。它只呈现 FetchProductsEvent 的状态。

我如何使用多个 bloc builder 处理这两个事件。任何帮助都感激不尽。

小智 1

就我个人而言,这就是我 在主页上实现我的方法 ===> 创建了一个用于显示可刷卡的块(我称之为 BannerBloc);===>创建一个用于显示产品网格的块(我称之为 ProductBloc);

这两个块仅位于我的主页文件夹内,因为我总是每页创建一个块文件夹,然后该文件夹可以包含像

  • 横幅集团
  • 产品集团

我的结构