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 在颤振中从API获取数据后,如何导航到新屏幕?_Flutter_Dart - Fatal编程技术网

Flutter 在颤振中从API获取数据后,如何导航到新屏幕?

Flutter 在颤振中从API获取数据后,如何导航到新屏幕?,flutter,dart,Flutter,Dart,在我的main.dart文件中,我有一个Future从API(json文件)获取数据 在Future完成数据提取后,我可以通过什么方式导航到新屏幕?您可以这样做: yourFutureObject.then((){ //write the code you want to run as soon as your Future finishes Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) =

在我的
main.dart
文件中,我有一个
Future
从API(
json
文件)获取数据


Future
完成数据提取后,我可以通过什么方式导航到新屏幕?

您可以这样做:

yourFutureObject.then((){
//write the code you want to run as soon as your Future finishes
  Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) => 
  YourNewPage()));


});

我使用了一些通用名称,因为您没有发布任何代码,但您可以编写希望在Future完成时运行的函数,并将其传递给Future的then方法,这样您就有了一个返回Future的方法

bool asyncResult2 = await asyncFunc2();
if(asyncResult2)
{
Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => SecondRoute()),
  );
}


AsyncFunction 2功能,当完成数据获取和分配(或其他任何操作)时然后所有这些都完成了,你只需将布尔值的未来传递给true,它表示每件事都成功完成了,你可以继续到第二页,或者如果布尔值为false,那么获取或分配就有问题了

问题是:我应该在哪里写这个
initState()
?如果您想一眼就检查,那么可以使用initState。您可以创建一个函数,然后在initstate方法中调用它,然后插入我编写的代码段,在哪里可以编写?我能想到的唯一地方是
initState()
内部,为了触发
Future
,您可以在构建函数中编写它,因为您可以访问构建上下文。另外,因为您在这里使用的是Future对象,所以可以在initState()中使用它。有关更多信息,请参阅。如果在initState()中使用它时出现任何错误,您也可以查看一下,但我认为在那里使用它会很好