StreamProvider-RangeError(索引):无效值:有效值范围为空:0

时间:2020-08-19 01:25:51

标签: firebase flutter

第一篇文章,如果这不是最好的格式,请抱歉。

我是新手,我正在开发我的第一个应用程序。经过多次仅教程和谷歌搜索之后,我有了一个带有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之前已经填充了数据...而且我需要对此进行某种异步调用,但无法弄清楚这是必须要做的。

让我知道是否有人可以提供帮助,

谢谢

1 个答案:

答案 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")