Flutter SharedPreferences存储数据基本使用

数据持久化存储

在flutter中使用SharedPreferences 需要异步操作。

添加插件

yaml 复制代码
dependencies:
  shared_preferences: ^2.5.3

代码

dart 复制代码
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() {
  runApp(MyPage());
}

class MyPage extends StatelessWidget {
  const MyPage({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(theme: ThemeData(), home: MyFul());
  }
}

class MyState extends State {
  late String str;

  Future<SharedPreferences> shared = SharedPreferences.getInstance();

  //获取Flag
  void getValue() async {
    SharedPreferences sharedPreferences = await shared;
    bool has = sharedPreferences.containsKey("data");
    if (has) {
      str = sharedPreferences.getString("data")!;
      print(str);
    }else{
      print("没有数据");
    }
  }

  //存储flag
  void setValue(String str) async {
    SharedPreferences sharedPreferences = await shared;
    sharedPreferences.setString("data", str);
    print("存储数据");
  }

  //删除数据
  void delValue(String key) async {
    SharedPreferences sharedPreferences = await shared;
    sharedPreferences.remove(key);
    print("删除数据");
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(""), centerTitle: true),
      body: Column(
        children: [
          OutlinedButton(
            onPressed: () {
              setValue("hello");
            },
            child: Text("存储数据500"),
          ),
          OutlinedButton(
            onPressed: () {
              getValue();
            },
            child: Text("获取数据"),
          ),
          OutlinedButton(
            onPressed: () {
              delValue("data");
            },
            child: Text("删除数据"),
          ),
        ],
      ),
    );
  }
}

class MyFul extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return MyState();
  }
}


I/flutter (31129): 存储数据
I/flutter (31129): hello
I/flutter (31129): 删除数据
I/flutter (31129): 没有数据
相关推荐
执明wa9 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio
404_coder9 小时前
源码视角下的 Android 开机流程:从 Zygote、SystemServer 到 Launcher
android
二流小码农9 小时前
鸿蒙开发:以登录案例了解代码架构MVVM
android·ios·harmonyos
用户693717500138410 小时前
从代码生产者到 AI 协作者:软件工程师的角色重构
android·前端·后端
GitLqr10 小时前
别在 Flutter 的 main() 里乱锁屏幕方向,小心 iPad 分屏功能被你搞没了
android·flutter·ios
sg_knight10 小时前
MySQL 存储过程详解:从入门到实战
android·数据库·mysql·database·dba·关系型数据库·db
爱笑鱼10 小时前
Binder(四):ioctl(BINDER_WRITE_READ) 之后,事务怎样到达目标进程?
android
AFinalStone11 小时前
Android 7系统休眠唤醒(二)开机全链路—BootROM到Launcher
android·电源管理·休眠唤醒
Mr YiRan11 小时前
Android NDK开发之统计到未被回收的图片
android