Flutter:仅在嵌套对象结构中调用setState()的Re-render小部件

时间:2019-06-28 12:58:44

标签: multidimensional-array flutter nested setstate statefulwidget

Flutter如何呈现窗口小部件已在此处详细说明。 它将新旧控件进行比较。 因此,Flutter通常在大多数情况下都知道如何重新呈现UI。

在嵌套的对象结构中,更改子项时,所有父级窗口小部件都会不可避免地发生变化,因此它们似乎是新的。

这会给应用程序用户带来不吸引人的视觉效果。

是否有一种方法可以仅重新渲染其中调用SetState()的窗口小部件?

我尝试了多种this.setState((){})。 我已经换掉了无状态类中的小部件。

不幸的是,两种方法都不能解决问题。

小部件_createCheckbox(int dataArrayPosition,int elementCurrentPosition,int inputCurrentPosition){     输入inputElement = contextData.data [dataArrayPosition] .element [elementCurrentPosition] .input [inputCurrentPosition];

name

}

有人知道在调用onChanged时仅重新呈现“受影响的”窗口小部件的方法吗?

1 个答案:

答案 0 :(得分:0)

Flutter软件包“ Image_Picker”将照片另存为“文件”类型的变量。 我已将foto转换为jSON构造。照片已保存为BASE64。 可以在窗口小部件中显示Base64构造。 不幸的是,当您使用BASE64映像时,Flutter似乎在渲染时始终不会看到相同的映像。 因此,如果用户输入新数据,则会出现闪烁效果。

这种代码可以正常工作。

    var picturesTaken = <File>[];

    Widget _showFoto(int currentFoto) {
      return Padding(
          padding: const EdgeInsets.only(bottom: 10.0),
          child: Container(
            child: Padding(
              padding: const EdgeInsets.all(20.0),
              child: Center(
                child: Column(
                  children: <Widget>[
                    Image.file(picturesTaken[currentFoto])
                  ],
                ),
              ),
            ),
          )
      );
    }