import 'package:flutter/material.dart'; import 'package:flutter_advanced_switch/flutter_advanced_switch.dart'; import 'package:local_auth/local_auth.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import '../common_widgets/default_app_bar.dart'; class SettingsPage extends StatefulWidget { static const id = "/settings_page"; const SettingsPage({Key key}) : super(key: key); @override State createState() => _SettingsPageState(); } class _SettingsPageState extends State { ValueNotifier langController, themeController; SettingProvider _settingProvider; @override void dispose() { super.dispose(); langController.dispose(); themeController.dispose(); } @override Widget build(BuildContext context) { _settingProvider ??= Provider.of(context, listen: false); langController ??= ValueNotifier(_settingProvider.language == "ar") ..addListener(() async { /// TODO : uncomment the below lines to support the another language await _settingProvider.setLanguage(_settingProvider.language == "ar" ? "en" : "ar"); langController.value = _settingProvider.language == "ar"; }); themeController ??= ValueNotifier(_settingProvider.theme == "light") ..addListener(() async { await _settingProvider.setDarkTheme(_settingProvider.theme == "light"); themeController.value = _settingProvider.theme == "light"; }); // // _settingProvider.auth.getAvailableBiometrics().then((value) { // value.forEach((element) => print(element.name)); // print("face:${value.contains(BiometricType.face)}"); // print("bio:${value.contains(BiometricType.fingerprint)}"); // print("iris:${value.contains(BiometricType.iris)}"); // print("weak:${value.contains(BiometricType.weak)}"); // print("strong:${value.contains(BiometricType.strong)}"); // // _settingProvider.auth.canCheckBiometrics.then((value) => print(value)); // }); return Scaffold( appBar: DefaultAppBar(title: context.translation.settings), body: Column( mainAxisSize: MainAxisSize.min, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ context.translation.arabic.heading5(context), AdvancedSwitch( controller: langController, activeColor: AppColor.green50.withOpacity(0.5), inactiveColor: AppColor.neutral10, thumb: CircleAvatar(backgroundColor: _settingProvider.language == "ar" ? AppColor.green50 : AppColor.neutral20), borderRadius: const BorderRadius.all(Radius.circular(30)), width: 42.toScreenWidth, height: 24.toScreenHeight, /// TODO : remove the below attribute to enable the switch //enabled: false, disabledOpacity: 1, ), ], ), 16.height, const Divider().defaultStyle(context), 16.height, Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ context.translation.lightTheme.heading5(context), AdvancedSwitch( controller: themeController, activeColor: AppColor.green50.withOpacity(0.5), inactiveColor: AppColor.neutral10, thumb: CircleAvatar(backgroundColor: _settingProvider.theme == "light" ? AppColor.green50 : AppColor.neutral20), borderRadius: const BorderRadius.all(Radius.circular(30)), width: 42.toScreenWidth, height: 24.toScreenHeight, disabledOpacity: 1, ), ], ), // 16.height, // const Divider().defaultStyle(context), // 16.height, // FutureBuilder( // future: _settingProvider.auth.isDeviceSupported(), // builder: (cxt, snapshot) { // bool isDeviceSupported = false; // if (snapshot.hasData) { // isDeviceSupported = snapshot.data; // } // // if (!isDeviceSupported) { // return Text("Your device did not support Fingerprint/Face ID.", style: AppTextStyles.tinyFont.copyWith(fontSize: 11, color: Colors.red)); // } // // return Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: [ // context.translation.lightTheme.heading5(context), // AdvancedSwitch( // controller: themeController, // activeColor: AppColor.green50.withOpacity(0.5), // inactiveColor: AppColor.neutral10, // thumb: CircleAvatar(backgroundColor: _settingProvider.theme == "light" ? AppColor.green50 : AppColor.neutral20), // borderRadius: const BorderRadius.all(Radius.circular(30)), // width: 42.toScreenWidth, // height: 24.toScreenHeight, // disabledOpacity: 1, // ), // ], // ); // }), ], ).toShadowContainer(context).paddingAll(16), ); } }