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

Posted

技术标签:

【中文标题】在 Flutter 的启动画面期间加载数据【英文标题】:Load Data during Splash Screen in Flutter 【发布时间】:2020-02-25 04:08:07 【问题描述】:

我需要知道是否有任何方法可以在闪屏期间执行任务在颤振中可见。我知道如何在颤动中添加启动画面,但我不知道如何在启动画面可见期间执行后台操作。我在互联网上找不到任何东西,请帮忙。

【问题讨论】:

【参考方案1】:

是的,是的,你可以。 main() 函数实际上可以标记为async,因此您可以在main() 方法体中运行runApp(...) 之前执行您需要执行的任何操作,甚至可以异步运行。这样,在调用runApp(...) 之前,将显示初始屏幕,直到检索到异步结果。例如:

Future<void> main() async 

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

return runApp(MyApp(home: home));

【讨论】:

这里的await语句不阻塞runApp()方法吗?除此之外,我认为您的回答大部分是正确的。 这不是发帖人要求的吗?他想在显示启动画面的同时运行代码。我想我们可以假设他想在代码完成后立即恢复应用程序,这将是等待完成的时间。 我以为他想在启动画面可见时开始一项任务。启动屏幕可见时不开始和完成任务。我认为这种区别对于某些读者可能仍然相关,因为在我看来,最初的问题在这方面有点模棱两可。但是我现在可以理解你的解释了,你的回答是正确的。 另外,我的启动画面是home【参考方案2】:

animated_splash_screen 包非常清楚地做到了这一点。将其添加到您的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,
)

这将加载并保持启动画面,直到您的功能完成。

您的函数必须返回一个小部件,在本例中是您的主屏幕。这也允许根据您的数据进行动态路由,例如用户是否登录。

【讨论】:

以上是关于在 Flutter 的启动画面期间加载数据的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Web 中的启动画面

Flutter PlayStore Distribution APK 无法正常工作,无法加载,卡在启动画面

5.4 设置应用程序启动画面

Flutter web - 启动画面 - 奇怪的行为

如何在 Flutter 中获取原生启动画面?

如何在 react-native 中禁用默认启动画面?