Flutter 正确布局了 Row 的元素,但在控制台上给出了 RangeError?

问题描述

我有一个小部件,它返回 2 种可能的布局,因为您可以在屏幕截图中看到数字,对于从 1 -> 2,1->1,2- 转换的场景,我在控制台上没有收到任何错误>2.

但是,当它从 2->1 时,

我得到几个 (RangeError (index): Invalid value: Not in inclusive range 0..x : y) 错误。 (我只在 AnswerBar 从布局 2 到布局 1 的地方得到这个)

它总是正常工作,我从来没有在手机上收到任何错误的布局或错误指示横幅,但在调试控制台上出现这个错误很烦人。我该如何解决这个问题?

enter image description here

enter image description here

解决方法

您正在使用 LayoutBuilder,应该如何处理函数处理程序以读取提供程序,因为它使用的上下文与您在其中读取 {{1} }.

解决方法是在 answerLengthProvider 内使用 context.read,而不是在其外使用 LayoutBuilder

useProvider
,

解决方案是:使用密钥。 (我用于 AnswerBar )

简单地说,如果您发现自己添加、删除或重新排序保持某种状态的相同类型的小部件集合(这就是我的情况),关键就是解决方案。

我从这些 Flutter 官方资源中找到了解决方案:

视频格式:https://www.youtube.com/watch?v=kn0EOS-ZiIc

文章格式:https://medium.com/flutter/keys-what-are-they-good-for-13cb51742e7d