import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/services/permission/permission_service.dart'; import 'package:diplomaticquarterapp/theme/theme_notifier.dart'; import 'package:diplomaticquarterapp/theme/theme_value.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; import 'package:provider/provider.dart'; import 'package:screen/screen.dart'; class GeneralSettings extends StatefulWidget { @override _GeneralSettings createState() => _GeneralSettings(); } class _GeneralSettings extends State with TickerProviderStateMixin { var themeNotifier; int blindValue = 0; bool vibration = false; bool accsibility = false; bool camera = false; bool location = false; var sharedPref = new AppSharedPreferences(); var permission = new PermissionService(); LocationPermission locationPermission; var mediaQueryData; @override void initState() { this.getValues(); super.initState(); } Widget build(BuildContext context) { mediaQueryData = MediaQuery.of(context); themeNotifier = Provider.of(context); return Container( child: ListView(scrollDirection: Axis.vertical, children: [ Container( color: Theme.of(context).scaffoldBackgroundColor, padding: EdgeInsets.all(10), child: AppText( TranslationBase.of(context).modes, fontWeight: FontWeight.bold, ), ), Container( color: Theme.of(context).scaffoldBackgroundColor, padding: EdgeInsets.all(10), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppText(TranslationBase.of(context).vibration), Switch( value: vibration, onChanged: (value) { setState(() { vibration = value; }); setVibration(value); }, activeTrackColor: Colors.lightGreenAccent, activeColor: Colors.green, ) ], )), Container( color: Theme.of(context).scaffoldBackgroundColor, padding: EdgeInsets.all(10), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppText(TranslationBase.of(context).accessibility), Switch( value: accsibility, onChanged: (value) { setState(() { accsibility = value; }); }, activeTrackColor: Colors.lightGreenAccent, activeColor: Colors.green, ) ], )), Container( color: Theme.of(context).scaffoldBackgroundColor, padding: EdgeInsets.all(10), child: AppText( TranslationBase.of(context).blindMode, fontWeight: FontWeight.bold, ), ), new Container( color: Theme.of(context).scaffoldBackgroundColor, padding: EdgeInsets.all(8.0), child: new Column( mainAxisAlignment: MainAxisAlignment.center, children: [ new Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ new Text( TranslationBase.of(context).offTheme, style: new TextStyle(fontSize: 16.0), ), Radio( value: 0, groupValue: blindValue, onChanged: (value) { setState(() => {this.blindValue = value}); setTheme(value); }, ), ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ new Text( TranslationBase.of(context).invertTheme, style: new TextStyle( fontSize: 16.0, ), ), new Radio( value: 1, groupValue: blindValue, onChanged: (value) { setState(() => {this.blindValue = value}); setTheme(value); }, ) ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ new Text( TranslationBase.of(context).dimTheme, style: new TextStyle(fontSize: 16.0), ), new Radio( value: 2, groupValue: blindValue, onChanged: (value) { setState(() => {this.blindValue = value}); setTheme(value); }, ), ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ new Text( TranslationBase.of(context).bwTheme, style: new TextStyle(fontSize: 16.0), ), new Radio( value: 3, groupValue: blindValue, onChanged: (value) { setState(() => {this.blindValue = value}); setTheme(value); }, ), ], ), ], ) ])), Container( color: Theme.of(context).scaffoldBackgroundColor, padding: EdgeInsets.all(10), child: AppText( TranslationBase.of(context).permissions, fontWeight: FontWeight.bold, ), ), Container( color: Theme.of(context).scaffoldBackgroundColor, padding: EdgeInsets.all(10), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppText(TranslationBase.of(context).cameraPermission), Switch( value: camera, onChanged: (value) { setState(() { camera = value; }); this.permission.openSettings(); }, activeTrackColor: Colors.lightGreenAccent, activeColor: Colors.green, ) ], )), Container( color: Theme.of(context).scaffoldBackgroundColor, padding: EdgeInsets.all(10), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppText(TranslationBase.of(context).locationPermission), Switch( value: location, onChanged: (value) { if (value == true) { Navigator.pop(context); this.setLocationPermission(); } else { Geolocator.openLocationSettings(); } }, activeTrackColor: Colors.lightGreenAccent, activeColor: Colors.green, ) ], )) ])); } setLocationPermission() async { locationPermission = await Geolocator.checkPermission(); if (locationPermission == LocationPermission.denied) { locationPermission = await Geolocator.requestPermission(); if (locationPermission != LocationPermission.denied) { setState(() { location = true; }); } else { this.location = false; } } else { Geolocator.openLocationSettings(); this.location = true; } } setTheme(value) async { switch (value) { case 0: { themeNotifier.setTheme(await getTheme(value)); Screen.setBrightness(1.0); } break; case 1: { themeNotifier.setTheme(await getTheme(value)); } break; case 2: themeNotifier.setTheme(await getTheme(value)); Screen.setBrightness(0.01); break; case 3: { themeNotifier.setTheme(await getTheme(value)); Screen.setBrightness(1.0); } break; default: { themeNotifier.setTheme(await getTheme(value)); Screen.setBrightness(1.0); } break; } permission.setTheme(value); } setVibration(value) { permission.setVibrationPermission(value); } setAccisibility() { if (!accsibility) {} // permission.setVibrationPermission(value); } getValues() async { if (permission.isThemeEnabled() != null) { blindValue = permission.isThemeEnabled() == null ? 0 : permission.isThemeEnabled(); vibration = permission.isVibrationEnabled() == null ? false : permission.isVibrationEnabled(); // accsibility = mediaQueryData.accessibleNavigation; //setTheme(blindValue); } var camera = await this.permission.isCameraEnabled(); var location = await this.permission.isLocationEnabled(); setState(() { this.camera = camera; this.location = location; }); } getTheme(value) async { if (value == 1) { return invertThemes( fontName: Provider.of(context, listen: false).isArabic ? 'Cairo' : 'WorkSans'); } else if (value == 3) { return bwThemes( fontName: Provider.of(context, listen: false).isArabic ? 'Cairo' : 'WorkSans'); } else { return defaultTheme( fontName: Provider.of(context, listen: false).isArabic ? 'Cairo' : 'WorkSans'); } } }