Skip to content
On this page

数据持久化

  • shared_preferences :以key-value的方式保存到磁盘,适合存储的键值集合相对较少的情况
  • SQLite:数据库实现方案
  • 文件存储方案

这些方案在项目在chrome运行时会失效。

shared_preferences

安装依赖

dart
flutter pub add shared_preferences
dart
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() => runApp(const MyApp());

class Storage {
  Storage();

  // 获取缓存数据
  getData(String key) async{
    var prefs = await SharedPreferences.getInstance();
    return prefs.getString(key);
  }

  // 设置缓存数据
  setData(String key, String value) async{
    var prefs = await SharedPreferences.getInstance();
    prefs.setString(key, value);
  }

  // 删除缓存数据
  removeData(String key) async{
    var prefs = await SharedPreferences.getInstance();
    await prefs.remove(key);
  }
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'test',
      home: Scaffold(
        appBar: AppBar(
          title: const Text('text'),
        ),
        body: Center(
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Padding(
                padding: const EdgeInsets.fromLTRB(0, 0, 20, 0),
                child: ElevatedButton(
                    onPressed: () async{
                      final store = Storage();
                      await store.setData('name', 'lisi');
                      print("按钮的单击事件");
                    },
                    child: const Text("设置缓存")),
              ),
              Padding(
                padding: const EdgeInsets.fromLTRB(0, 0, 20, 0),
                child: ElevatedButton(
                    onPressed: () async{
                      final store = Storage();
                      await store.removeData('name');
                    },
                    child: const Text("删除缓存")),
              ),
              ElevatedButton(
                  onPressed: () async{
                    final store = Storage();
                    var storeName = await store.getData('name');
                    print(storeName);
                  },
                  child: const Text("获取缓存")),
            ],
          )
        )
      )
    );
  }
}