class ServerConfig { final String host; final int port; final String? localHost; final String? vpnHost; final String? macAddress; final String? mqttToken; const ServerConfig({ required this.host, this.port = 8765, this.localHost, this.vpnHost, this.macAddress, this.mqttToken, }); Map toJson() { return { 'host': host, 'port': port, if (localHost != null) 'localHost': localHost, if (vpnHost != null) 'vpnHost': vpnHost, if (macAddress != null) 'macAddress': macAddress, if (mqttToken != null) 'mqttToken': mqttToken, }; } factory ServerConfig.fromJson(Map json) { return ServerConfig( host: json['host'] as String? ?? '', port: json['port'] as int? ?? 8765, localHost: json['localHost'] as String?, vpnHost: json['vpnHost'] as String?, macAddress: json['macAddress'] as String?, mqttToken: json['mqttToken'] as String?, ); } ServerConfig copyWith({ String? host, int? port, String? localHost, String? vpnHost, String? macAddress, String? mqttToken, }) { return ServerConfig( host: host ?? this.host, port: port ?? this.port, localHost: localHost ?? this.localHost, vpnHost: vpnHost ?? this.vpnHost, macAddress: macAddress ?? this.macAddress, mqttToken: mqttToken ?? this.mqttToken, ); } }