问题:

开屏广告图使用网络加载的话,会出现一个加载时的白屏。为了处理这个白屏实现开屏到广告的顺利过渡;

解决方案的整体思路如下:

  1. 网络请求图片文件
  2. 将图片文件转换成Uint8List
  3. 将Uint8List保存成String,存在全局数据管理中
  4. 开屏广告将图片数据从全局数据管理中取出,再转成Uint8List
  5. 使用Image.memory() 进行图片加载

核心思路是:

使用Image.memory() 来省去图片加载的时间。所以只需要将网络图片转成Uint8List保存起来,直接使用Uint8List即可

main.dart的核心代码如下(请求网络图片,转成Uint8List,保存起来):

var response = await Dio().get("https://img4.eol.cn/e_images/gk/2019/banner2044.jpeg", options: Options(responseType: ResponseType.bytes));var imgBytes = Uint8List.fromList(response.data);
//这里使用shared_preferences.dart进行数据管理,我这个是封装了的。替换成自己的就行
SpUtil.preferences.setString("imgBytes", imgBytes.toString());runApp()

开屏广告的dart文件如下(将保存的图片取出,转成Uint8List,使用Image.memory()来显示)

import 'dart:async';
import 'dart:convert';
import 'dart:typed_data';import 'package:flutter/material.dart';
import 'package:zsgk/tools/sp_util.dart';/*
* 开屏广告的dart文件
*/class SplashScreen extends StatefulWidget {@override_SplashScreenState createState() => new _SplashScreenState();
}class _SplashScreenState extends State<SplashScreen> {Timer _timer;Uint8List imgBytes;@overridevoid initState() {super.initState();startTime();//核心思路为此处将图片数据取出,再转成Uint8List。var img = SpUtil.preferences.getString("imgBytes");imgBytes = Uint8List.fromList(List<int>.from(json.decode(img)));}// 开屏广告倒计时startTime() {_timer = Timer(Duration(milliseconds: 4500), (){_timer.cancel();Navigator.of(context).pushReplacementNamed('/home');});}@overrideWidget build(BuildContext context) {return Scaffold(body: ConstrainedBox(constraints: BoxConstraints.expand(),child: Image.memory(imgBytes,fit: BoxFit.fill),),);}
}

Flutter之开屏广告缓存本地方案(无插件版),兼容 IOS、安卓相关推荐

  1. 海康摄像头前端调用实时画面解决方案(无插件版开发)

    文章目录 前言 一.海康摄像头 二.尝试方案 1.方案1 2.方案2 3.方案3 总结 前言 项目中有一个需求,是需要把海康摄像机的实时画面在项目前端的页面中展示出来.本文的技术栈主要用到了vue3. ...

  2. 【海康威视】前端开发:【2】Web无插件版Demo测试

    一.前言 最近看见海康威视官网新增了一个 WEB无插件开发包 V3.2: 支持高版本谷歌.火狐浏览器,同时需要设备支持Websocket取流.无插件版本需要使用nginx代理服务器. 于是下载了一个来 ...

  3. 好用app开屏广告组件XHLaunchAd -支持静态/动态图片广告/mp4视频广告

    特性: 1.支持静态/动态图片广告. 2.支持mp4视频广告. 3.支持全屏/半屏广告. 4.支持网络及本地资源. 5.兼容iPhone和iPad. 6.支持广告点击事件. 7.支持自定义跳过按钮,添 ...

  4. iOS开屏广告弹窗浮层解决方案

    转载至:https://my.oschina.net/zhxx/blog/910836 开屏广告作为app启动时映入用户眼帘的第一界面,其重要性不言而喻. 因项目中开屏广告插件中业务越来越多,原来的的 ...

  5. 海康威视web 开发包3.2无插件踩坑点

    公司最近要搞款web监控系统,也有现成海康威视摄像头.一个万事俱备只欠开发的情况下,欣然接受了这次的任务了.只是没有料到开发之路也不怎么太平. 摄像头激活的事就不说了. 看到官网 上有web 3.2无 ...

  6. android怎么实现广告页,Android开屏广告的实现原理与适配方案

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 开屏广告目前很多应用都在使用,"约饭"为了推广自家的线上活动也提出了增加开屏广告的需求,所以就研究了 ...

  7. 无入侵的开屏广告插入方式

    实现原理 自启动 & 监听 ///在load 方法中,启动监听,可以做到无注入+ (void)load {[self shareInstance]; } - (instancetype)ini ...

  8. 【Flutter】Flutter 如何实现开屏广告

    文章目录 一.前言 二.实现开屏广告页面 三.实现广告数据的加载 四.开屏广告的完整代码 五.总结 一.前言 开屏广告这个功能在商业应用中非常常见,它可以在应用启动时向用户展示广告,增加应用的商业价值 ...

  9. 开屏广告=让用户等?小红书如何兼顾用户体验和广告投放效果

    开屏广告作为小红书品牌广告的重要组成部分,已成为诸多品牌客户触达目标用户.实现品牌营销诉求的强力助推器.小红书开屏广告的投放策略,既要满足客户对保量和效果的诉求,还要兼顾对用户体验的影响.由此我们配套 ...

最新文章

  1. AFDetV2:重新思考点云检测方法中第二阶段检测器的必要性(CVPR2021)
  2. Spring Boot Profile使用详解及配置源码解析
  3. getBoundingClientRect()方法
  4. 枚举enum与#define 宏的区别?
  5. ubuntu查看网关
  6. zookeeper 日志查看_每天使用的注册中心zookeeper,流量暴涨怎么办?
  7. php中冒号是什么,在PHP中:(双冒号)和-(箭头)有什么区别?
  8. C ++中的std :: binary_search()
  9. 我狂揽16个offer:面试常问的这些问题你准备了吗?
  10. 如何将servlet中的变量在jsp页面中显示---jsp中的jstl表达式(C标签)
  11. 基于3DGIS+BIM的房屋出售管理系统
  12. 820操作系统(2)进程管理
  13. 学生学籍管理系统简单设计(上)
  14. 执行python manage.py migrate报错问题解决
  15. 华中科技大学计算机学院培养计划,华中科技大学计算机专业培养计划
  16. java默认作用域_java中默认的作用域
  17. Zephyr pinctrl
  18. Python APP自动化测试详解
  19. Springboot基础(二):数据库+Thymeleaf
  20. Python处理高光谱数据#1 图像显示

热门文章

  1. MacBookpro连不上WiFi,网络增加新的位置解决
  2. bash pitfall
  3. [LA] Lipschitz continuous gradient
  4. API查q绑定带反查sgk带接口API文件源码
  5. 记一次虚拟机无妨访问网络的问题-Failed to start LSB:Bring up/down networking
  6. 网页打印与标准纸张换算 px与cm换算
  7. 人工智能轨道交通行业周刊-第12期(2022.8.29-9.4)
  8. Linux 日志切割神器 Logrotate 原理和配置详解(附多生产实例)
  9. Godaddy美国主机推荐
  10. 这台计算机没有连接到网络怎么办,通过路由器连接电脑连不上网怎么办_台式连接路由器没有网解决方法-系统城...