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): 没有数据
相关推荐
CANI_PLUS4 小时前
ESP32将DHT11温湿度传感器采集的数据上传到XAMPP的MySQL数据库
android·数据库·mysql
安卓开发者6 小时前
Android模块化架构深度解析:从设计到实践
android·架构
雨白6 小时前
HTTP协议详解(二):深入理解Header与Body
android·http
阿豪元代码7 小时前
深入理解 SurfaceFlinger —— 如何调试 SurfaceFlinger
android
阿豪元代码7 小时前
深入理解 SurfaceFlinger —— 概述
android
zeqinjie7 小时前
回顾 24年 Flutter 骨架屏没有释放 CurvedAnimation 导致内存泄漏的血案
前端·flutter·ios
CV资深专家8 小时前
Launcher3启动
android
stevenzqzq9 小时前
glide缓存策略和缓存命中
android·缓存·glide
雅雅姐9 小时前
Android 16 的用户和用户组定义
android