flutter - “int”类型不是“String”类型的子类型,但一切都是整数
问题描述
我知道它看起来是重复的,但事实并非如此,其他主题的答案与我在这里所面临的完全不同。
我真的不知道发生了什么,一切都是整数,但仍然适用于字符串......
问题出现在 FOR LOOP 上(如果我打印 somaModulos,它会正确显示数学,只有当我在 FOR LOOP 内打印,如果我在 FOR 外部打印,它会带来下面的错误)。
后来的一切都没有执行,因为问题“类型'int'不是'String'类型的子类型”
var textModulos = modulosNecessarios.toString();
int somaModulos = 0;
void recalcularModulos() {
print(modulosConfig);
print(int.parse(modulosConfig[0][0]) * int.parse(modulosConfig[0][1])); //THIS WORKS
for (var i = 0; i < modulosConfig.length; i++) { // THIS DONT WORK
somaModulos +=
int.parse(modulosConfig[i][0]) * int.parse(modulosConfig[i][1]);
}
/*
setState(() {
textModulos = (modulosNecessarios - somaModulos).toString();
});
*/
}
打印结果:
1º
[[20, 3, colonial, retrato], [0, 0, colonial, retrato]]
2º
60
解决方案
好吧,它看到 textField onChange 上的数组类型值发生了变化。
即使文本输入类型是一个数字,如果我把它放在 onChange 方法上,它也会变成字符串,我没有注意到它(我是飞镖的新手)。
列表中的项目始终使用 int 值创建,但在过程中间更改为字符串...
TextField(
keyboardType: TextInputType.number,
decoration: InputDecoration(labelText: "Quantidade de módulos"),
style: TextStyle(fontSize: 18),
controller: _controllerQnt,
onChanged: (String value) {
setState(() {
modulosConfig[itemUtilized][0] = value;
});
},
为了使它工作,我改变了数组增量:
modulosConfig.insert(indexStart, [0, 0, 'colonial', 'retrato']);
到:
modulosConfig.insert(indexStart, ['0', '0', 'colonial', 'retrato']);
或者更改 TextField onChange 方法的整数。
我选择将增量更改为所有字符串,然后在 FOR LOOP 上对其进行解析。
推荐阅读
- python-3.x - Rpi Python 接口 RS232 到 RS485 转换器问题
- angular - 引导模式中的自动完成谷歌 api 位置即使在 DOM 中也不会出现
- c# - 无法在 Onturnasync 方法中使用 CancelAllDialogsAsync 方法
- php - 通过正则表达式删除没有属性的 CSS 类
- android - 导航到嵌套目的地的最佳方式
- javascript - 从原始 tx 解码数据
- c# - 无法翻译 LINQ 子查询 Where 子句
- c# - C# - 重命名 DataView 列
- javascript - Google Firebase - 重新格式化 JSON 输出
- android - 无法导入 android.os.storage.VolumeInfo 也无法使用 getVolumes() API