首页 > 解决方案 > 使用类参数传递 BlocProvider

问题描述

在我的应用程序中的一个类中,我想BlocProvider使用类参数传递,例如:

enum MenuItems{
  dashboard,
  tutorials,
  logout
}

class DashboardItems {
  MenuItems menuItem;
  BlocProvider action;

  DashboardItems(
      {
        @required this.menuItem,
        @required this.action
      }
  );
}

在与action字段中,我尝试通过此方法:

BlocProvider.of<MyEvent>(context).dispatch(MyEvent(event)))

如:

DashboardItems(
    menuItem: MenuItems.dashboard,
    action:   BlocProvider.of<FragmentBloc>(context).dispatch(FragmentEvent(fragmentHome))),

有什么解决方案可以通过和使用它吗?

标签: flutterdart

解决方案


看起来您传递的不是函数,而是函数的结果。

DashboardItems(
  menuItem: MenuItems.dashboard,
  // pass function here:
  action: () { BlocProvider.of<FragmentBloc>(context).dispatch(FragmentEvent(fragmentHome));}


class DashboardItems {
  MenuItems menuItem;
  Function action; //Change type from BlocProvider to Function.

  DashboardItems(
      {
        @required this.menuItem,
        @required this.action
      }
  );
}

推荐阅读