带有逻辑的 Flutter 启动画面

Flutter splash screen with logic inside it

我想在 flutter 中制作一个启动画面,其中包含一些逻辑,以了解用户是否已经登录,以便将他引导到正确的页面。

我已经分别制作了 Android 和 iOS 启动画面,但当然我不能在其中包含任何逻辑,然后在 flutter 中制作了另一个启动画面以了解用户之前是否有登录与否,问题是原生启动画面和 flutter 启动画面之间有一个奇怪的小过渡,那么是否有避免这种过渡的解决方案?或者在与 SharedPreferences 通信的本机启动画面中具有逻辑?

不要引起 Flutter 的轰动。让原生 iOS/Android 飞溅填满屏幕,而 Flutter 应用的 main 代码决定显示主页或登录页面。如果您所做的只是在 SharedPreferences 中查找会话令牌,这应该是一个非常快速的过程。

我今天刚刚回答了另外两个处理同样问题的问题。它认为他们应该帮助...

更新

我创建了一个 Flutter 测试应用。

我将 Android 启动画面设置为红色。

我把main.dart的内容改成了下面这样。

import 'package:flutter/material.dart';

void main() async {
  await Future.delayed(Duration(seconds: 5));
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(final BuildContext context) {
    return MaterialApp(
      title: 'Splash Demo',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(final BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("My Home Page")),
      body: Center(child: const Text("My Home Page")),
    );
  }
}

我 运行 Android 设备上的应用 flutter run --release

我看到红屏大约0.5秒,然后黑屏5秒,最后看到主屏幕。

嗯。我预计红色屏幕会显示大约 5.5 秒,然后是主屏幕。没想到会黑屏