You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中无需硬编码如何向SharedPreferences添加固定配置项?

可行实现方案

核心思路是把所有硬编码的存储key、固定配置值收拢到统一配置类管理,再封装SharedPreferences操作工具类,完全隔离业务层和底层存储逻辑,避免零散硬编码。

  • 第一步:定义配置常量类,统一维护存储key和固定预设值
class SpConfig {
  // 存储key常量,禁止业务层直接使用字面量key
  static const String tokenKey = 'token';
  static const String apiUsernameKey = 'api_username';
  static const String apiPasswordKey = 'api_password';

  // 固定不变的API账号统一管理,多环境下也可以在这里做环境区分
  static const String fixedApiUsername = 'official_api_user';
  static const String fixedApiPassword = 'official_api_pass123';
}
  • 第二步:封装SharedPreferences工具类,收拢所有读写逻辑
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

class SpUtil {
  static SharedPreferences? _instance;

  // 提前初始化,建议在main函数中执行
  static Future<void> init() async {
    _instance = await SharedPreferences.getInstance();
  }

  // Token读写封装
  static String? getToken() => _instance?.getString(SpConfig.tokenKey);
  static Future<bool?> saveToken(String token) => _instance?.setString(SpConfig.tokenKey, token);

  // 固定API账号写入封装,业务层直接调用即可,不需要传入key和值
  static Future<void> saveFixedApiAccount() async {
    await _instance?.setString(SpConfig.apiUsernameKey, SpConfig.fixedApiUsername);
    await _instance?.setString(SpConfig.apiPasswordKey, SpConfig.fixedApiPassword);
  }

  // API账号读取封装
  static String? getApiUsername() => _instance?.getString(SpConfig.apiUsernameKey);
  static String? getApiPassword() => _instance?.getString(SpConfig.apiPasswordKey);
}
  • 第三步:实际使用示例
// main函数初始化
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SpUtil.init();
  // 启动时写入固定API账号,也可以按需在指定时机调用
  await SpUtil.saveFixedApiAccount();
  runApp(const MyApp());
}

// 业务层读取数据,完全不需要关心底层存储逻辑和key定义
void fetchApi() {
  String? token = SpUtil.getToken();
  String? apiUser = SpUtil.getApiUsername();
  String? apiPwd = SpUtil.getApiPassword();
  // 后续接口请求逻辑
}

该方案的优势是后续如果需要修改存储key、调整固定账号值,只需要修改SpConfig一个文件即可,不需要修改所有调用的业务代码,也不会出现key写错、值不一致的问题。

内容的提问来源于stack exchange,提问作者OguzKaanAkyalcin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:45:01