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

Flutter中如何持久化API URL修改,重启后读取最新值?

Flutter 实现API URL的持久化存储(类似C# Properties.settings)

对于你的需求,核心是通过本地持久化存储保存修改后的API URL,确保App重启后能读取到最新值。下面给你推荐两种实用方案,优先第一种,简单易上手:

方案一:使用shared_preferences(轻量键值对存储)

这是Flutter官方推荐的轻量存储方案,专门用来保存字符串、数字这类简单数据,完全满足你存储API URL的需求。

步骤1:添加依赖

在项目根目录的pubspec.yaml文件中添加依赖:

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.2.2 # 版本号可替换为pub.dev最新版本

执行flutter pub get完成依赖安装。

步骤2:封装存储工具类

新建api_storage.dart文件,封装读写API URL的方法,方便全局调用:

import 'package:shared_preferences/shared_preferences.dart';

class ApiStorage {
  // 定义统一的存储键名,避免拼写错误
  static const String _apiUrlKey = 'api_url';

  // 保存API URL到本地
  static Future<void> saveApiUrl(String url) async {
    final prefs = await SharedPreferences.getInstance();
    await prefs.setString(_apiUrlKey, url);
  }

  // 获取API URL,无存储值时返回默认值(比如你说的初始值x)
  static Future<String> getApiUrl({String defaultValue = 'x'}) async {
    final prefs = await SharedPreferences.getInstance();
    return prefs.getString(_apiUrlKey) ?? defaultValue;
  }
}

步骤3:实际使用

  • 修改API URL时调用保存方法:
// 用户修改完成后,传入新的URL(比如y)执行保存
await ApiStorage.saveApiUrl('y');
  • App启动时读取最新API URL:
// 在网络请求工具初始化或首页初始化时调用
String currentApiUrl = await ApiStorage.getApiUrl();
// 后续用currentApiUrl作为请求的基础地址

方案二:使用flutter_secure_storage(加密存储)

如果你的API URL包含敏感信息(比如带密钥的地址),可以用这个加密存储插件,用法和shared_preferences类似,但会对数据加密,安全性更高。

步骤1:添加依赖

dependencies:
  flutter:
    sdk: flutter
  flutter_secure_storage: ^9.0.0

执行flutter pub get完成安装。

步骤2:封装工具类

import 'package:flutter_secure_storage/flutter_secure_storage.dart';

class SecureApiStorage {
  static const String _apiUrlKey = 'api_url';
  static final _storage = FlutterSecureStorage();

  // 保存加密后的API URL
  static Future<void> saveApiUrl(String url) async {
    await _storage.write(key: _apiUrlKey, value: url);
  }

  // 获取加密存储的API URL
  static Future<String> getApiUrl({String defaultValue = 'x'}) async {
    String? url = await _storage.read(key: _apiUrlKey);
    return url ?? defaultValue;
  }
}

使用方式和方案一完全一致,仅工具类不同。

注意事项

  • 首次启动App时,因无存储值会返回你设置的默认值(比如示例中的'x')
  • 所有存储操作都是异步的,必须用await处理
  • 如果后续需要管理多个配置项,可以考虑hive或isar这类轻量NoSQL数据库,但单个API URL用上述方案足够轻便

内容的提问来源于stack exchange,提问作者Ahmet Enes Söylemez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:22:17