问题描述
我有一个小部件,它返回 2 种可能的布局,因为您可以在屏幕截图中看到数字,对于从 1 -> 2,1->1,2- 转换的场景,我在控制台上没有收到任何错误>2.
但是,当它从 2->1 时,
我得到几个 (RangeError (index): Invalid value: Not in inclusive range 0..x : y) 错误。 (我只在 AnswerBar 从布局 2 到布局 1 的地方得到这个)
它总是正常工作,我从来没有在手机上收到任何错误的布局或错误指示横幅,但在调试控制台上出现这个错误很烦人。我该如何解决这个问题?
解决方法
您正在使用 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