StatefulBuilder 与 StatefulWidget

问题描述 投票:0回答:1

StatefulBuilder
StatefulWidget
有什么区别?什么时候应该使用其中一种而不是另一种?
乍一看它们很相似。
StatefulBuilder
定义为:

一个柏拉图式的小部件,既具有状态又调用闭包来获取其子小部件

StatefulBuilder
被定义时:

具有可变状态的小部件

flutter
1个回答
18
投票

StatefulBuilder
实际上是引擎盖下的
StatefulWidget

所以并不是说你会使用其中一种而不是另一种。就是
StatefulBuilder
StatefulWidget
的具体实现。

因此,每当我们想要创建具有内部状态的自定义 Widget 时,我们都会扩展

StatefulWidget
。 当我们想要在另一个 Widget 的
StatefulBuilder
方法中公开
setState
StatefulBuilder
时,我们会在非常特定的情况下使用
build

在下面的示例中,我们使用

StatefulBuilder
来重建包含 4 个
Column
小部件的
Radio

await showDialog<void>(
  context: context,
  builder: (BuildContext context) {
    int? selectedRadio = 0;
    return AlertDialog(
      content: StatefulBuilder(
        builder: (BuildContext context, StateSetter setState) {
          return Column(
            mainAxisSize: MainAxisSize.min,
            children: List<Widget>.generate(4, (int index) {
              return Radio<int>(
                value: index,
                groupValue: selectedRadio,
                onChanged: (int? value) {
                  setState(() => selectedRadio = value);
                },
              );
            }),
          );
        },
      ),
    );
  },
);
© www.soinside.com 2019 - 2024. All rights reserved.