flutter实现本地存储

flutter实现本地存储

实现本地存储用到的插件是shared_preferences
shared_preferences地址为:https://pub.dev/packages/shared_preferences

import 'package:flutter/material.dart';
import 'package:flutterappone/GetInformation.dart';
import 'package:shared_preferences/shared_preferences.dart';

class StoragePage extends StatefulWidget {
    
    
  StoragePage({
    
    Key? key}) : super(key: key);

  @override
  State<StoragePage> createState() => _StoragePageState();
}

class _StoragePageState extends State<StoragePage> {
    
    

   //写入数据
  _saveData() async {
    
    
    SharedPreferences sp = await SharedPreferences.getInstance();
    sp.setString("username", "张三");
  }
  //获取数据
  _getData() async {
    
    
    SharedPreferences sp = await SharedPreferences.getInstance();
    String? s = sp.getString("username");
    print(s);
  }
  //删除数据
  _removeData() async {
    
    
    SharedPreferences sp = await SharedPreferences.getInstance();
    sp.remove("username");
  }

  @override
  Widget build(BuildContext context) {
    
    
    return Scaffold(
      appBar: AppBar(
        title: Text("本地存储"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(onPressed: _saveData, child: Text('保存数据')),
            SizedBox(height: 10),
            ElevatedButton(onPressed: _getData, child: Text('获取数据')),
            SizedBox(height: 10),
            ElevatedButton(onPressed: _removeData, child: Text('清除数据')),
            SizedBox(height: 10),
            ElevatedButton(
                onPressed: () {
    
    
                  Navigator.of(context)
                      .push(MaterialPageRoute(builder: (BuildContext context) {
    
    
                    return InformationPage();
                  }));
                },
                child: Text('页面转跳')),
          ],
        ),
      ),
    );
  }
}

在另一个页面获取存储的数据

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

class InformationPage extends StatefulWidget {
    
    
  InformationPage({
    
    Key? key}) : super(key: key);

  @override
  State<InformationPage> createState() => _InformationPageState();
}

class _InformationPageState extends State<InformationPage> {
    
    
  String s = "";
  _getData() async {
    
    
    SharedPreferences sp = await SharedPreferences.getInstance();
    s = sp.getString("username")!;
  }

  @override
  Widget build(BuildContext context) {
    
    
    return Scaffold(
      appBar: AppBar(
        title: Text("获取本地数据"),
      ),
      body: Center(
        child: Column(
         mainAxisAlignment: MainAxisAlignment.center,
        children: [
          ElevatedButton(onPressed: _getData, child: Text("获取数据")),
          Text(s),
        ],
      ),
      )
    );
  }
}

可以对数据相关操作进行封装
使用时直接通过 类.方法进行调用

import 'package:flutter/cupertino.dart';
import 'package:shared_preferences/shared_preferences.dart';

class Storage {
    
    


  static Future<void> setString(key, value) async {
    
    
    SharedPreferences sp = await SharedPreferences.getInstance();
    sp.setString(key, value);
  }

  static Future<String?> getString(Key) async {
    
    
    SharedPreferences sp = await SharedPreferences.getInstance();
    return sp.getString(Key);
  }
}

  _saveData() async {
    
    
    await Storage.setString("username", "张三");
  }

  _getData() async {
    
    
    String? s = await Storage.getString('username');
    print(s);
  }

猜你喜欢

转载自blog.csdn.net/m0_46527751/article/details/123215411