前言
引用
在开发原生iOS或Native应用时,一般有判断上一次安装的版本和当前版本是否是同一个版本,如果不是同一个版本,则要显示引导页,这个过程是把版本号持久化存储起来,在每一次启动时进行判断,这个过程必须是同步的,但flutter > 提供的shared_preferences和package_info却都是异步的
解决方案:
1、在pubspec.yaml里配置依赖packages
# 依赖库
dependencies:
flutter:
sdk: flutter
#数据存储
shared_preferences: ^0.5.2+1
#获取版本号等信息
package_info: ^0.4.0+3
2、使用一个工具类持有一个静态的shared_preferences和package_info
import 'package:shared_preferences/shared_preferences.dart';
import 'package:package_info/package_info.dart';
class SpUtil{
static SharedPreferences preferences;
static PackageInfo packageInfo;
static Future<bool> getInstance() async{
preferences = await SharedPreferences.getInstance();
packageInfo = await PackageInfo.fromPlatform();
return true;
}
}
3、在main方法里先调用初始化方法,再调用runApp方法
void main() {
realRunApp();
}
void realRunApp() async {
bool success = await SpUtil.getInstance();
print("init-"+success.toString());
runApp(MyApp());
}
4、在需要使用时就可以同步调用了
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
Widget rootPage;
String version = SpUtil.packageInfo.version;
String oldVersion = SpUtil.preferences.getString('oldVersion');
if(version == oldVersion){
// 如果已经显示过了则直接显示tab
rootPage = TabBarPage();
}else{
// 没有显示过guide,则优先显示guide
rootPage = CircleGuidePage();
}
return MaterialApp(
title: 'MyApp',
debugShowCheckedModeBanner: true,
home: rootPage,
);
}
}
分享到:
相关推荐
streaming_shared_preferences Flutter项目的React式键值存储。 Streaming_shared_preferences在之上添加了响应式功能。 它可以执行常规SharedPreferences所做的所有事情,但也可以侦听value的变化。 这样可以非常...
flutter_webrtc_rtsp 拉流播放 demo
flutter_inappwebview-master_flutter_WebView_源码.zip
Flutter插件 编写跨平台android和ios。可以拿来作为demo或者自己编写插件业务更改用
flutter_ui_challenge_flight_search,在Flutter中实现的高级UI设计,博客附件,效果请查看博客相对应项目。
里面包含 flutter_macos_1.17.0-stable 与 flutter_macos_v1.12.13+hotfix.8-stable 百度云盘下载地址,下载了好久,希望可以帮到你。
A flutter text to speech plugin (Swift
flutter_local_notifications..zip,在android和ios上显示本地通知的flutter插件
由晶体管软件,颤振背景地理定位的创造者
flutter_list_drag_and_drop,列表的拖放实现,博客附件,效果请查看博客相对应项目。
flutter_3.0.4版windows安装包,极速下载
一个处理pdf文件的flutter插件。适用于Android和iOS
PDF查看器的颤动 Android和iOS的pdf查看器!... import 'package:flutter_full_pdf_viewer/flutter_full_pdf_viewer.dart'; import 'package:flutter_full_pdf_viewer/full_pdf_viewer_plugin.dart'; i
flutter_device_preview-master.zip
flutter_text_to_speech,用于颤振的文本到语音.zip
flutter_windows_v1.2.1-stable.zip,Flutter1.2.1正式版
flutter_macos_arm64_3.0.0-stable.zip 适用于macOS ARM:文件分割成2个压缩包,必须集齐2个文件后才能一起解压一起使用: flutter_macos_arm64_3.0.0-stable.part1.rar ... flutter_macos_arm64_3.0.0-stable.part2....
flutter_secure_storage Flutter插件可将数据存储在安全存储中: 用于iOS AES加密用于Android。 AES密钥使用RSA加密,并且RSA密钥存储在用于Linux。 注意KeyStore是在Android 4.3(API级别18)中引入的。 该插件不...
flutter_ui_challenges,尝试在Flutter中复制各种应用程序UI,博客附件,效果请查看博客相对应项目。