import 'package:flutter/material.dart'; import 'package:quasar_jet/models/storage_model.dart'; import 'package:quasar_jet/quick_tile_dispatcher.dart' show quickTileDispatcher; import 'package:quasar_jet/services/vpn_service.dart'; import 'package:quasar_jet/views/main_view.dart'; import 'package:quasar_jet/theme.dart'; @pragma('vm:entry-point') void _keepQuickTileDispatcher() { quickTileDispatcher; } @pragma('vm:entry-point') Future quickTileMain() async { await quickTileDispatcher(); } Future main() async { WidgetsFlutterBinding.ensureInitialized(); final model = StorageModel(); await model.init(); final vpnService = VpnService(); runApp(MyApp(model: model, vpnService: vpnService)); } // ignore: must_be_immutable class MyApp extends StatefulWidget { MyApp({super.key, required this.model, required this.vpnService}); StorageModel model; VpnService vpnService; static _MyAppState of(BuildContext context) { return context.findAncestorStateOfType<_MyAppState>()!; } @override State createState() => _MyAppState(); } class _MyAppState extends State { ThemeMode _themeMode = ThemeMode.system; void changeTheme(ThemeMode mode) { setState(() { _themeMode = mode; }); } @override void dispose() { widget.vpnService.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return MaterialApp( theme: AppTheme.light, darkTheme: AppTheme.dark, themeMode: _themeMode, home: MainView(model: widget.model, vpnService: widget.vpnService), ); } }