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
Flutter 颤振等待不适用于rootBundle.loadString_Flutter_Dart_Async Await - Fatal编程技术网

Flutter 颤振等待不适用于rootBundle.loadString

Flutter 颤振等待不适用于rootBundle.loadString,flutter,dart,async-await,Flutter,Dart,Async Await,当我调用下面的函数getMenu()时,我从下面得到了输出。我想wait关键字总是等待操作完成,我应该得到一个字符串对象?我是不是遗漏了什么 I/flutter (24112): --- start of menu --- I/flutter (24112): Instance of 'Future<dynamic>' I/flutter (24112): --- start end menu --- 您可以在DartPad中复制粘贴运行正确和错误的代码 您需要等待getMenu(

当我调用下面的函数
getMenu()
时,我从下面得到了输出。我想
wait
关键字总是等待操作完成,我应该得到一个字符串对象?我是不是遗漏了什么

I/flutter (24112): --- start of menu ---
I/flutter (24112): Instance of 'Future<dynamic>'
I/flutter (24112): --- start end menu ---

您可以在DartPad中复制粘贴运行正确和错误的代码
您需要等待getMenu()
如果您不等待getMenu(),您将在本例中获得“\u Future”的
实例
示例来自

正确的

Future<String> getMenu() async{
  print("before simulateLongJobOrRootBundle");
  var jsonString = await simulateLongJobOrRootBundle();
  print(jsonString);
  print("after jsonString");
  return 'Your jsonString is: $jsonString';
}

Future<String> simulateLongJobOrRootBundle() async{
  print("In simulateLongJobOrRootBundle");
  // Imagine that this function is more complex and slow
  return Future.delayed(Duration(seconds: 4), () => 'Large Latte');
}


Future<void>  main() async {
  print('main');
  print(await getMenu());
}
Future getMenu()异步{
打印(“模拟长作业或彩包前”);
var jsonString=await simulateLongJobOrRootBundle();
打印(jsonString);
打印(“在jsonString之后”);
return'您的jsonString是:$jsonString';
}
Future SimulationLongJoborRootBundle()异步{
打印(“模拟长工单或笔记本”);
//想象一下,这个函数更加复杂和缓慢
返回未来。延迟(持续时间(秒:4),()=>“大拿铁”);
}
Future main()异步{
打印(“主”);
打印(等待getMenu());
}

错误(不是您期望的结果)

Future getMenu()异步{
打印(“模拟长作业或彩包前”);
var jsonString=await simulateLongJobOrRootBundle();
打印(jsonString);
打印(“在jsonString之后”);
return'您的jsonString是:$jsonString';
}
Future SimulationLongJoborRootBundle()异步{
打印(“模拟长工单或笔记本”);
//想象一下,这个函数更加复杂和缓慢
返回未来。延迟(持续时间(秒:4),()=>“大拿铁”);
}
void main(){
打印(“主”);
打印(getMenu());
}

C#有一个功能,它具有
async await
,它实际上不等待等待等待的资源被实际引用。我不知道Dart是否有同样的行为,但如果有,这是一个很好的因素。
Future<String> getMenu() async{
  print("before simulateLongJobOrRootBundle");
  var jsonString = await simulateLongJobOrRootBundle();
  print(jsonString);
  print("after jsonString");
  return 'Your jsonString is: $jsonString';
}

Future<String> simulateLongJobOrRootBundle() async{
  print("In simulateLongJobOrRootBundle");
  // Imagine that this function is more complex and slow
  return Future.delayed(Duration(seconds: 4), () => 'Large Latte');
}


Future<void>  main() async {
  print('main');
  print(await getMenu());
}
Future<String> getMenu() async{
  print("before simulateLongJobOrRootBundle");
  var jsonString = await simulateLongJobOrRootBundle();
  print(jsonString);
  print("after jsonString");
  return 'Your jsonString is: $jsonString';
}

Future<String> simulateLongJobOrRootBundle() async{
  print("In simulateLongJobOrRootBundle");
  // Imagine that this function is more complex and slow
  return Future.delayed(Duration(seconds: 4), () => 'Large Latte');
}


void main() {
  print('main');
  print(getMenu());
}