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。似乎,您根本没有使用任何代码完成。