【问题标题】:Flutter: RangeError (index): Invalid value: Valid value range is empty: 0Flutter:RangeError(索引):无效值:有效值范围为空:0
【发布时间】:2020-12-02 04:38:51
【问题描述】:

List<String> results = [];
class History extends StatefulWidget {
  final bool isDarkMode;
  final List<String> results;
  final List<String> types;

  History({this.isDarkMode, this.results, this.types});

  _HistoryState createState() => _HistoryState(isDarkMode, results, types);
}

class _HistoryState extends State<History> {

  _HistoryState(this.isDarkMode, this.results, this.types);
  final bool isDarkMode;
  final List<String> results;
  final List<String> types;




  @override
  Widget build(BuildContext context) {
    Color bgColor = this.isDarkMode ? Color(0xd91D201F) : Colors.white70;
    Color appBarColor = this.isDarkMode ? Color(0xff1C1D21) : Color(0xd6E8E9F3);
    Color iconColor = this.isDarkMode ? Colors.black87 : Color(0xe7A6A6A8);
    Color textColor = this.isDarkMode ? Colors.grey[600] : Colors.black;
    List reversed = results.reversed.toList();
    return Scaffold(
        backgroundColor: bgColor,
        body: Column(
          children: <Widget>[
            Expanded(
              child: ListView.builder(
                itemCount: results.length,
                itemBuilder: (context, index) =>
                    Card(
                      color: isDarkMode ? Colors.white10 : Colors.white,
                      child: ListTile(
                        leading: Text(reversed[index], style: TextStyle(
                            color: textColor,
                            fontWeight: FontWeight.bold,
                            fontSize: 50),),
                        trailing: Text(types[index]),
                      ),
                    ),
              ),
            ),
          ],
        )
    );
  }
}

当我传递一个只有 one 项的列表时,它会向我显示标题上的错误,但是如果我在列表中添加 more 项,它会显示它们但是总是没有 first 并且带有红色错误。 许多其他人都遇到了这个错误,但我找不到适合我的解决方案。 任何帮助将不胜感激。

错误日志:

════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The following RangeError was thrown building:
RangeError (index): Invalid value: Valid value range is empty: 0

When the exception was thrown, this was the stack: 
#0      List.[] (dart:core-patch/growable_array.dart:146:60)
#1      _HistoryState.build.<anonymous closure> (package:dices_app/history.dart:47:45)
#2      SliverChildBuilderDelegate.build (package:flutter/src/widgets/sliver.dart:446:22)
#3      SliverMultiBoxAdaptorElement._build.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1134:67)
#4      _HashMap.putIfAbsent (dart:collection-patch/collection_patch.dart:139:29)

【问题讨论】:

  • 可以上传错误日志吗?
  • List&lt;String&gt; results = List&lt;String&gt;(); 使用此声明。并在列表视图构建器中使用 results.length - 1
  • 谢谢,但我自己搞定了,有时间我会上传我的解决方案
  • 上传解决方案或删除问题。

标签: android flutter


【解决方案1】:

当您尝试访问的 List 索引为空或不存在时,会出现错误“RangeError (index): Invalid value: Valid value range is empty: 0”。由于类中有两个 List 被访问(resultstypes),因此请确保两者具有相同的长度以避免访问超出范围的索引。

【讨论】:

    猜你喜欢
    • 2020-12-28
    • 2022-12-23
    • 2019-07-25
    • 2021-07-28
    • 2021-10-06
    • 2021-11-13
    • 2021-06-16
    • 2020-06-06
    • 1970-01-01
    相关资源
    最近更新 更多