快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

flutter数据缓存,flutter数据存储

flutter 图片缓存

Flutter的图片缓存机制有问题(可能是我使用的版本1.12.13有问题)

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信平台小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了漠河免费建站欢迎大家使用!

网络图片会默认缓存到本地,但是不管图片是不是完整的或者损坏的,导致页面在下次进入的时候会优先从缓存里读取图片。有些图片是没有加载完成的,或者损坏的,导致图片无法显示。UI效果就是显示成白色的。

一种解决方式:加载前或者退出后清理图片缓存

ImageCache  imageCache = PaintingBinding.instance.imageCache; 

imageCache.clear();

缺点就是每次图片都想要从网络上获取,增加服务器负担

Flutter进行本地缓存

get方法获取数据,封装存储和移除方法用于操作数据缓存列表(需要优化,仅参考)

第十六章:Flutter数据存储

Flutter的数据存储分为三类

Preference相当于iOS的NSUserDefaults,其实也是按plist的方式存储的

step1:添加依赖

step2:pub get

step3:导入头文件

在path_provider中有三个获取文件路径的方法:

- getTemporaryDirectory()

://获取应用缓存目录,等同iOS的NSTemporaryDirectory()和Android的getCacheDir() 方法。

- getApplicationDocumentsDirectory():

//获取应用文件目录类似于iOS的NSDocumentDirectory和Android上的 AppData目录。

step1:添加依赖

step2:pub get

step3:导入头文件

Flutter 本地缓存

Flutter本地存储可以用 shared_preferences ,其会根据不同操作系统进行相对应的存储。

在pubspec.yaml添加

`shared_preferences: ^2.0.13`

```d

import 'package:shared_preferences/shared_preferences.dart';

class SpUtils {

SharedPreferences?prefs;

SpUtils._() {

init();

}

static SpUtils?_instance;

static preInit() {

_instance ??=SpUtils._();

}

static SpUtilsgetInstance() {

_instance ??=SpUtils._();

return _instance!;

}

void init()async {

prefs ??=await SharedPreferences.getInstance();

}

setString(String key, String value) {

prefs!.setString(key, value);

}

setDouble(String key, double value) {

prefs!.setDouble(key, value);

}

setInt(String key, int value) {

prefs!.setInt(key, value);

}

setBool(String key, bool value) {

prefs!.setBool(key, value);

}

setStringList(String key, List value) {

prefs!.setStringList(key, value);

}

clear(String key){

prefs!.remove(key);

}

clearAll(){

prefs!.clear();

}

Tget(String key) {

return prefs!.get(key)as T;

}

}

```

在项目初始页调用

`SpUtils.preInit();`

`SpUtils.getInstance().setString('userId', '12345678');`

`SpUtils.getInstance().setDouble('price', 12.88);`

`SpUtils.getInstance().setInt('count', 200);`

`SpUtils.getInstance().setBool('flag', true);`

`SpUtils.getInstance().get('userId');`

`SpUtils.getInstance().clearAll();`

`SpUtils.getInstance().clear('userId');`


分享文章:flutter数据缓存,flutter数据存储
新闻来源:http://6mz.cn/article/dsiseds.html

其他资讯