在Flutter中的启动画面期间加载数据

13

我需要知道在Flutter中是否有办法在启动画面可见的时候执行任务。我知道如何在Flutter中添加启动画面,但是我不知道如何在启动画面可见的时候执行后台操作。我在互联网上找不到任何信息,请帮忙。

2个回答

20

是的,你可以。实际上,main() 函数可以被标记为 async,因此你可以在 main() 方法体中做任何需要做的事情,甚至可以异步地进行。这样,在调用 runApp(...) 之前,启动屏幕将显示,直到异步结果被检索到。例如:

Future<void> main() async {

// Do whatever you need to do here
final home = await setHomeWidgetDependingOnLoginStatus();

return runApp(MyApp(home: home));
}

这里的await语句不会阻塞runApp()方法吗?除此之外,我认为你的答案大部分是正确的。 - Tom O
那不是海报所要求的吗?他想在显示启动画面的同时运行代码。我认为我们可以假设他希望在 await 完成时立即恢复应用程序。 - J. S.
我以为他想在启动画面可见的时候开始一个任务,而不是在启动画面可见的时候开始并完成一个任务。我认为这种区别对于一些读者仍然很重要,因为最初的问题在这个方面上有点模糊。但现在我可以理解你的解释了,你的答案是正确的。 - Tom O
另外,我的启动画面是“主页”。 - GunJack

1
动画启动屏包可以很好地实现这一功能。将其添加到您的pubspec.yml即可。
    animated_splash_screen: ^1.1.0

AnimatedSplashScreen.withScreenFunction(
  splash: 'images/splash.png',
  screenFunction: () async{

  // Your code here

    return MainScreen();
  },
  splashTransition: SplashTransition.rotationTransition,
  pageTransitionType: PageTransitionType.scale,
)


这将加载并保持您的启动屏幕,直到您的功能完成。
您的功能必须返回一个小部件,本例中是您的主屏幕。这也允许根据您的数据进行动态路由,例如用户是否已登录。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接