从Android 开发到Flutter 之 开屏页和广告页《二》
在APP开发的过程中,我们一般需要一个开屏页和一个广告页
开屏页
开发Android 的都知道,Android启动的时候会有一个小的空白,我们的解决方法是给开屏页设置style ,让其在加载声明周期方法之前先设置一个填位图,消除空白
-
Flutter 项目在IOS上是秒起的,不会出现这个问题,在Android上还是会出现的,但是Flutter 项目已经将这个操作在创建项目的时候就实现了
-
打开android moudle 找到res->style 看一下启动页的主题 drawable 所指向的文件 launch_background 文件,就是更具Android中常用的解决方法处理的,
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">- "android:windowBackground"
>@drawable/launch_backgroundstyle>
- 找到launch_background
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@mipmap/splash" /> <--此处为更换的图片-->
layer-list>
这就解决了开屏的问题,但是一般会在开屏的时候初始化一些东西 这样的话我们怎么处理,此时我们可以使用开屏之后开启广告页 既展示广告又能初始化一些东西
需求:APP启动的时候需要判断是否已经登录,跳转相对应的page
在设置完成开屏之后会发现启动直接就到main.dart了,没办法做这个处理,并且Dart 是单线程的语言,关于数据的存储都需要异步来实现,
解决办法
添加广告页,既作为展示广告页初始化一些操作
class SplashPage extends StatefulWidget {@override_SplashPageState createState() => _SplashPageState();
}class _SplashPageState extends State<SplashPage> {String route;@overridevoid initState() {// TODO: implement initStatesuper.initState();getCredential();}getCredential() {SPUtil.init().get(TMCommonConstant.AUTH_TOKEN).then((result) {route = result;//异步获取到数据之后判断token 是否为空if (route == null) {route = "/";} else {route = "navigation";}countDown();});}@overrideWidget build(BuildContext context) {//展示广告return new Image.asset(Images.splash,fit: BoxFit.fill,);}void countDown() {//倒计时3svar _duration = new Duration(seconds: 3);Future.delayed(_duration, goHome);}void goHome() {//根据判断的路由跳转到相应的页面Navigator.pushReplacementNamed(context, route);}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
