使用 BLoC 的抽屉导航加载内容
Drawer navigiation load content with BLoC
我正在尝试使用 BLoC 从我的抽屉中加载内容或页面。我正在使用 flutter_bloc: ^4.0.0
菜单块
class MenuBloc extends Bloc<MenuEvent, MenuState> {
@override
MenuState get initialState => Dashboard();
@override
Stream<MenuState> mapEventToState(
MenuEvent event,
) async* {
if (event is DashboardClicked) {
yield Dashboard();
}
if (event is ProfileClicked) {
yield Profile();
}
}
}
菜单事件
abstract class MenuEvent{
@override
List<Object> get props => [];
}
class LoadDefaultMenu extends MenuEvent {}
class DashboardClicked extends MenuEvent {}
class ProfileClicked extends MenuEvent {}
菜单状态
abstract class MenuState extends Equatable {
const MenuState();
@override
List<Object> get props => [];
}
class Dashboard extends MenuState {}
class Profile extends MenuState {}
我有这个来参加 store
活动。
class NavModel {
String title;
IconData icon;
MenuEvent menuEvent;
NavModel({this.title, this.icon, this.menuEvent});
}
List<NavModel> navigationItems = [
NavModel(
title: 'Dashboard',
icon: Icons.insert_chart,
menuEvent: BlocProvider.of<MenuBloc>(context).add(
DashboardClicked(),
),
),
NavModel(
title: 'Profile',
icon: Icons.person,
menuEvent: BlocProvider.of<MenuBloc>(context).add(
ProfileClicked(),
),
),
];
但问题出在这部分List<NavModel> navigationItems
。我得到这个错误
Error: This expression has type 'void' and can't be used. menuEvent:
BlocProvider.of(context).add(
DashboardClicked(),
),
当我改成这个时
menuEvent: MenuEvent.DashboardClicked
我收到这个错误
Error: Getter not found: 'DashboardClicked'.
menuEvent: MenuEvent.DashboardClicked
我该如何解决?我错过了什么吗?
DashboardClicked 是子 class,
更改代码:
menuEvent: MenuEvent.DashboardClicked
至:
menuEvent: DashboardClicked()
在 NavModel class
我正在尝试使用 BLoC 从我的抽屉中加载内容或页面。我正在使用 flutter_bloc: ^4.0.0
菜单块
class MenuBloc extends Bloc<MenuEvent, MenuState> {
@override
MenuState get initialState => Dashboard();
@override
Stream<MenuState> mapEventToState(
MenuEvent event,
) async* {
if (event is DashboardClicked) {
yield Dashboard();
}
if (event is ProfileClicked) {
yield Profile();
}
}
}
菜单事件
abstract class MenuEvent{
@override
List<Object> get props => [];
}
class LoadDefaultMenu extends MenuEvent {}
class DashboardClicked extends MenuEvent {}
class ProfileClicked extends MenuEvent {}
菜单状态
abstract class MenuState extends Equatable {
const MenuState();
@override
List<Object> get props => [];
}
class Dashboard extends MenuState {}
class Profile extends MenuState {}
我有这个来参加 store
活动。
class NavModel {
String title;
IconData icon;
MenuEvent menuEvent;
NavModel({this.title, this.icon, this.menuEvent});
}
List<NavModel> navigationItems = [
NavModel(
title: 'Dashboard',
icon: Icons.insert_chart,
menuEvent: BlocProvider.of<MenuBloc>(context).add(
DashboardClicked(),
),
),
NavModel(
title: 'Profile',
icon: Icons.person,
menuEvent: BlocProvider.of<MenuBloc>(context).add(
ProfileClicked(),
),
),
];
但问题出在这部分List<NavModel> navigationItems
。我得到这个错误
Error: This expression has type 'void' and can't be used. menuEvent: BlocProvider.of(context).add( DashboardClicked(), ),
当我改成这个时
menuEvent: MenuEvent.DashboardClicked
我收到这个错误
Error: Getter not found: 'DashboardClicked'. menuEvent: MenuEvent.DashboardClicked
我该如何解决?我错过了什么吗?
DashboardClicked 是子 class,
更改代码:
menuEvent: MenuEvent.DashboardClicked
至:
menuEvent: DashboardClicked()
在 NavModel class