storage_handler.dart 1.72 KB
import 'package:appframe/config/locator.dart';
import 'package:appframe/services/dispatcher.dart';
import 'package:shared_preferences/shared_preferences.dart';

class SetStorageHandler extends MessageHandler {
  @override
  Future<dynamic> handleMessage(dynamic params) async {
    if (params is! Map<String, dynamic>) {
      throw Exception('参数错误');
    }

    var key = params['key'];
    var value = params['value'];

    if (key is! String || value is! String || key.isEmpty) {
      throw Exception('参数错误');
    }

    try {
      return await getIt.get<SharedPreferences>().setString(key, value);
    } catch (e) {
      throw Exception(e.toString());
    }
  }
}

class GetStorageHandler extends MessageHandler {
  @override
  Future<dynamic> handleMessage(dynamic params) async {
    if (params is! String || params.isEmpty) {
      throw Exception('参数错误');
    }

    try {
      return getIt.get<SharedPreferences>().getString(params) ?? "";
    } catch (e) {
      throw Exception(e.toString());
    }
  }
}

class RemoveStorageHandler extends MessageHandler {
  @override
  Future<dynamic> handleMessage(dynamic params) async {
    if (params is! String || params.isEmpty) {
      throw Exception('参数错误');
    }

    try {
      return await getIt.get<SharedPreferences>().remove(params);
    } catch (e) {
      throw Exception(e.toString());
    }
  }
}

class ClearStorageHandler extends MessageHandler {
  @override
  Future<dynamic> handleMessage(dynamic params) async {
    var sharedPreferences = getIt.get<SharedPreferences>();
    sharedPreferences.getKeys().forEach((key) async {
      if (!key.startsWith('h5_version')) {
        await sharedPreferences.remove(key);
      }
    });

    return true;
  }
}