import 'package:device_preview/device_preview.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:intl/date_symbol_data_local.dart'; import 'package:intl/intl.dart'; import 'package:niogu_app/core/router/app_route.dart'; import 'package:niogu_app/core/services/working_service.dart'; import 'package:sizer/sizer.dart'; import 'package:workmanager/workmanager.dart'; Future main(List args) async { WidgetsFlutterBinding.ensureInitialized(); await Workmanager().initialize(callbackDispatcher); await Workmanager().registerPeriodicTask( "niogu-bg-sync", "syncTask", frequency: const Duration(minutes: 15), constraints: Constraints(networkType: NetworkType.connected), ); await initializeDateFormatting('id_ID', null); Intl.defaultLocale = "id_ID"; await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); runApp(const MainApp()); } class MainApp extends StatelessWidget { const MainApp({super.key}); @override Widget build(BuildContext context) { return ProviderScope( child: DevicePreview( enabled: false, builder: (context) { return Sizer( builder: (context, orientation, deviceType) { return MaterialApp.router( title: "Niogu", localizationsDelegates: const [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: const [ const Locale('id', 'ID'), const Locale('en', 'US'), ], locale: const Locale('id', 'ID'), debugShowCheckedModeBanner: false, theme: ThemeData(fontFamily: "Poppins", useMaterial3: true), builder: (context, child) { final mediaQueryData = MediaQuery.of(context); final scale = mediaQueryData.textScaler.clamp( minScaleFactor: 1.0, maxScaleFactor: 1.1, ); return MediaQuery( data: mediaQueryData.copyWith(textScaler: scale), child: child!, ); }, routerConfig: AppRoute.router, ); }, ); }, ), ); } }