gpt4 book ai didi

flutter - 如何在Flutter中存储列表?

转载 作者:行者123 更新时间:2023-12-03 03:21:35 24 4
gpt4 key购买 nike

我试图在Flutter中使用Hive存储和获取列表,但是出现范围错误。

    int steps = 0;
List<int> stepCountList = List(7);
var time = DateTime.now();

// This is my method for a listener that updates when it detects a change,
void _onData(int newValue) async {
fetchSteps();
steps = stepCountList[time.weekday] ?? 0;
stepDivider += newValue;
stepCountList.insert(time.weekday - 1, steps);
moneyLottoBox.put('stepCountList', stepCountList);
}

void fetchSteps() {
stepCountList = moneyLottoBox.get('stepCountList');
if (stepCountList == null) {
moneyLottoBox.put('stepCountList', <int>[7]);
stepCountList = moneyLottoBox.get('stepCountList');
}
}
// I create my MoneyLotto box here,
var moneyLottoBox = Hive.box('moneyLottoBox');
Future<void> main async {
moneyLottoBox = await Hive.openBox('box');
}
今天对我来说是星期六,对我来说 time.weekday的值为6,但是当我尝试 print(stepCountList[6])时,它向我显示错误
RangeError (index): Invalid value: Only valid value is 0: 6

最佳答案

您不能在固定长度List上使用insert()方法,按固定长度,我的意思是当您以这种方式声明List<int> stepCountList = List(7);
编辑了代码,现在应该可以了

void _onData(int newValue) async {
fetchSteps();
steps = stepCountList[time.weekday] ?? 0;
stepDivider += newValue;
//stepCountList.insert(time.weekday - 1, steps);this is not correct
stepCountList[time.weekday -1] = steps; // this should be the approach
moneyLottoBox.put('stepCountList', stepCountList);
}


void fetchSteps() {
stepCountList = moneyLottoBox.get('stepCountList');
if (stepCountList == null) {
/* moneyLottoBox.put('stepCountList', <int>[7]); this statement is the
reason for your error because your are storing a growable list instead of fixed list in the hive */

moneyLottoBox.put('stepCountList', List<int>(7));// try this instead
// or u can use this moneyLottoBox.put('stepCountList', stepCountList);
stepCountList = moneyLottoBox.get('stepCountList');
}
}

关于flutter - 如何在Flutter中存储列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62609037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com