Files
dde_gesture_manager/app/lib/models/local_schemes_linux.dart
T

69 lines
1.7 KiB
Dart
Raw Normal View History

import 'dart:io';
import 'package:dde_gesture_manager/builder/provider_annotation.dart';
import 'package:dde_gesture_manager/extensions.dart';
2021-10-09 13:37:08 +08:00
import 'package:dde_gesture_manager/models/scheme.dart';
import 'package:path/path.dart' show join;
import 'package:path_provider/path_provider.dart';
2021-10-09 13:37:08 +08:00
import 'local_schemes.dart';
2021-10-09 13:37:08 +08:00
export 'local_schemes.dart';
@ProviderModel()
2021-10-09 13:37:08 +08:00
class LocalSchemes implements LocalSchemesInterface<LocalSchemeEntryLinux> {
LocalSchemes() {
schemeEntries.then((value) => schemes = value);
}
@override
2021-10-09 13:37:08 +08:00
Future<List<LocalSchemeEntryLinux>> get schemeEntries async {
var _supportDirectory = await getApplicationSupportDirectory();
2021-10-09 13:37:08 +08:00
var directory = Directory(join(_supportDirectory.path, 'schemes'));
if (!directory.existsSync()) directory.createSync();
directory.path.sout();
return directory
.list()
2021-10-09 13:37:08 +08:00
.map<LocalSchemeEntryLinux?>((f) {
LocalSchemeEntryLinux? entry;
try {
var content = File(f.path).readAsStringSync();
2021-10-09 13:37:08 +08:00
entry = LocalSchemeEntryLinux(
path: f.path, scheme: Scheme.parse(content), lastModifyTime: f.statSync().modified);
} catch (e) {
e.sout();
}
return entry;
})
.where((e) => e != null)
2021-10-09 13:37:08 +08:00
.cast<LocalSchemeEntryLinux>()
.toList();
}
@ProviderModelProp()
2021-10-09 13:37:08 +08:00
List<LocalSchemeEntry>? schemes;
}
2021-10-09 13:37:08 +08:00
class LocalSchemeEntryLinux implements LocalSchemeEntry {
@override
String path;
@override
2021-10-09 13:37:08 +08:00
Scheme scheme;
@override
DateTime lastModifyTime;
2021-10-09 13:37:08 +08:00
LocalSchemeEntryLinux({
required this.path,
2021-10-09 13:37:08 +08:00
required this.scheme,
required this.lastModifyTime,
});
@override
save() {
// TODO: implement save
throw UnimplementedError();
}
}