Flutter App 如何关闭启动时的过度效果?

请教下大家

Flutter App 启动的时候

不是很干净利落,像是有一个逐渐显示的动画

怎么能关闭这个效果呢

见下图 gif

可以明显看到,背景里的蓝色是有一个过度效果


Flutter App 如何关闭启动时的过度效果?

更多关于Flutter App 如何关闭启动时的过度效果?的实战教程也可以访问 https://www.itying.com/category-92-b0.html

7 回复

这不是刻意的 transition,而是从 native view 到 flutter view 的 white screen 时间。在 android 下面,你可以使用override fun provideSplashScreen(): SplashScreen ... 来 override 这个 white screen,比如传入一些自定义的动画和图片。来减少用户对 white screen 的感知,就像是 game loading 阶段一样。

更多关于Flutter App 如何关闭启动时的过度效果?的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


不止是启动 flutter 需要个“白屏”,启动 native 也需要,你在 AndroidManifest 里找找看,有关于怎么配置这个“白屏”的注释

设置一下原生的 SplashScreen 应该就好了吧

果然,flutter 生成 AndroidManifest 默认有个一个 io.flutter.embedding.android.SplashScreenDrawable , 这个过度效果就是它实现的

在Flutter应用中,关闭启动时的过度效果(过渡动画)通常涉及调整Android和iOS平台特定的启动设置。Flutter本身主要关注于跨平台的UI构建,但你可以通过修改原生代码来影响启动行为。

对于Android:

  1. 修改AndroidManifest.xml

    • <activity>标签中添加android:windowAnimationStyle="@null"属性,这将禁用该Activity的窗口动画。
    <activity
        android:name=".MainActivity"
        android:windowAnimationStyle="@null"
        ... >
        ...
    </activity>
    
  2. 禁用系统动画(可选,但可能影响整体体验):

    • 在开发者选项中关闭“窗口动画缩放”、“过渡动画缩放”等选项,但这需要用户手动操作,且不推荐作为应用解决方案。

对于iOS:

  1. 修改Info.plist

    • Flutter目前不直接支持通过Info.plist禁用启动动画,但iOS通常不会在启动过程中添加额外的动画效果,除非你在原生代码中明确添加。
  2. 原生代码调整

    • 如果在iOS原生代码中添加了启动动画,可以通过修改AppDelegateSceneDelegate中的相关代码来移除这些动画。

总结:

Flutter主要管理应用内部的UI和逻辑,而启动动画等系统级行为通常需要通过原生平台代码进行调整。在Android上,通过修改AndroidManifest.xml可以较为直接地实现禁用动画的效果;iOS上则更多依赖于确保没有添加不必要的启动动画。

回到顶部