57 lines
1.3 KiB
Dart
57 lines
1.3 KiB
Dart
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<Device> devices = [];
|
|
|
|
AppConfig._constructor();
|
|
static AppConfig _instance = AppConfig._constructor();
|
|
|
|
factory AppConfig({Map<String, dynamic>? json}) {
|
|
if (json != null) {
|
|
_instance = _$AppConfigFromJson(json);
|
|
}
|
|
|
|
return _instance;
|
|
}
|
|
|
|
Map<String, dynamic> toJson() => _$AppConfigToJson(this);
|
|
|
|
/// Saves configuration to file.
|
|
///
|
|
/// WARN: This method assumes the config file already exists.
|
|
Future<void> 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<String, dynamic> json) => _$DeviceFromJson(json);
|
|
|
|
Map<String, dynamic> toJson() => _$DeviceToJson(this);
|
|
}
|