Future<bool> isAlertDialogShownPil() async { SharedPreferences prefs = await SharedPreferences.getInstance(); return prefs.getBool('isBattery') ?? false; } // Bu metot, AlertDialog'ı gösterdikten sonra local veritabanına kaydeder. Future<void> markAlertDialogAsShownPil() async { SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setBool('isBattery', true); } Future<void> showAlertDialogPil() async { await showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: Text('Ana Ekrana Widget Koyabilirsiniz.'), content: Text( 'Uygulama iconuna basık tutarak widget koyun.\nÇalışması için pil kısıtlama yok izni verin!' '\nAçılan ekrandan tüm uygulamalardan banka döviz kurları pro yu bulup pil izni kısıtlama yok izni(optimize etme) verin....'), actions: <Widget>[ TextButton( child: Text('Tamamdır'), onPressed: () async { await markAlertDialogAsShownPil(); Navigator.of(context).pop(); }, ), ], ); }, ); } Future<void> pilIzni() async { if(Platform.isAndroid){ bool alertDialogShown = await isAlertDialogShownPil(); if (!alertDialogShown) { // AlertDialog daha önce gösterilmediyse, göster ve ardından kaydet. await showAlertDialogPil(); OptimizeBattery.isIgnoringBatteryOptimizations().then((onValue) { if (onValue) { } else { OptimizeBattery.openBatteryOptimizationSettings(); } }); } else { // AlertDialog daha önce gösterildiyse başka bir şey yapabilirsiniz. print('AlertDialog zaten gösterildi.'); } } } |