Flutter之开屏广告缓存本地方案(无插件版),兼容 IOS、安卓
问题:
开屏广告图使用网络加载的话,会出现一个加载时的白屏。为了处理这个白屏实现开屏到广告的顺利过渡;
解决方案的整体思路如下:
- 网络请求图片文件
- 将图片文件转换成Uint8List
- 将Uint8List保存成String,存在全局数据管理中
- 开屏广告将图片数据从全局数据管理中取出,再转成Uint8List
- 使用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 2.方案2 3.方案3 总结 前言 项目中有一个需求,是需要把海康摄像机的实时画面在项目前端的页面中展示出来.本文的技术栈主要用到了vue3. ...
- 【海康威视】前端开发:【2】Web无插件版Demo测试
一.前言 最近看见海康威视官网新增了一个 WEB无插件开发包 V3.2: 支持高版本谷歌.火狐浏览器,同时需要设备支持Websocket取流.无插件版本需要使用nginx代理服务器. 于是下载了一个来 ...
- 好用app开屏广告组件XHLaunchAd -支持静态/动态图片广告/mp4视频广告
特性: 1.支持静态/动态图片广告. 2.支持mp4视频广告. 3.支持全屏/半屏广告. 4.支持网络及本地资源. 5.兼容iPhone和iPad. 6.支持广告点击事件. 7.支持自定义跳过按钮,添 ...
- iOS开屏广告弹窗浮层解决方案
转载至:https://my.oschina.net/zhxx/blog/910836 开屏广告作为app启动时映入用户眼帘的第一界面,其重要性不言而喻. 因项目中开屏广告插件中业务越来越多,原来的的 ...
- 海康威视web 开发包3.2无插件踩坑点
公司最近要搞款web监控系统,也有现成海康威视摄像头.一个万事俱备只欠开发的情况下,欣然接受了这次的任务了.只是没有料到开发之路也不怎么太平. 摄像头激活的事就不说了. 看到官网 上有web 3.2无 ...
- android怎么实现广告页,Android开屏广告的实现原理与适配方案
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 开屏广告目前很多应用都在使用,"约饭"为了推广自家的线上活动也提出了增加开屏广告的需求,所以就研究了 ...
- 无入侵的开屏广告插入方式
实现原理 自启动 & 监听 ///在load 方法中,启动监听,可以做到无注入+ (void)load {[self shareInstance]; } - (instancetype)ini ...
- 【Flutter】Flutter 如何实现开屏广告
文章目录 一.前言 二.实现开屏广告页面 三.实现广告数据的加载 四.开屏广告的完整代码 五.总结 一.前言 开屏广告这个功能在商业应用中非常常见,它可以在应用启动时向用户展示广告,增加应用的商业价值 ...
- 开屏广告=让用户等?小红书如何兼顾用户体验和广告投放效果
开屏广告作为小红书品牌广告的重要组成部分,已成为诸多品牌客户触达目标用户.实现品牌营销诉求的强力助推器.小红书开屏广告的投放策略,既要满足客户对保量和效果的诉求,还要兼顾对用户体验的影响.由此我们配套 ...
最新文章
- AFDetV2:重新思考点云检测方法中第二阶段检测器的必要性(CVPR2021)
- Spring Boot Profile使用详解及配置源码解析
- getBoundingClientRect()方法
- 枚举enum与#define 宏的区别?
- ubuntu查看网关
- zookeeper 日志查看_每天使用的注册中心zookeeper,流量暴涨怎么办?
- php中冒号是什么,在PHP中:(双冒号)和-(箭头)有什么区别?
- C ++中的std :: binary_search()
- 我狂揽16个offer:面试常问的这些问题你准备了吗?
- 如何将servlet中的变量在jsp页面中显示---jsp中的jstl表达式(C标签)
- 基于3DGIS+BIM的房屋出售管理系统
- 820操作系统(2)进程管理
- 学生学籍管理系统简单设计(上)
- 执行python manage.py migrate报错问题解决
- 华中科技大学计算机学院培养计划,华中科技大学计算机专业培养计划
- java默认作用域_java中默认的作用域
- Zephyr pinctrl
- Python APP自动化测试详解
- Springboot基础(二):数据库+Thymeleaf
- Python处理高光谱数据#1 图像显示
热门文章
- MacBookpro连不上WiFi,网络增加新的位置解决
- bash pitfall
- [LA] Lipschitz continuous gradient
- API查q绑定带反查sgk带接口API文件源码
- 记一次虚拟机无妨访问网络的问题-Failed to start LSB:Bring up/down networking
- 网页打印与标准纸张换算 px与cm换算
- 人工智能轨道交通行业周刊-第12期(2022.8.29-9.4)
- Linux 日志切割神器 Logrotate 原理和配置详解(附多生产实例)
- Godaddy美国主机推荐
- 这台计算机没有连接到网络怎么办,通过路由器连接电脑连不上网怎么办_台式连接路由器没有网解决方法-系统城...