Flutter学习12 - SharedPreferences

1、shared_preferences 插件

  • 类似于 Android 中的 SharedPreferences,键值对的形式进行本地存储

1.1、引入插件

在 pubspec.yaml 中引入

dependencies:shared_preferences: ^2.1.0

在需要用到的文件中引入

import 'package:shared_preferences/shared_preferences.dart';

1.2、基本用法

  • 写入数据
var sp = await SharedPreferences.getInstance();
sp.setString('name', 'Leon');
  • 读取数据
var sp = await SharedPreferences.getInstance();
var name = sp.getString('name');
  • 删除数据
var sp = await SharedPreferences.getInstance();
sp.remove('name');

2、代码示例

在这里插入图片描述

  • 工具类
import 'package:shared_preferences/shared_preferences.dart';class SharedPreferencesUtils {static saveData<V>(String key, V value) async {var sp = await SharedPreferences.getInstance();var type = value.runtimeType;if (type == int) {sp.setInt(key, value as int);} else if (type == double) {sp.setDouble(key, value as double);} else if (type == String) {sp.setString(key, value as String);} else if (type == bool) {sp.setBool(key, value as bool);} else {print('类型不匹配');}}static getData(String key) async {var sp = await SharedPreferences.getInstance();print("sp.get:${sp.get(key)}");return sp.get(key);}static deleteAllData() async {var sp = await SharedPreferences.getInstance();for (String key in sp.getKeys()) {sp.remove(key);}}
}
  • 页面代码
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';const String KEY_NAME = "name";
const String KEY_AGE = "age";
const String KEY_WEIGHT = "weight";
const String KEY_BOOL = "bool";class SpDemo extends StatefulWidget {const SpDemo({super.key});State<SpDemo> createState() => _SpDemoState();
}class _SpDemoState extends State<SpDemo> {var _resultShow = "";Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('SpDemo'),),body: Column(children: [ElevatedButton(onPressed: _saveData2Sp, child: const Text('保存数据')),ElevatedButton(onPressed: _getDataFromSp, child: const Text('获取数据')),ElevatedButton(onPressed: _deleteDataInSp, child: const Text('删除数据')),Text(_resultShow),],),);}void _saveData2Sp() async {await SharedPreferencesUtils.saveData(KEY_NAME, 'Leon');await SharedPreferencesUtils.saveData(KEY_AGE, 26);await SharedPreferencesUtils.saveData(KEY_WEIGHT, 60.5);await SharedPreferencesUtils.saveData(KEY_BOOL, true);setState(() {_resultShow = "保存成功";});}void _getDataFromSp() async {var name = await SharedPreferencesUtils.getData(KEY_NAME);var age = await SharedPreferencesUtils.getData(KEY_AGE);var weight = await SharedPreferencesUtils.getData(KEY_WEIGHT);var b = await SharedPreferencesUtils.getData(KEY_BOOL);print('姓名:$name\n年龄:$age\n体重:$weight\n其他:$b');setState(() {_resultShow = "姓名:$name\n年龄:$age\n体重:$weight\n其他:$b";});}void _deleteDataInSp() async {await SharedPreferencesUtils.deleteAllData();setState(() {_resultShow = "删除成功";});}
}
import 'package:flutter/material.dart';import 'SharedPreferencesDemo.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});Widget build(BuildContext context) {return MaterialApp(title: 'Leon Demo',theme: ThemeData(primarySwatch: Colors.blue,),home: const SpDemo(),);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/797136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二维相位解包理论算法和软件【全文翻译- 掩码(3.4)】

本节我们将研究从质量图中提取掩码的问题。掩码是一个质量图,其像素只有两个值:0 或 1。零值像素标志着质量最低的相位值,这些相位值将被屏蔽、零权重或忽略。第 5 章中的某些 L/ 正则算法需要使用掩码来定义零权重。掩码还可用于某些路径跟踪算法,如第 4.5 节中将要介绍的…

人工智能时代呼唤科技与创新成为新榜样

人工智能时代呼唤科技与创新成为新榜样 雷军&#xff0c;好久不见&#xff01;这两天&#xff0c;你的出现仿佛为商业界注入了一股清流&#xff0c;让我深感欣慰。尽管你的目的或许只是为了推广产品&#xff0c;但你确实在这个充斥着各种卖货、卖情怀和卖道德的商业大潮中&…

基于Springboot的美发管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的美发管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

秋招刷题4(动态规划)

1.购物单 import java.util.Scanner;public class Main {public static void main(String[] args){Scanner sc new Scanner(System.in);int N sc.nextInt();int m sc.nextInt();Goods[] goods new Goods[m];for(int i 0; i < m; i){goods[i] new Goods();}for(int i …

浏览器、网页及JS脚本详解

一、交互关系 当我们谈论浏览器、网页以及JavaScript代码的交互关系时&#xff0c;我们其实是在讨论现代网络应用的基石。这一主题涵盖了浏览器的内部工作机制、HTML、CSS、JavaScript之间的相互作用&#xff0c;以及这些技术是如何共同塑造用户体验的。接下来的探讨将深入这一…

9_springboot_shiro_jwt_多端认证鉴权_整合jwt

1. Shiro框架回顾 到目前为之&#xff0c;Shiro框架本身的知识点已经介绍完了。web环境下&#xff0c;整个框架从使用的角度我们需要关注的几个点&#xff1a; 要使用Shiro框架&#xff0c;就要创建核心部件securityManager 对象。 SpringBoot项目中&#xff0c;引入shiro-spr…

python小练习(ps:可评论区讨论)

1. (单选题)海龟初始坐标为&#xff08;0&#xff0c;0&#xff09;&#xff0c;让海龟往坐标原点后方移动200像素的语句是 A. turtle.penup(200)B. turtle.fd(200)C. turtle.goto(200)D. turtle.bk(200) 2. (单选题)改变海龟画笔尺寸的是 A. turtle.penwidth()B. turtle.pen…

分类预测 | Matlab实现DRN深度残差网络数据分类预测

分类预测 | Matlab实现DRN深度残差网络数据分类预测 目录 分类预测 | Matlab实现DRN深度残差网络数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现DRN深度残差网络数据分类预测&#xff08;完整源码和数据&#xff09;&#xff0c;运行环境为Matl…

智能数据采集API技术在电子商务跨境电商数字化转型中的核心作用|API数据采集接口的核心应用

随着科技的飞速发展和全球化的深入推进&#xff0c;数字化转型已经成为企业和社会发展的必然趋势。在这一背景下&#xff0c;智能数据采集技术作为数字化转型的核心驱动力&#xff0c;正发挥着越来越重要的作用。本文将从智能数据采集技术的定义、特点、应用场景以及对企业的影…

初识Android 属性

属性是存储在系统共享内存中的一个个key:value键值对&#xff0c;主要有以下作用: 提供系统公共的信息进程间通讯作为rc文件的触发器&#xff0c;用于行为控制 提供系统公共属性 比如获取SDK版本&#xff0c;获取系统语言其实都是通过系统属性得到的 ro.build.version.sdk30…

golang变量初始化顺序

顺序&#xff1a; 1.引用的包 2.全局变量 3.init()函数 4.main()函数 package pkgimport "fmt"func init() {fmt.Println("pkg init") }package mainimport ("fmt"_ "gg/pkg" )var v val()func val() int {fmt.Println("func()…

React Native调用Android的原生功能

React Native 通过 JavaScript 接口与原生代码通信&#xff0c;这是通过名为 Bridge 的机制实现的。Bridge 负责在 JavaScript 和原生端之间建立通信桥梁。 以下是调用 Android 原生功能的基本步骤&#xff1a; 在 JavaScript 中&#xff0c;使用 React Native 提供的模块创建…

配置Spring Boot WebSocket 客户端与前端vue实现多人通信聊天

后台引入 <!-- websocket --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency> 然后配置类配置下 Configuration public class WebSocketConfig {/…

图像识别与增强现实(AR)的结合

图像识别与增强现实&#xff08;AR&#xff09;的结合是当今技术领域的一个热点&#xff0c;它通过将数字信息叠加到现实世界的视觉呈现中&#xff0c;为用户提供了一种全新的交互体验。这种技术融合了计算机视觉、图像处理、传感器融合、人机交互等多个技术领域的最新成果&…

MES实施之工控机和电脑的选择

在MES项目实施过程中,经常会碰到工控机和电脑的选型问题,那么他们的区别是什么? 1、控机和普通个人电脑(PC)相比,具有以下几个区别: 1.运行环境不同:工控机通常需要在各种恶劣的工业环境中运行,如高温、高湿、强电磁干扰等,因此需要具有防尘、防水、抗干扰等特点。而…

常用的scss工具方法封装

主要总结开发中常用的工具方法: 1.移动端1px mixin border1($bColor,$type:bottom){position: relative;&::before{content:;display: block;position: absolute;left:0;right: 0;if ($type top){top: 0;}if ($type bottom){bottom: 0;}border-#{$type}: 1px solid $bC…

蓝桥杯入门题知识点总结

1.小写和大写转换 &#xff08;1&#xff09;相关函数 C 头文件「ctype.h」里的&#xff1a;isalpha、islower、isupper、isalnum等函数_c isalpha-CSDN博客 isalpha()用来判断一个字符是否为字母isalnum用来判断一个字符是否为数字或者字母&#xff0c;也就是说判断一个字符…

基于Spring Boot的简历系统设计与开发

基于Spring Boot的简历系统设计与开发 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 部分系统展示 前台首页界面 简历模板管理界面 用户管理界面 管理员登录界…

Debian12 使用 nginx 与 php8.2 使用 Nextcloud

最近将小服务器升级了下系统&#xff0c;使用了 debian12 的版本&#xff0c;正好试试 nginx 和 php-fpm 这种方式运行 Nextcloud 这个私有云的配置。 一、基本系统及应用安装 系统&#xff1a;debian12 x86_64 位版本最小安装&#xff0c;安装后可根据自己需求安装一些工具&…

代码随想录算法训练营Day15|二叉树Part02|层序遍历||226翻转二叉树||101对称二叉树

今日任务 层序遍历 看完本篇可以一口气刷十道题&#xff0c;试一试&#xff0c; 层序遍历并不难&#xff0c;大家可以很快刷了十道题。 题目链接/文章讲解/视频讲解&#xff1a;代码随想录 226.翻转二叉树 &#xff08;优先掌握递归&#xff09; 这道题目 一些做过的同学 理解…