如何在flutter中仅对一个小部件使用setState方法?

Har*_*han 5 android dart flutter

单击下图中的任何一点,我想显示与该点相关的一些信息。但是当我使用setState方法更新有关点击事件的以下信息时,图表正在重建。我想在这个时间序列图中的某个时间放大,但重建图是一个问题,看不到图上的标签。如何在setState不重新绘制图形的情况下使用该方法更新以下信息?

在下面的图像中,Angle值应该是,15.0而它没有更新setState

在此处输入图片说明

Pab*_*era 9

您可以使用StatefulBuilder包装您的小部件:

一个具有状态并调用闭包以获取其子部件的柏拉图式部件。

传递给构建器的 StateSetter 函数用于调用重建,而不是典型的 State 的 State.setState。

这是文档中的一个示例:

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);
                },
              );
            }),
          );
        },
      ),
    );
  },
);
Run Code Online (Sandbox Code Playgroud)


Pra*_*ndo 5

为了停止重建一些小部件,我所做的是将该小部件移动到它自己的有状态小部件中。所以当它是父级重建时它不会重建。为了在它们之间进行通信,我使用回调函数或块模式。因此,您可以做的是将图形移动到单独的有状态小部件,并且在 cilck 事件上,您可以通过功能回调将数据传递给其父级。