安卓里面设置启动页
这里我们需要借助第三方的框架flutter_splash_screen来实现。具体步骤如下:
1、需要在pubspec.yaml文件里面添加依赖:
dependencies:
flutter_splash_screen: ^xxx
2、通过flutter packages get来更新获取依赖包。
3、在安卓入口文件MainActivity.java里面添加如下代码:
package com.example.aethersharedcommunication;
import android.os.Bundle;
//导入我们引入的第三方框架
import org.devio.flutter.splashscreen.SplashScreen;
import androidx.annotation.NonNull;
//import android.support.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant;
public class MainActivity extends FlutterActivity {
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
//在此调用,实现引导页屏幕的显示
SplashScreen.show(this, true);
super.onCreate(savedInstanceState);
}
}
4、在GeneratedPluginRegistrant文件里面需要注册我们使用到的中间件
package io.flutter.plugins;
import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;
/**
* Generated file. Do not edit.
* This file is generated by the Flutter tool based on the
* plugins that support the Android platform.
*/
@Keep
public final class GeneratedPluginRegistrant {
public static void registerWith(@NonNull FlutterEngine flutterEngine) {
ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(flutterEngine);
//注册启动页需要用到的中间件
org.devio.flutter.splashscreen.FlutterSplashScreenPlugin.registerWith(shimPluginRegistry.registrarFor("org.devio.flutter.splashscreen.FlutterSplashScreenPlugin"));
io.github.ponnamkarthik.toast.fluttertoast.FluttertoastPlugin.registerWith(shimPluginRegistry.registrarFor("io.github.ponnamkarthik.toast.fluttertoast.FluttertoastPlugin"));
flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin());
flutterEngine.getPlugins().add(new com.tekartik.sqflite.SqflitePlugin());
flutterEngine.getPlugins().add(new io.flutter.plugins.webviewflutter.WebViewFlutterPlugin());
}
}
5、然后创建一个launch_screen.xml文件放在/android/app/src/main/res/layout目录下,里面的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<!--launch_icon是我们启动页的名字-->
<ImageView android:layout_width="match_parent" android:layout_height="match_parent"
android:src="@drawable/launch_icon" android:scaleType="centerCrop" />
</RelativeLayout>
6、然后需要在app/src/main/res/values文件夹下,新加一个colors.xml文件,这个文件主要是对状态栏的颜色进行设置,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--状态栏的颜色-->
<color name="primary_dark">#000000</color>
</resources>
7、然后需要在app/src/main/res/values文件夹下,新加一个styles.xml文件,这个文件主要是对背景的颜色进行设置,内容如下
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
<!--设置透明背景-->
<item name="android:windowIsTranslucent">true</item>
</style>
</resources>
8、然后回到主页面的flutter代码,对启动页进行关闭,代码如下:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_splash_screen/flutter_splash_screen.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
hideScreen();
}
///hide your splash screen
Future<void> hideScreen() async {
Future.delayed(Duration(milliseconds: 3600), () {
FlutterSplashScreen.hide();
});
}
iOS里面设置启动页
1、打开我们的flutter项目的iOS工程,如图所示:
2、将准备好的图片资源,按照如图所示的约束添加好,放入到LaunchScreen.storyboard里面
3、将图片的模式设置为Scale to Fill,如图所示:
到此,我们就已经将iOS和安卓的启动页设置OK。