mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 16:05:18 +00:00
80 lines
2.7 KiB
Dart
80 lines
2.7 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:bitsdojo_window/bitsdojo_window.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
|
import 'package:go_router/go_router.dart';
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:hotkey_manager/hotkey_manager.dart';
|
|
import 'package:spotube/models/GoRouteDeclarations.dart';
|
|
import 'package:spotube/models/Logger.dart';
|
|
import 'package:spotube/provider/AudioPlayer.dart';
|
|
import 'package:spotube/provider/UserPreferences.dart';
|
|
import 'package:spotube/provider/YouTube.dart';
|
|
import 'package:just_audio_background/just_audio_background.dart';
|
|
import 'package:spotube/themes/dark-theme.dart';
|
|
import 'package:spotube/themes/light-theme.dart';
|
|
|
|
void main() async {
|
|
if (Platform.isAndroid || Platform.isIOS) {
|
|
await JustAudioBackground.init(
|
|
androidNotificationChannelId: 'oss.krtirtho.Spotube',
|
|
androidNotificationChannelName: 'Spotube',
|
|
androidNotificationOngoing: true,
|
|
);
|
|
} else {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
await hotKeyManager.unregisterAll();
|
|
doWhenWindowReady(() {
|
|
appWindow.minSize =
|
|
Size(Platform.isAndroid || Platform.isIOS ? 280 : 359, 700);
|
|
appWindow.size = const Size(900, 700);
|
|
appWindow.alignment = Alignment.center;
|
|
appWindow.maximize();
|
|
appWindow.title = "Spotube";
|
|
appWindow.show();
|
|
});
|
|
}
|
|
runApp(ProviderScope(child: MyApp()));
|
|
}
|
|
|
|
class MyApp extends HookConsumerWidget {
|
|
final GoRouter _router = createGoRouter();
|
|
final logger = getLogger(MyApp);
|
|
|
|
MyApp({Key? key}) : super(key: key);
|
|
@override
|
|
Widget build(BuildContext context, ref) {
|
|
final themeMode =
|
|
ref.watch(userPreferencesProvider.select((s) => s.themeMode));
|
|
final accentMaterialColor =
|
|
ref.watch(userPreferencesProvider.select((s) => s.accentColorScheme));
|
|
final backgroundMaterialColor = ref
|
|
.watch(userPreferencesProvider.select((s) => s.backgroundColorScheme));
|
|
final player = ref.watch(audioPlayerProvider);
|
|
final youtube = ref.watch(youtubeProvider);
|
|
useEffect(() {
|
|
return () {
|
|
player.dispose();
|
|
youtube.close();
|
|
};
|
|
}, []);
|
|
|
|
return MaterialApp.router(
|
|
routeInformationParser: _router.routeInformationParser,
|
|
routerDelegate: _router.routerDelegate,
|
|
debugShowCheckedModeBanner: false,
|
|
title: 'Spotube',
|
|
theme: lightTheme(
|
|
accentMaterialColor: accentMaterialColor,
|
|
backgroundMaterialColor: backgroundMaterialColor,
|
|
),
|
|
darkTheme: darkTheme(
|
|
accentMaterialColor: accentMaterialColor,
|
|
backgroundMaterialColor: backgroundMaterialColor,
|
|
),
|
|
themeMode: themeMode,
|
|
);
|
|
}
|
|
}
|