mirror of
https://github.com/foss42/apidash.git
synced 2025-06-17 11:54:51 +08:00
Add window service
This commit is contained in:
@ -13,6 +13,13 @@ final kColorTransparentState =
|
|||||||
MaterialStateProperty.all<Color>(Colors.transparent);
|
MaterialStateProperty.all<Color>(Colors.transparent);
|
||||||
const kColorTransparent = 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))
|
final kFontFamilyFallback = (!kIsWeb && (Platform.isIOS || Platform.isMacOS))
|
||||||
? null
|
? null
|
||||||
: <String>[GoogleFonts.notoColorEmoji().fontFamily!];
|
: <String>[GoogleFonts.notoColorEmoji().fontFamily!];
|
||||||
|
@ -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:flutter/material.dart';
|
||||||
import 'package:window_size/window_size.dart' as window_size;
|
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:google_fonts/google_fonts.dart';
|
import 'package:google_fonts/google_fonts.dart';
|
||||||
|
import 'providers/providers.dart';
|
||||||
import 'services/services.dart';
|
import 'services/services.dart';
|
||||||
import 'screens/screens.dart';
|
import 'screens/screens.dart';
|
||||||
import 'consts.dart' show kFontFamilyFallback;
|
import 'consts.dart' show kFontFamily, kFontFamilyFallback, kColorSchemeSeed;
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
if (!kIsWeb) {
|
await setupInitialWindow();
|
||||||
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 openBoxes();
|
await openBoxes();
|
||||||
GoogleFonts.config.allowRuntimeFetching = false;
|
GoogleFonts.config.allowRuntimeFetching = false;
|
||||||
runApp(
|
runApp(
|
||||||
@ -51,16 +27,16 @@ class App extends ConsumerWidget {
|
|||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
debugShowCheckedModeBanner: false,
|
debugShowCheckedModeBanner: false,
|
||||||
theme: ThemeData(
|
theme: ThemeData(
|
||||||
fontFamily: GoogleFonts.openSans().fontFamily,
|
fontFamily: kFontFamily,
|
||||||
fontFamilyFallback: kFontFamilyFallback,
|
fontFamilyFallback: kFontFamilyFallback,
|
||||||
colorSchemeSeed: Colors.blue,
|
colorSchemeSeed: kColorSchemeSeed,
|
||||||
useMaterial3: true,
|
useMaterial3: true,
|
||||||
brightness: Brightness.light,
|
brightness: Brightness.light,
|
||||||
),
|
),
|
||||||
darkTheme: ThemeData(
|
darkTheme: ThemeData(
|
||||||
fontFamily: GoogleFonts.openSans().fontFamily,
|
fontFamily: kFontFamily,
|
||||||
fontFamilyFallback: kFontFamilyFallback,
|
fontFamilyFallback: kFontFamilyFallback,
|
||||||
colorSchemeSeed: Colors.blue,
|
colorSchemeSeed: kColorSchemeSeed,
|
||||||
useMaterial3: true,
|
useMaterial3: true,
|
||||||
brightness: Brightness.dark,
|
brightness: Brightness.dark,
|
||||||
),
|
),
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
export 'http_service.dart';
|
export 'http_service.dart';
|
||||||
export 'hive_services.dart';
|
export 'hive_services.dart';
|
||||||
|
export 'window_services.dart';
|
||||||
|
30
lib/services/window_services.dart
Normal file
30
lib/services/window_services.dart
Normal 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);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user