mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-12 03:14:09 +00:00
feat: save window size and resize on startup (#332)
This commit is contained in:
5 files changed
+81
-6
No files matched your search
@@ -143,4 +143,12 @@ class Util {
|
||||
}
|
||||
return completer.future;
|
||||
}
|
||||
|
||||
static void Function() debounce(Function() fn, int ms) {
|
||||
Timer? timer;
|
||||
return () {
|
||||
timer?.cancel();
|
||||
timer = Timer(Duration(milliseconds: ms), fn);
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class WindowState {
|
||||
late bool isMaximized;
|
||||
late double width;
|
||||
late double height;
|
||||
|
||||
WindowState(this.isMaximized, this.width, this.height);
|
||||
}
|
||||
|
||||
const String _windowStateIsMaximized = "window.isMaximized";
|
||||
const String _windowStateWidth = "window.width";
|
||||
const String _windowStateHeight = "window.height";
|
||||
|
||||
/// Save window state to storage.
|
||||
void saveState({bool? isMaximized, double? width, double? height}) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
if (isMaximized != null) {
|
||||
await prefs.setBool(_windowStateIsMaximized, isMaximized);
|
||||
}
|
||||
if (width != null) {
|
||||
await prefs.setDouble(_windowStateWidth, width);
|
||||
}
|
||||
if (height != null) {
|
||||
await prefs.setDouble(_windowStateHeight, height);
|
||||
}
|
||||
}
|
||||
|
||||
/// Load window state from storage.
|
||||
Future<WindowState> loadState() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
return WindowState(
|
||||
prefs.getBool(_windowStateIsMaximized) ?? false,
|
||||
prefs.getDouble(_windowStateWidth) ?? 800,
|
||||
prefs.getDouble(_windowStateHeight) ?? 600,
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user