【问题标题】:How do I add a value at a specific index to an empty list in dart?如何将特定索引处的值添加到 dart 中的空列表?
【发布时间】:2020-10-03 15:51:45
【问题描述】:
  List<String> currentList =new List<String>(); 
void initState() {
    super.initState();
    currentList=[];
  }
Future<Null> savePreferences(option,questionIndex) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    currentList.insert(questionIndex, option);
  }

所以基本上我要做的是在共享首选项中的指定索引处保存一个问题的选项(我检查并正确返回了索引)。当它运行并且我按下选项时,它返回给我以下错误:

E/flutter ( 6354): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: RangeError (index): Invalid value: Valid alue range is empty: 0

我使用 insert 方法而不是 add 方法的原因是因为我想在用户想要覆盖他们之前的答案的情况下替换已经存储在索引中的值。有人可以帮忙吗?谢谢

【问题讨论】:

    标签: flutter dart sharedpreferences


    【解决方案1】:

    如果你想要一个像稀疏数组一样的东西,你可以使用Map。如果您希望能够按数字索引(而不是按插入顺序)按顺序迭代项目,您可以使用 SplayTreeMap

    例如:

    import 'dart:collection';
    
    void main() {
      final sparseList = SplayTreeMap<int, String>();
      sparseList[12] = 'world!';
      sparseList[3] = 'Hi';
      sparseList[3] = 'Hello';
      for (var entry in sparseList.entries) {
        print('${entry.key}: ${entry.value}');
      }
    }
    

    打印:

    3: Hello
    12: world!
    

    【讨论】:

    • 我只使用了地图,但我相信 SplayTreeMap 也可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2017-06-02
    • 2020-10-12
    • 2022-01-21
    相关资源
    最近更新 更多