flutter 如何使用阻塞将数据从父小部件传递到子小部件

lx0bsm1f  于 2023-03-19  发布在  Flutter
关注(0)|答案(1)|浏览(172)

哪个更好?将状态从父级传递到子级还是为每个子级创建一个构建块?(USING PACKAGE flutter_bloc)

BlocProvider(
    create: (context) => ExampleBloc(),
    child: BlocBuilder<ExampleBloc, ExampleState>(
        builder(context, state) {
            return Column(
                children: [
                    Widget1(state.value), <- pass state to prop
                    Widget2(), <- consume the state in bloc builder
                ]
            )
        }
    )
)

//stateless widget
Widget1(state) {
    return Text(state)
}

//stateless widget
Widget2() {
    return BlocBuilder<ExampleBloc, ExampleState>(
        builder: (context, state) {
            return Text(state)
        }
    )
}
mepcadol

mepcadol1#

使用BlocBuilder。Providers的全部(或者至少是最大的)要点是提供东西而不传递参数。线索就在名称中。所以使用BlocBuilder来获取提供的状态。
BlocBuilder将侦听状态更改并在发生更改时进行重建。
此外,您可以使用buildWhen属性在BlocBuilder上添加条件,以确定何时应该重建小部件,这将非常容易地优化重建。

相关问题