diff --git a/lib/main.dart b/lib/main.dart index 77018fba..46f147e7 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,15 +1,29 @@ -import 'package:flutter/foundation.dart'; +import 'dart:io'; +import 'dart:math' as math; import 'package:flutter/material.dart'; -import 'package:desktop_window/desktop_window.dart'; +import 'package:window_size/window_size.dart' as window_size; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; import 'screens/screens.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); - if (!kIsWeb) { - await DesktopWindow.setWindowSize(const Size(1400, 800)); - await DesktopWindow.setMinWindowSize(const Size(1200, 800)); + if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) { + window_size.getWindowInfo().then((window) { + final screen = window.screen; + if (screen != null) { + final screenFrame = screen.visibleFrame; + final width = math.max((screenFrame.width / 2).roundToDouble(), 1200.0); + final height = + math.max((screenFrame.height / 2).roundToDouble(), 800.0); + final left = ((screenFrame.width - width) / 2).roundToDouble(); + final top = ((screenFrame.height - height) / 3).roundToDouble(); + final frame = Rect.fromLTWH(left, top, width, height); + window_size.setWindowFrame(frame); + window_size.setWindowMinSize(const Size(900, 600)); + window_size.setWindowMaxSize(Size.infinite); + } + }); } runApp( const ProviderScope( diff --git a/lib/screens/home_page/home_page.dart b/lib/screens/home_page/home_page.dart index 13dee374..acfee346 100644 --- a/lib/screens/home_page/home_page.dart +++ b/lib/screens/home_page/home_page.dart @@ -14,7 +14,7 @@ class HomePage extends StatefulWidget { class HomePageState extends State { final MultiSplitViewController _controller = MultiSplitViewController( areas: [ - Area(size: 300, minimalSize: 200), + Area(size: 250, minimalSize: 200), Area(minimalWeight: 0.7), ], ); diff --git a/pubspec.lock b/pubspec.lock index d54c180e..8ea32c10 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -485,6 +485,15 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.3" + window_size: + dependency: "direct main" + description: + path: "plugins/window_size" + ref: HEAD + resolved-ref: "6c66ad23ee79749f30a8eece542cf54eaf157ed8" + url: "https://github.com/google/flutter-desktop-embedding.git" + source: git + version: "0.1.0" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 07138359..052ddf65 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,6 +23,10 @@ dependencies: string_scanner: ^1.2.0 xml: ^6.2.2 jinja: ^0.4.2 + window_size: + git: + url: https://github.com/google/flutter-desktop-embedding.git + path: plugins/window_size dev_dependencies: flutter_test: