Vaani/lib/framework.dart

34 lines
1.4 KiB
Dart
Raw Normal View History

2025-11-19 17:43:04 +08:00
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:vaani/features/downloads/providers/download_manager.dart';
import 'package:vaani/features/playback_reporting/providers/playback_reporter_provider.dart';
import 'package:vaani/features/shake_detector/shake_detector_provider.dart';
2025-12-04 16:55:25 +08:00
import 'package:vaani/features/skip_start_end/providers/skip_start_end_provider.dart';
2025-11-19 17:43:04 +08:00
import 'package:vaani/features/sleep_timer/providers/sleep_timer_provider.dart';
import 'package:vaani/globals.dart';
import 'package:vaani/shared/utils/helper.dart';
2025-12-04 16:55:25 +08:00
import 'package:vaani/shared/widgets/tray_manager.dart';
2025-11-19 17:43:04 +08:00
class Framework extends ConsumerWidget {
2025-11-19 17:43:04 +08:00
final Widget child;
const Framework(this.child, {super.key});
2025-11-19 17:43:04 +08:00
@override
Widget build(BuildContext context, WidgetRef ref) {
2025-11-19 17:43:04 +08:00
// Eagerly initialize providers by watching them.
// By using "watch", the provider will stay alive and not be disposed.
try {
2025-11-22 15:54:29 +08:00
ref.watch(simpleDownloadManagerProvider);
if (Helper.isAndroid()) ref.watch(shakeDetectorProvider);
2025-11-23 01:25:57 +08:00
ref.watch(sleepTimerProvider);
2025-11-22 15:54:29 +08:00
ref.watch(skipStartEndProvider);
2025-11-23 01:25:57 +08:00
ref.watch(playbackReporterProvider);
2025-11-19 17:43:04 +08:00
} catch (e) {
debugPrintStack(stackTrace: StackTrace.current, label: e.toString());
appLogger.severe(e.toString());
}
2025-12-04 16:55:25 +08:00
if (Helper.isDesktop()) return TrayManager(child);
return child;
2025-11-19 17:43:04 +08:00
}
}