当您更改后备列表时,模板会重复,销毁所有旧元素并从头开始重新创建它们,因此所有用户调整大小信息都会丢失。
当您向列表中添加新项目时,您可以存储旧元素的所有大小信息,然后在添加项目后设置新元素的大小:
// Stores size information
List<List> sizes = [];
void add() {
// Store the old sizes
sizes.clear();
ElementList divs = queryAll(".superDivContainer");
for(int i = 0; i < divs.toList().length; i++) {
Element div = divs[i];
sizes.add([div.style.width, div.style.height]);
}
// Add the new item
yourList.add("new");
// Set the sizes of the new elements
Timer timer = new Timer(new Duration(milliseconds: 1), () {
divs = queryAll(".superDivContainer");
for(int i = 0; i < divs.toList().length && i < sizes.length; i++) {
Element div = divs[i];
div.style.width = sizes[i][0];
div.style.height = sizes[i][1];
}
});
}
两个注意事项:
- 我将 superDivContainer 更改为一个类而不是一个 id,因为您似乎将它应用于多个元素;您将需要更改您的 CSS 以反映这一点
- 1 毫秒计时器解决了在添加和访问新元素之前存在微小延迟的事实