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

Flutter配置文件标准写法咨询:类比.NET Core的appsettings.json

Flutter 中类似 .NET Core appsettings.json 的配置方案

1. 创建JSON配置文件

在项目根目录新建assets文件夹,然后在其中创建config.json,内容如下:

{
  "Travel": {
    "EndPoint": "https://api.openai.com/v1/threads",
    "ApiKey": "sk-123",
    "AssistantId": "asst_123"
  },
  "Home": {
    "EndPoint": "https://api.openai.com/v1/threads",
    "ApiKey": "sk-1234",
    "AssistantId": "asst_1234"
  },
  "Edu": {
    "EndPoint": "https://api.openai.com/v1/threads",
    "ApiKey": "sk-123456",
    "AssistantId": "asst_12345"
  }
}

2. 配置资源引用

打开pubspec.yaml,在flutter节点下添加assets配置,确保JSON文件能被Flutter识别:

flutter:
  assets:
    - assets/config.json

3. 实现配置读取工具类

创建一个config_service.dart文件,封装读取和解析配置的逻辑:

import 'dart:convert';
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';

class ConfigService {
  static Map<String, dynamic>? _configData;

  // 初始化配置
  static Future<void> loadConfig() async {
    final String jsonString = await rootBundle.loadString('assets/config.json');
    _configData = json.decode(jsonString);
  }

  // 获取指定模块的配置
  static Map<String, dynamic>? getModuleConfig(String moduleName) {
    return _configData?[moduleName];
  }

  // 获取具体配置项
  static String? getConfigValue(String moduleName, String key) {
    return _configData?[moduleName]?[key];
  }
}

4. 使用配置

在项目启动时先加载配置,之后就能在任意地方调用:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ConfigService.loadConfig();
  runApp(const MyApp());
}

// 示例:获取Travel模块的ApiKey
String? travelApiKey = ConfigService.getConfigValue('Travel', 'ApiKey');

注意事项

  • 敏感配置(如ApiKey)不要提交到代码仓库,建议开发、生产环境使用不同配置文件,通过环境变量切换。
  • 若需要类型安全的配置,可以基于上述逻辑扩展,用dart类封装配置模型,实现类型校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 20:35:12