Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart需要在将来公开函数回调吗?_Dart - Fatal编程技术网

Dart需要在将来公开函数回调吗?

Dart需要在将来公开函数回调吗?,dart,Dart,我在C和Javascript方面有很强的背景,在Dart Futures方面我没有什么不懂的: 假设我有这样的未来: scoreFile.exists().then((r) => { if (r){ List<ScoreRow> previousScores = await scoreFile.readAsString(); scores = jsonDecode(previousScores); } }); 我

我在C和Javascript方面有很强的背景,在Dart Futures方面我没有什么不懂的: 假设我有这样的未来:

scoreFile.exists().then((r) => {
      if (r){
        List<ScoreRow> previousScores = await scoreFile.readAsString();
        scores = jsonDecode(previousScores);
      }
    });
我知道这是不允许的,因为我需要将回调函数设置为foo函数。但是为什么要用一个只在这个地方使用的代码把空间弄得乱七八糟呢?我的意思是,我真的需要创建尽可能多的回调函数吗? 我不会用非常复杂的处理来这么做,如果没有一个合适的函数,如果没有这样一个简单的过程,这将是不稳定的? 或者也许Dart设计是这样的:没有简单的代码不需要测试 因为从语法的角度来看,我的函数已经存在,她只是匿名的:她存储在大括号中:
感谢您的见解:

我不完全确定这里有什么问题

您的代码混合了异步和非异步代码,这通常是要避免的,除非是绝对必要的,而这很少是必要的

您或许可以将代码编写为:

如果wait scoreFile.exists{ scores=jsondecodewait scoreFile.readAsString; } 或者,您可以继续执行正在执行的操作,以修复语法和类型问题:

scoreFile.exists.thenr异步{ 如果r{ var previousScores=wait scoresfile.readAsString; 返回以前的分数; } }.thenscores{ //使用分数变量。 }; 如果您使用then方法,那么是的,您将不得不进行大量的小回调,因为这就是它的工作方式。如果使用async/await语法,将为您进行这些回调。

在scoreFile.exists之前删除然后添加wait函数