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
相关产品推荐
相关产品推荐

