Flutter中的BlocProvider可以直接使用BlocBuilder吗?
Can I use BlocBuilder directly in BlocProvider in Flutter?
我能否直接在 BlocProvider 中使用 BlocBuilder 并访问整个树中的状态,或者如果我打算通过状态更改它,我应该在每个小部件上单独使用 BlocBuilder 吗?
现在我在顶层有这个构造并将状态注入树的较低部分:
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: [
BlocProvider<NavigationCubit>(create: (context) => NavigationCubit())
],
child: BlocBuilder<NavigationCubit, NavigationState>(
builder: (context, state) {
return WillPopScope(
onWillPop: () async => false,
child: const MaterialApp(
home: RootContainer(state),
),
);
},
),
);
}
}
嗯是的你可以但不建议以某种方式这样做
- 对于小型项目和原型?当然
- 大型项目?大不
通常你想尽可能多地分离东西,因为就像它的名字 Blocbuilder 它将重建它的小部件 'INSIDE'
所以如果你包装了那么多小部件
示例类似于 post 小部件
如果你像 Iconbutton 一样点击,需要重建的小部件只是 iconButton,但如果你包裹整个 post 它将以 60 fps(标准)
在用户屏幕中重新呈现
所以如果你那样做就不要再做一次,因为当项目变大时用户体验会很糟糕
tldr:如果你这样做的话,它就像 setstate 一样有额外的步骤
我能否直接在 BlocProvider 中使用 BlocBuilder 并访问整个树中的状态,或者如果我打算通过状态更改它,我应该在每个小部件上单独使用 BlocBuilder 吗?
现在我在顶层有这个构造并将状态注入树的较低部分:
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: [
BlocProvider<NavigationCubit>(create: (context) => NavigationCubit())
],
child: BlocBuilder<NavigationCubit, NavigationState>(
builder: (context, state) {
return WillPopScope(
onWillPop: () async => false,
child: const MaterialApp(
home: RootContainer(state),
),
);
},
),
);
}
}
嗯是的你可以但不建议以某种方式这样做
- 对于小型项目和原型?当然
- 大型项目?大不
通常你想尽可能多地分离东西,因为就像它的名字 Blocbuilder 它将重建它的小部件 'INSIDE'
所以如果你包装了那么多小部件 示例类似于 post 小部件 如果你像 Iconbutton 一样点击,需要重建的小部件只是 iconButton,但如果你包裹整个 post 它将以 60 fps(标准)
在用户屏幕中重新呈现所以如果你那样做就不要再做一次,因为当项目变大时用户体验会很糟糕
tldr:如果你这样做的话,它就像 setstate 一样有额外的步骤