持久化存储--2、SharedPreferences存储

SharedPreferences 是使用键值对的方式来存储数据,当保存一条数据时,需要给这条数据提供对应的键,读取数据是可以通过对应的键把相应的值取出来。和JSON很像(JavaScript 对象表示法(JavaScript Object Notation),用于存储和交换文本信息的语法。);使用SharedPreferences保存JSON数据很方便。

3种获取SharedPreferences 对象的方法:

  • Context类中的getSharedPrefences()方法,传入参数文件名和操作模式
  • Activity类中的getPrefences()方法,自动把当前活动类名作为文件名
  • PreferenceManager 类中的 getDefaultSharedPreferences()方法,静态方法,把当前包名作为文件名

向SharePreferences文件中存储数据

  1. 调用 SharedPreferences 对象的 edit()方法来获取一个 SharedPreferences.Editor 对象
  2. 向 SharedPreferences.Editor 对象中添加数据
  3. 调用 commit()方法将添加的数据提交,从而完成数据存储操作

保存数据:第2种获取SharedPreferences 对象的方法
SharedPreferences 对象–SharedPreferences.Editor 对象–SharedPreferences.Editor 对象中添加数据–commit()方法提交

SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
                editor.putString("name", "Tom");//key,value
                editor.putInt("age", 28);
                editor.putBoolean("married", false);
                editor.commit();

得到的结论:数据保存到MainActivity.xml中
数据保存到MainActivity.xml中
导出的数据是:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>

<map>

   <string name="name">Tom</string>

   <boolean name="married" value="false" />

   <int name="age" value="28" />

</map>

恢复数据:
SharedPreferences 对象–get 方法用于对存储的数据进行读取

SharedPreferences pref = getSharedPreferences("MainActivity", MODE_PRIVATE);
                String name = pref.getString("name", "");
                int age = pref.getInt("age", 0);
                boolean married = pref.getBoolean("married", false);
                Log.d("MainActivity", "name is " + name);
                Log.d("MainActivity", "age is " + age);
                Log.d("MainActivity", "married is " + married);

log出的数据为:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter提供了多种持久化存储数据的方法,包括: 1. Shared Preferences:用于存储键值对,适合存储简单的数据,如用户设置、应用程序配置等。 2. SQLite数据库:用于存储结构化数据,适合存储大量数据和复杂数据,如用户信息、应用程序数据等。 3. 文件存储:用于存储大型二进制数据,如图像、音频、视频等。 下面是使用Shared Preferences进行数据持久化的示例代码: ```dart import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', home: MyHomePage(), ); } } class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { String _name = ''; @override void initState() { super.initState(); _loadName(); } void _loadName() async { SharedPreferences prefs = await SharedPreferences.getInstance(); setState(() { _name = prefs.getString('name') ?? ''; }); } void _saveName(String name) async { SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setString('name', name); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Flutter Demo'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'Hello, $_name!', style: Theme.of(context).textTheme.headline4, ), TextField( onChanged: (value) => _saveName(value), ), ], ), ), ); } } ``` 在这个示例中,我们使用SharedPreferences存储用户的名字。在初始化时,我们会调用_loadName()方法来加载存储SharedPreferences中的名字。在用户输入名字后,我们会调用_saveName()方法来保存名字。每当名字发生变化时,UI会自动更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值