flutter 本地保存Map数据类型

Map<String, dynamic>

Future<void> saveDataToSharedPreferences(Map<String, dynamic> data) async {
  final SharedPreferences prefs = await SharedPreferences.getInstance();
  
  // 检查数据是否为空
  if (data.isEmpty) {
    print('Data is empty, not saving to SharedPreferences.');
    return; // 数据为空,不保存
  }
  
  // 将Map转换为JSON字符串
  String dataJson = json.encode(data);
  
  // 保存JSON字符串到SharedPreferences
  await prefs.setString('myData', dataJson);
}

读取数据

Future<void> loadDataFromSharedPreferences() async {
  final SharedPreferences prefs = await SharedPreferences.getInstance();
  
  // 从SharedPreferences获取JSON字符串
  String? dataJson = prefs.getString('myData');
  
  if (dataJson != null && dataJson.isNotEmpty) {
    // 将JSON字符串转换回Map
    Map<String, dynamic> data = json.decode(dataJson);
    
    // 使用数据
    print(data);
  } else {
    // 处理空数据的情况
    print('No data found in SharedPreferences or data is empty.');
    // 你可以在这里设置默认值或者执行其他操作
  }
}

Map<String, Map<String, String>>

  /// 保存数据到 shared_preferences
 static Future<void> saveData(Map<String, Map<String, String>> data) async {
   // 将数据转换为 JSON 字符串
   String dataString = json.encode(data);
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setString('device_alarm_data', dataString);
  }

读取数据

// 从 shared_preferences 读取数据
import 'dart:convert';

import 'package:shared_preferences/shared_preferences.dart';

// 从 shared_preferences 读取数据
Future<Map<String, Map<String, String>>> loadData() async {
  final SharedPreferences prefs = await SharedPreferences.getInstance();
  String? dataString = prefs.getString('device_alarm_data');
  if (dataString != null) {
    try {
      // 将 JSON 字符串转换回 Map
      var decodedData = json.decode(dataString) as Map<dynamic, dynamic>;
      // 确保所有值都是字符串类型的 Map
      var result = {} as Map<String, Map<String, String>>;
      decodedData.forEach((key, value) {
        if (value is Map) {
          result[key] = (value).map<String, String>((k, v) {
            if (v is String) {
              return MapEntry(k, v);
            } else {
              throw Exception('Non-string value found: $v');
            }
          });
        } else {
          throw Exception('Non-map value found for key: $key');
        }
      });
      return result;
    } catch (e) {
      // 处理 JSON 解码或数据转换错误
      print('Error loading data: $e');
      return {}; // 返回空 Map 或者可以选择抛出异常
    }
  } else {
    // 数据不存在,返回空 Map
    return {};
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值