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';
|
2025-11-28 17:05:35 +08:00
|
|
|
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';
|
2025-11-28 17:05:35 +08:00
|
|
|
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
|
|
|
|
2025-11-28 17:05:35 +08:00
|
|
|
class Framework extends ConsumerWidget {
|
2025-11-19 17:43:04 +08:00
|
|
|
final Widget child;
|
|
|
|
|
|
2025-11-28 17:05:35 +08:00
|
|
|
const Framework(this.child, {super.key});
|
2025-11-19 17:43:04 +08:00
|
|
|
@override
|
2025-11-28 17:05:35 +08:00
|
|
|
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-12-09 17:26:04 +08:00
|
|
|
ref.watch(simpleDownloadManagerProvider);
|
|
|
|
|
if (Helper.isAndroid()) ref.watch(shakeDetectorProvider);
|
|
|
|
|
ref.watch(sleepTimerProvider);
|
2025-12-08 17:54:08 +08:00
|
|
|
// ref.watch(skipStartEndProvider);
|
2025-12-09 17:26:04 +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);
|
2025-11-28 17:05:35 +08:00
|
|
|
return child;
|
2025-11-19 17:43:04 +08:00
|
|
|
}
|
|
|
|
|
}
|