第一篇文章,如果这不是最好的格式,请抱歉。
我是新手,我正在开发我的第一个应用程序。经过多次仅教程和谷歌搜索之后,我有了一个带有StreamProvider的home_screen.dart。然后从word_list.dart加载一个小部件,该小部件将在小部件调用的构建中
final MyWords = Provider.of<List<MyWord>>(context) ?? [];
我遇到的问题是,设置MyWords之后,我想访问该信息,但是我认为未加载数据。我正在通过以下方式访问信息:
var fullist = new List();
for (var i = 0; i < 5; i++) {
fullist.add(i.toString() +
"^" +
MyWords[i].question +
"^" +
i.toString() +
"Q^" +
MyWords[i].docID );
}
我在屏幕上看到一个非常快速的错误,该错误消失了,然后当我查看日志时看到:
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following RangeError was thrown building MatcherWordList(dirty, dependencies:
[_InheritedProviderScope<List<MyWord>>], state: _MatcherWordListState#64138):
RangeError (index): Invalid value: Valid value range is empty: 0
正如我所说,这是我的新手,但是我认为这是因为我正在访问MyWords之前已经填充了数据...而且我需要对此进行某种异步调用,但无法弄清楚这是必须要做的。
让我知道是否有人可以提供帮助,
谢谢
答案 0 :(得分:0)
在您希望拥有一些数据之前访问MyWords的时刻,该代码正在中断。因此,只需检查数组列表的长度为5。
var fullist = new List();
MyForms.length > 4 ?
for (var i = 0; i < 5; i++) {
fullist.add(i.toString() +
"^" +
MyWords[i].question +
"^" +
i.toString() +
"Q^" +
MyWords[i].docID );
}
: print("List does not have 5 elements")