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): 没有数据
相关推荐
catchadmin5 分钟前
PHP 现在可以零成本构建原生 iOS 和 Android 应用 NativePHP for Mobile v3 发布
android·ios·php
独自破碎E14 分钟前
【回溯】二叉树的所有路径
android·java
安卓机器17 分钟前
安卓玩机工具推荐------免root权限使用的 支持安卓4至安卓16系统的系统开源应用 推荐
android·反编译apk
summerkissyou198718 分钟前
android-蓝牙-广播启动-startAdvertising和startAdvertisingSet区别
android·蓝牙
雪球Snowball23 分钟前
【Android关键流程】Configuration变更时更新应用程序配置
android
h7ml23 分钟前
于 CompletableFuture 的异步编排优化企业微信通知发送性能
android·windows·企业微信
不爱吃糖的程序媛24 分钟前
如何判断Flutter三方库是否需要OHOS适配开发?附完整适配指导
flutter·华为·harmonyos
子木鑫26 分钟前
[SUCTF 2019] CheckIn1 — 利用 .user.ini 与图片马构造 PHP 后门并绕过上传检测
android·开发语言·安全·php
风清云淡_A28 分钟前
【ANDROID】使用webview实现加载第三方的网页效果
android
吴声子夜歌36 分钟前
RxJava——操作符详解(四)
android·echarts·rxjava