【发布时间】:2020-05-25 12:35:55
【问题描述】:
我有一个用于“构建”功能的固定长度列表。我想用另一个替换该列表中的一个元素。 List 中的两个元素都是容器。我替换列表中的元素并执行 setState()。 build 函数使用 Scaffold 主体中的 List。我没有收到任何错误,但是当重建完成时,什么都没有改变。
据我所知,这并没有违反任何规则,据我所知应该不会造成任何问题。
虽然我可以围绕这个问题编写代码,但我认为对于这样的基本问题,我需要找到它的原因。
关于为什么会发生这种情况的任何想法?
下面添加的代码:
下面是不起作用的代码
if (_lwDisplay[iNdxDisplay] == null) /*INITIAL DISPLAY */ {
_lwDisplay[iNdxDisplay] = wContainer;
} else {
setState(() {
_tfDataHasChanged = true;
_lwDisplay[iNdxDisplay] = wContainer;
});
}
下面是可以工作的代码
if (_lwDisplay[iNdxDisplay] == null) /*INITIAL DISPLAY */ {
_lwDisplay[iNdxDisplay] = wContainer;
} else {
_tfDataHasChanged = _fnHasDataChanged() /* FOR FAB */;
List<Widget> lwDisplay2 = List(_lwDisplay.length);
for (int iNdx = 0; iNdx < lwDisplay2.length; iNdx++) {
if (iNdx != iNdxDisplay) {
lwDisplay2[iNdx] = _lwDisplay[iNdx];
}
}
lwDisplay2[iNdxDisplay] = wContainer;
_lwDisplay = lwDisplay2;
setState(() {});
}
【问题讨论】:
-
您能否与我们分享一些代码,以便我们了解您实际在做什么?
-
已将代码添加到我的问题中。
-
发布所有定义在一个 main.dart 中的源代码,任何人都可以轻松帮助您。还要添加预期和实际输出。
-
@BrianOh - 您在哪里创建了程序中的小部件列表?
-
@tomerpacific - 我在第一次构建后在 onBuildComplete 调用的函数中创建了小部件,IE 在第一次构建后。有问题的程序相当大,因为我需要在作为应用程序一部分的另一个程序中复制我遇到的问题,为此,我需要尽可能地模拟该程序。