kotlin 我应该使用哪一个来创建初始屏幕

ruoxqz4g  于 2022-11-16  发布在  Kotlin
关注(0)|答案(3)|浏览(122)

正如你所知道的,一些应用程序有启动屏幕。我已经学会了在Flutter上用本地代码制作启动屏幕。
例如:android/app/src/main/res/drawable/launch_background.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/background" />

   <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/hwalogo" />
    </item>
</layer-list>

所以,我会有没有飞镖的启动画面。而且,iOS方面也有。在此之前,我正在创建像主页或登录启动画面。我的问题是,我应该使用哪一个更适合?非常感谢。

6tdlim6h

6tdlim6h1#

我已经创建了一个启动画面使用飞镖代码本身。分享代码供参考:

import 'package:flutter/material.dart';
import '../constants/constants.dart';

class SplashScreen extends StatefulWidget {
  const SplashScreen({super.key});

  @override
  State<StatefulWidget> createState() => _SplashScreenState();
}

class _SplashScreenState extends State<SplashScreen> {
  bool? loginCheck;  //checking the shared preference and navigating accordingly
  @override
  void initState() {
    super.initState();
    loginCheck = prefs!.getBool('login');
    navigate();
  }

  @override
  Widget build(BuildContext context) {
    return const Material(
      child: Center(child: Text('Loading....')),
    );
  }

  navigate() async {
    if (loginCheck == true) {
      Future(() => Navigator.of(context).pushReplacementNamed('/home'));
    } else {
      Future(() => Navigator.of(context).pushReplacementNamed('/login'));
    }
  }
}

此外,您可以手动提供几秒钟的延迟,但上面的代码实际上完成了这项工作。

5f0d552i

5f0d552i2#

原生启动画面有几个优点:

  • 它会立即显示,没有延迟。
  • 在应用程序加载之前不会显示空白屏幕。

软件包flutter_native_splash可以生成原生闪屏,现在它还可以在加载应用资源时让闪屏保持在屏幕上。我维护这个包。

f0ofjuux

f0ofjuux3#

也许两者都可以,你可以使用原生的闪屏工具来摆脱你打开应用程序时的白屏。
同时,你可以使用dart创建的闪屏,并进行一些api调用、异步作业等。
或者,您可以使用splashscreeneasy_splash_screen之类的预建闪屏。
所以这是关于你的需要,做一个适合你的情况。

相关问题