import 'dart:convert'; import 'package:flutter/services.dart' show rootBundle; class AppConfig { static const String _assetPath = 'assets/config/app_config.json'; final String stompUrl; final Duration reconnectDelay; final String webviewUrl; final String defaultTopic; final List topicPresets; final String defaultDestination; final String defaultPayload; const AppConfig({ required this.stompUrl, required this.reconnectDelay, required this.webviewUrl, required this.defaultTopic, required this.topicPresets, required this.defaultDestination, required this.defaultPayload, }); static Future load() async { final raw = await rootBundle.loadString(_assetPath); final json = jsonDecode(raw) as Map; final server = json['server'] as Map; final topics = json['topics'] as Map; final send = json['send'] as Map; return AppConfig( stompUrl: server['stompUrl'] as String, reconnectDelay: Duration( seconds: (server['reconnectDelaySeconds'] as num).toInt(), ), webviewUrl: server['webviewUrl'] as String, defaultTopic: topics['default'] as String, topicPresets: (topics['presets'] as List).cast(), defaultDestination: send['defaultDestination'] as String, defaultPayload: const JsonEncoder.withIndent(' ').convert(send['defaultPayload']), ); } }