Add window service

This commit is contained in:
Ankit Mahato
2023-04-18 06:12:33 +05:30
parent f7f581ea9b
commit 44f97d3612
4 changed files with 45 additions and 31 deletions

View File

@ -13,6 +13,13 @@ final kColorTransparentState =
MaterialStateProperty.all<Color>(Colors.transparent);
const kColorTransparent = Colors.transparent;
const kWindowTitle = "API Dash";
const kMinWindowSize = Size(900, 600);
const kMinInitialWindowWidth = 1200.0;
const kMinInitialWindowHeight = 800.0;
const kColorSchemeSeed = Colors.blue;
final kFontFamily = GoogleFonts.openSans().fontFamily;
final kFontFamilyFallback = (!kIsWeb && (Platform.isIOS || Platform.isMacOS))
? null
: <String>[GoogleFonts.notoColorEmoji().fontFamily!];

View File

@ -1,38 +1,14 @@
import 'dart:io';
import 'dart:math' as math;
import 'package:apidash/providers/providers.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.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 'providers/providers.dart';
import 'services/services.dart';
import 'screens/screens.dart';
import 'consts.dart' show kFontFamilyFallback;
import 'consts.dart' show kFontFamily, kFontFamilyFallback, kColorSchemeSeed;
void main() async {
WidgetsFlutterBinding.ensureInitialized();
if (!kIsWeb) {
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);
window_size.setWindowTitle("API Dash");
}
});
}
}
await setupInitialWindow();
await openBoxes();
GoogleFonts.config.allowRuntimeFetching = false;
runApp(
@ -51,16 +27,16 @@ class App extends ConsumerWidget {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
fontFamily: GoogleFonts.openSans().fontFamily,
fontFamily: kFontFamily,
fontFamilyFallback: kFontFamilyFallback,
colorSchemeSeed: Colors.blue,
colorSchemeSeed: kColorSchemeSeed,
useMaterial3: true,
brightness: Brightness.light,
),
darkTheme: ThemeData(
fontFamily: GoogleFonts.openSans().fontFamily,
fontFamily: kFontFamily,
fontFamilyFallback: kFontFamilyFallback,
colorSchemeSeed: Colors.blue,
colorSchemeSeed: kColorSchemeSeed,
useMaterial3: true,
brightness: Brightness.dark,
),

View File

@ -1,2 +1,3 @@
export 'http_service.dart';
export 'hive_services.dart';
export 'window_services.dart';

View File

@ -0,0 +1,30 @@
import 'dart:io';
import 'dart:math' as math;
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
import 'package:window_size/window_size.dart' as window_size;
import '../consts.dart';
Future<void> setupInitialWindow() async {
if (!kIsWeb) {
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(), kMinInitialWindowWidth);
final height = math.max((screenFrame.height / 2).roundToDouble(),
kMinInitialWindowHeight);
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(kMinWindowSize);
window_size.setWindowMaxSize(Size.infinite);
window_size.setWindowTitle(kWindowTitle);
}
});
}
}
}