Many minor improvements

This commit is contained in:
2026-02-01 20:09:54 +07:00
parent 99344a82e6
commit 639a8417e6
20 changed files with 540 additions and 157 deletions
+56
View File
@@ -0,0 +1,56 @@
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);
}