LateInitializationError: Local 'res' has not been initialized
LateInitializationError: Local 'res' has not been initialized
我正在制作一个程序,用于加密与关键字相关的文本。最初,算法是用 Python 编写的,一切正常。我决定把它翻译成 Flutter 中的移动应用程序,所以我不得不用 Dart 重写它。
List symbols = ['a', 'b', 'c', 'd', 'e',
'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', ',', ';', ':', '-',
'_', ' ', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '+', '=', '\"', '№', '~', '?',
'\', '/', '|', '[', ']', '{', '}', '`', '\'', '<', '>'];
late dynamic keyWord = ' ';
late dynamic text = ' ';
late dynamic res;
late dynamic a4;
late dynamic m;
late dynamic n;
late dynamic f;
var d = 0;
var k = 0;
var z = 0;
var operation = 0;
var m1 = 0;
var c = 0;
encode(keyWord, text){
late dynamic res;
var l = (text.length) as int;
for( var i = l ; i >= 1; i-- ){
if(symbols.contains(text[d])) {
var f = symbols.indexOf(text[d]);
a4 = '';
if(f == 0){
a4 = '0';
while(f > 0){
a4 = (f % 4).toString() + a4.toString();
f = f ~/ 4;
}
a4 = '$a4';
}
}
else{
a4 += '1123';
}
while(a4.length != 4) {
a4 = '0' + a4;
}
for( var j = 4 ; j >= 1; j-- ){
res += (keyWord[(a4[z]) as int]);
res.whenComplete((){
setState(() {});
});
z += 1;
}
z = 0;
d += 1;
}
return(res);
}
由于LateInitializationError: Local 'res' has not been initialized.
编码功能不工作
其余代码工作正常,res
除此函数外,没有在任何地方调用变量。也许有人面临同样的问题或知道如何解决?非常感谢您的帮助。
异常是不言自明的。您在 res += (keyWord[(a4[z]) as int]);
中访问 res,但尚未初始化。例如,您应该晚点删除并执行 dynamic res = ''
。
P.S。 'res += value' 基本上是 'res = res + value'。这就是为什么你得到错误
P.S.S 为什么不使用一些打字?您的代码的 res.whenComplete 将失败,因为它不是 Future。似乎,您根本没有使用任何代码完成。
我正在制作一个程序,用于加密与关键字相关的文本。最初,算法是用 Python 编写的,一切正常。我决定把它翻译成 Flutter 中的移动应用程序,所以我不得不用 Dart 重写它。
List symbols = ['a', 'b', 'c', 'd', 'e',
'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', ',', ';', ':', '-',
'_', ' ', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '+', '=', '\"', '№', '~', '?',
'\', '/', '|', '[', ']', '{', '}', '`', '\'', '<', '>'];
late dynamic keyWord = ' ';
late dynamic text = ' ';
late dynamic res;
late dynamic a4;
late dynamic m;
late dynamic n;
late dynamic f;
var d = 0;
var k = 0;
var z = 0;
var operation = 0;
var m1 = 0;
var c = 0;
encode(keyWord, text){
late dynamic res;
var l = (text.length) as int;
for( var i = l ; i >= 1; i-- ){
if(symbols.contains(text[d])) {
var f = symbols.indexOf(text[d]);
a4 = '';
if(f == 0){
a4 = '0';
while(f > 0){
a4 = (f % 4).toString() + a4.toString();
f = f ~/ 4;
}
a4 = '$a4';
}
}
else{
a4 += '1123';
}
while(a4.length != 4) {
a4 = '0' + a4;
}
for( var j = 4 ; j >= 1; j-- ){
res += (keyWord[(a4[z]) as int]);
res.whenComplete((){
setState(() {});
});
z += 1;
}
z = 0;
d += 1;
}
return(res);
}
由于LateInitializationError: Local 'res' has not been initialized.
编码功能不工作
其余代码工作正常,res
除此函数外,没有在任何地方调用变量。也许有人面临同样的问题或知道如何解决?非常感谢您的帮助。
异常是不言自明的。您在 res += (keyWord[(a4[z]) as int]);
中访问 res,但尚未初始化。例如,您应该晚点删除并执行 dynamic res = ''
。
P.S。 'res += value' 基本上是 'res = res + value'。这就是为什么你得到错误
P.S.S 为什么不使用一些打字?您的代码的 res.whenComplete 将失败,因为它不是 Future。似乎,您根本没有使用任何代码完成。