import 'dart:convert'; import 'dart:io'; import 'package:json_annotation/json_annotation.dart'; import 'package:path_provider/path_provider.dart'; import 'package:path/path.dart' as p; part 'appconfig.g.dart'; @JsonSerializable() class AppConfig { List devices = []; AppConfig._constructor(); static AppConfig _instance = AppConfig._constructor(); factory AppConfig({Map? json}) { if (json != null) { _instance = _$AppConfigFromJson(json); } return _instance; } Map toJson() => _$AppConfigToJson(this); /// Saves configuration to file. /// /// WARN: This method assumes the config file already exists. Future save() async { final appDocsDir = await getApplicationDocumentsDirectory(); var configFile = File(p.join(appDocsDir.path, "app.json")); await configFile.writeAsString(jsonEncode(toJson())); } } @JsonSerializable() class Device { String name; String routerSsid; String routerBssid; String networkPassword; String? ip; String? bssid; Device({ required this.name, required this.routerSsid, required this.routerBssid, this.networkPassword = "", }); factory Device.fromJson(Map json) => _$DeviceFromJson(json); Map toJson() => _$DeviceToJson(this); }