119 lines
2.7 KiB
Dart
119 lines
2.7 KiB
Dart
import 'package:flutter/foundation.dart';
|
|
import 'package:prod/models/editor.dart';
|
|
import 'package:prod/models/project.dart';
|
|
import "package:shared_preferences/shared_preferences.dart";
|
|
import "package:prod/models/constants.dart";
|
|
// import "package:json_annotation/json_annotation.dart";
|
|
import "dart:convert";
|
|
|
|
class GlobalModel extends ChangeNotifier {
|
|
late List<Project> projects;
|
|
late List<bool> hoverShow;
|
|
late List<Editor> editors;
|
|
late SharedPreferences prefs;
|
|
bool importedData = false;
|
|
|
|
GlobalModel() {
|
|
SharedPreferences.getInstance().then((a) {
|
|
print("Loaded sp");
|
|
prefs = a;
|
|
if (prefs.containsKey(kProjectsKey)) {
|
|
String prjData = prefs.getString(kProjectsKey)!;
|
|
List<dynamic> data = jsonDecode(prjData);
|
|
projects = [];
|
|
for (var d in data) {
|
|
projects.add(Project.fromJson(d));
|
|
}
|
|
} else {
|
|
projects = [];
|
|
prefs.setString(kProjectsKey, jsonEncode(projects));
|
|
}
|
|
print(projects);
|
|
|
|
if (prefs.containsKey(kEditorsKey)) {
|
|
String edtData = prefs.getString(kEditorsKey)!;
|
|
List<dynamic> data = jsonDecode(edtData);
|
|
editors = [];
|
|
for (var d in data) {
|
|
editors.add(Editor.fromJson(d));
|
|
}
|
|
} else {
|
|
editors = [];
|
|
prefs.setString(kEditorsKey, jsonEncode(editors));
|
|
}
|
|
|
|
hoverShow = List.filled(projects.length, false, growable: true);
|
|
print("loaded data");
|
|
importedData = true;
|
|
notifyListeners();
|
|
});
|
|
}
|
|
|
|
void saveProjectState() {
|
|
var arst = projects.map((a) => a.toJson()).toList();
|
|
prefs.setString(kProjectsKey, jsonEncode(arst));
|
|
}
|
|
|
|
void saveEditorState() {
|
|
var arst = editors.map((a) => a.toJson()).toList();
|
|
prefs.setString(kEditorsKey, jsonEncode(arst));
|
|
}
|
|
|
|
void addPrj(Project prj) {
|
|
projects.add(prj);
|
|
hoverShow.add(false);
|
|
saveProjectState();
|
|
notifyListeners();
|
|
}
|
|
|
|
void delPrj(int index) {
|
|
projects.removeAt(index);
|
|
hoverShow.removeAt(index);
|
|
saveProjectState();
|
|
notifyListeners();
|
|
}
|
|
|
|
List<Project> get lsPrj {
|
|
return projects;
|
|
}
|
|
|
|
int get lenPrj {
|
|
return projects.length;
|
|
}
|
|
|
|
Project nthPrj(int index) {
|
|
return projects[index];
|
|
}
|
|
|
|
void setHoverShow(int index, bool state) {
|
|
hoverShow[index] = state;
|
|
notifyListeners();
|
|
}
|
|
|
|
bool getHoverShow(int index) {
|
|
return hoverShow[index];
|
|
}
|
|
|
|
// Editor List Management.
|
|
|
|
void addEdt(Editor edt) {
|
|
editors.add(edt);
|
|
saveEditorState();
|
|
notifyListeners();
|
|
}
|
|
|
|
void delEdt(int index) {
|
|
editors.removeAt(index);
|
|
saveEditorState();
|
|
notifyListeners();
|
|
}
|
|
|
|
int get lenEdt {
|
|
return editors.length;
|
|
}
|
|
|
|
Editor nthEdt(int index) {
|
|
return editors[index];
|
|
}
|
|
}
|