import 'dart:io'; import 'package:bitsdojo_window/bitsdojo_window.dart'; import 'package:fikoyt_finans/apps/mesaici/servisler/fikoyt.mesaici.service.dart'; import 'package:fikoyt_finans/apps/mesaici/servisler/mesaici.background.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_acrylic/flutter_acrylic.dart'; import 'package:dio/dio.dart'; import 'package:dio_cookie_manager/dio_cookie_manager.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:get/get.dart'; import 'package:receive_intent/receive_intent.dart'; import 'package:timezone/data/latest.dart' as tz; // import 'package:get/get.dart'; import 'core/dio.dart'; import 'core/fiko_app.dart'; import 'core/fikoyt.service.dart'; class MyHttpOverrides extends HttpOverrides { @override HttpClient createHttpClient(SecurityContext? context) { return super.createHttpClient(context)..badCertificateCallback = (X509Certificate cert, String host, int port) => true; } } // Future loadWindowSizeAndPosition() async { // if (!(Platform.isWindows || Platform.isLinux || Platform.isMacOS)) return; // final prefs = await SharedPreferences.getInstance(); // double? x = prefs.getDouble('windowX'); // double? y = prefs.getDouble('windowY'); // double? width = prefs.getDouble('windowWidth'); // double? height = prefs.getDouble('windowHeight'); // if (x != null && y != null && width != null && height != null) { // appWindow // ..size = Size(width, height) // ..position = Offset(x, y); // } else { // // Eğer kayıt yoksa, pencereyi ekranın ortasında göster // const defaultWidth = 600.0; // const defaultHeight = 800.0; // final screenWidth = window.p1hysicalSize.width; // final screenHeight = window.physicalSize.height; // final centerX = (screenWidth - defaultWidth) / 2; // final centerY = (screenHeight - defaultHeight) / 2; // appWindow // ..size = const Size(defaultWidth, defaultHeight) // ..position = Offset(centerX, centerY); // } // } // Future loadWindowSizeAndPosition() async { // if (!(Platform.isWindows || Platform.isLinux || Platform.isMacOS)) return; // final prefs = await SharedPreferences.getInstance(); // double? x = prefs.getDouble('windowX'); // double? y = prefs.getDouble('windowY'); // double? width = prefs.getDouble('windowWidth'); // double? height = prefs.getDouble('windowHeight'); // // Ekran boyutlarını View.of(context) kullanarak al // final view = WidgetsBinding.instance.platformDispatcher.views.first; // final size = view.physicalSize; // final screenWidth = size.width / view.devicePixelRatio; // final screenHeight = size.height / view.devicePixelRatio; // print("$screenWidth $screenHeight $size"); // // Varsayılan boyutlar // const defaultWidth = 600.0; // const defaultHeight = 800.0; // if (x == null || y == null || width == null || height == null) { // // Eğer kayıt yoksa, pencereyi ekranın ortasında göster // final centerX = (screenWidth - defaultWidth) / 2; // final centerY = (screenHeight - defaultHeight) / 2; // appWindow // ..size = const Size(defaultWidth, defaultHeight) // ..position = Offset(centerX, centerY); // } else { // // Pencere boyutunu ayarla // width = width > screenWidth ? screenWidth : width; // height = height > screenHeight ? screenHeight : height; // // Pencere konumunu ekran sınırlarına taşımak için // x = x < 0 ? 0 : x; // y = y < 0 ? 0 : y; // if (x + width > screenWidth) x = screenWidth - width; // if (y + height > screenHeight) y = screenHeight - height; // appWindow // ..size = Size(width, height) // ..position = Offset(x, y); // } // } // RootIsolateToken'ı elde edin void main() async { WidgetsFlutterBinding.ensureInitialized(); await SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, ]); HttpOverrides.global = MyHttpOverrides(); dio?.interceptors.add(CookieManager(cookieJar)); tz.initializeTimeZones(); dio?.interceptors.add(InterceptorsWrapper(onRequest: (options, handler) { options.extra["withCredentials"] = true; return handler.next(options); })); SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge, overlays: [SystemUiOverlay.bottom]); await FikoYTService().init(); // await Workmanager().initialize(WorkManagerTaskFunc, // The top level function, aka callbackDispatcher // isInDebugMode: false // If enabled it will post a notification whenever the task is running. Handy for debugging tasks // ); // ignore: unused_local_variable FikoYTMesaiciService mesaiciServis = await Get.putAsync(() async => await FikoYTMesaiciService().init()); await initializeNotification(mesaiciServis); try { final receivedIntent = await ReceiveIntent.getInitialIntent(); // mesaiciServis.aktifIntent.value = receivedIntent; await mesaiciServis.intentMetodCalistir(receivedIntent); // Validate receivedIntent and warn the user, if it is not correct, // but keep in mind it could be `null` or "empty"(`receivedIntent.isNull`). } on PlatformException { // Handle exception } if (!kIsWeb) { if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) { await Window.initialize(); // await Window.setEffect( // effect: WindowEffect.transparent, // color: const Color.fromARGB(155, 0, 0, 0), // ); doWhenWindowReady(() async { // const initialSize = Size(600, 450); // appWindow.minSize = initialSize; // appWindow.size = initialSize;appWindow // appWindow.alignment = Alignment.center; // appWindow.maximize(); // await loadWindowSizeAndPosition(); appWindow.show(); }); runApp(FikoApp()); } else { runApp(FikoApp()); } } else { runApp(FikoApp()); } } initializeNotification(FikoYTMesaiciService mesaiciServis) async { const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('@mipmap/launcher_icon'); const InitializationSettings initializationSettings = InitializationSettings(android: initializationSettingsAndroid); FlutterLocalNotificationsPlugin().initialize(initializationSettings, onDidReceiveNotificationResponse: notificationTapBackground, onDidReceiveBackgroundNotificationResponse: notificationTapBackground); mesaiciServis.bildirimPaketi = FlutterLocalNotificationsPlugin(); var androidNotificationChannel = const AndroidNotificationChannel( "Genel", "Genel", description: "Cihazınızda Mesaiciye veya FikoYT'a Ait Genel Bildirimler", ); await mesaiciServis.bildirimPaketi?.resolvePlatformSpecificImplementation()?.createNotificationChannel(androidNotificationChannel); var androidNotificationChannel1 = const AndroidNotificationChannel( "İşe Başlama Bildirimleri", "İşe Başlama Bildirimleri", description: "İş Saatiniz Geldiğinde Eğer Karta Hala Giriş Yapılmamışsa Bildirimler Aracılığıyla Giriş Yapmanızı Sağlar.", ); await mesaiciServis.bildirimPaketi?.resolvePlatformSpecificImplementation()?.createNotificationChannel(androidNotificationChannel1); var androidNotificationChannel2 = const AndroidNotificationChannel( "İş Bitirme Bildirimleri", "İş Bitirme Bildirimleri", description: "İş Saatiniz Bittiğinde Eğer Karta Hala Çıkış Yapılmamışsa Bildirimler Aracılığıyla Çıkış Yapmanızı Sağlar.", ); await mesaiciServis.bildirimPaketi?.resolvePlatformSpecificImplementation()?.createNotificationChannel(androidNotificationChannel2); var androidNotificationChannel3 = const AndroidNotificationChannel( "Mola Başlangıç Bildirimleri", "Mola Başlangıç Bildirimleri", description: "Mola Saatiniz Başladığında Eğer Karta Hala Giriş Yapılmamışsa Bildirimler Aracılığıyla Giriş Yapmanızı Sağlar.", ); await mesaiciServis.bildirimPaketi?.resolvePlatformSpecificImplementation()?.createNotificationChannel(androidNotificationChannel3); var androidNotificationChannel4 = const AndroidNotificationChannel( "'Mola Bitiş Bildirimleri", "Mola Bitiş Bildirimleri", description: "Mola Saatiniz Bittiğinde Eğer Karta Hala Giriş Yapılmamışsa Bildirimler Aracılığıyla Giriş Yapmanızı Sağlar.", ); await mesaiciServis.bildirimPaketi?.resolvePlatformSpecificImplementation()?.createNotificationChannel(androidNotificationChannel4); var androidNotificationChannel5 = const AndroidNotificationChannel( "Arka Plan Bildirimi", "Arka Plan Bildirimi", description: "Arka Planda Çalışıp Çalışmadığını Görebilmeniz İçin Bildirim Kanalı", playSound: false, importance: Importance.min, enableVibration: false, ); await mesaiciServis.bildirimPaketi?.resolvePlatformSpecificImplementation()?.createNotificationChannel(androidNotificationChannel5); }