import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../../../core/constants/translation_keys.dart'; import '../../../custom_widgets/bottom_sheet.dart'; import '../../../custom_widgets/custom_app_bar.dart'; import '../../../custom_widgets/custom_toasty.dart'; import '../../../res/app_colors.dart'; import '../../../routes/app_pages.dart'; import '../controllers/app_setting_controller.dart'; import 'model/Language.dart'; class AppSettingView extends GetView { const AppSettingView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( appBar: DashBoardAppBar( title: TranslationKeys.makeTranslation(TranslationKeys.textAppSettingTitle), onBackButtonPressed: () { Get.back(); }, ), body: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( flex: 0, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 5), child: InkWell( onTap: () { showBottomSheet(context, "FROM_ACCOUNT", controller); }, child: Container( height: 50, margin: const EdgeInsets.only(top: 10), decoration: BoxDecoration( border: Border.all(color: AppColors.colorGrey300), borderRadius: BorderRadius.circular(8), ), child: Row( children: [ const Padding( padding: EdgeInsets.all(6.0), child: Card( elevation: 0.0, color: AppColors.colorGrey200, shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(22))), child: CircleAvatar( backgroundColor: AppColors.colorGrey200, minRadius: 15, child: Icon(Icons.language, color: AppColors.colorPrimary, size: 18), ), ), ), Text(TranslationKeys.makeTranslation(TranslationKeys.textLanguagesTitle), style: Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: 14, fontWeight: FontWeight.w400)), const Spacer(), const Padding( padding: EdgeInsets.all(16.0), child: Icon(Icons.arrow_forward_ios_outlined, size: 15, color: AppColors.colorGrey700), ), ], ), ), ), ), ), Visibility( // visible: SessionCache.instance.fingerPrintController.isFingerprintSupported.value, child: Expanded( flex: 0, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 5), child: InkWell( onTap: () { // showBottomSheet( // context, "FROM_ACCOUNT", controller); }, child: Container( height: 50, margin: const EdgeInsets.only(top: 10), decoration: BoxDecoration( border: Border.all(color: AppColors.colorGrey300), borderRadius: BorderRadius.circular(8), ), child: Row( children: [ const Padding( padding: EdgeInsets.all(6.0), child: Card( elevation: 0.0, color: AppColors.colorGrey200, shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(22))), child: CircleAvatar( backgroundColor: AppColors.colorGrey200, minRadius: 15, child: Icon( Icons.fingerprint_outlined, color: AppColors.colorPrimary, size: 15, ), ), ), ), Text(TranslationKeys.makeTranslation(TranslationKeys.textFingerPrintTitle), style: Theme.of(context).textTheme.titleSmall?.copyWith(fontWeight: FontWeight.w400)), const Spacer(), // Obx(() { // return Switch( // value: SessionCache.instance.fingerPrintController.isFingerprintSupported.value && SessionCache.instance.fingerPrintController.isFingerPrintExistInDB.value, // onChanged: (bool value) { // if (value) { // SessionCache.instance.fingerPrintController.authenticate(null, true); // } else { // print("---------------->>>"); // SessionCache.instance.fingerPrintController.clearFromDB(); // } // }, // activeColor: AppColors.colorButton, // ); // }), ], ), ), ), ), ), ), Expanded( flex: 0, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 5), child: InkWell( onTap: () { Get.toNamed(Routes.DAIL_TRANSACTION_LIMIT); }, child: Container( height: 50, margin: const EdgeInsets.only(top: 0), decoration: BoxDecoration( border: Border.all(color: AppColors.colorGrey300), borderRadius: BorderRadius.circular(8), ), child: Row( children: [ const Padding( padding: EdgeInsets.all(6.0), child: Card( elevation: 0.0, color: AppColors.colorGrey200, shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(22))), child: CircleAvatar( backgroundColor: AppColors.colorGrey200, minRadius: 15, child: Icon( Icons.monetization_on_outlined, color: AppColors.colorPrimary, size: 15, ), ), ), ), Text(TranslationKeys.makeTranslation(TranslationKeys.textDailyTransactionLimit), style: Theme.of(context).textTheme.titleSmall?.copyWith(fontWeight: FontWeight.w400)), const Spacer(), const Padding( padding: EdgeInsets.all(16.0), child: Icon( Icons.arrow_forward_ios_outlined, size: 15, color: AppColors.colorGrey700, ), ), ], ), ), ), ), ), Expanded( flex: 0, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 5), child: InkWell( onTap: () { Get.toNamed(Routes.QR_SETTING); }, child: Container( height: 50, margin: const EdgeInsets.only(top: 0), decoration: BoxDecoration( border: Border.all(color: AppColors.colorGrey300), borderRadius: BorderRadius.circular(8), ), child: Row( children: [ const Padding( padding: EdgeInsets.all(6.0), child: Card( elevation: 0.0, color: AppColors.colorGrey200, shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(22))), child: CircleAvatar( backgroundColor: AppColors.colorGrey200, minRadius: 15, child: Icon( Icons.qr_code, color: AppColors.colorPrimary, size: 15, ), ), ), ), Text(TranslationKeys.makeTranslation(TranslationKeys.textQRSetting), style: Theme.of(context).textTheme.titleSmall?.copyWith(fontWeight: FontWeight.w400)), const Spacer(), const Padding( padding: EdgeInsets.all(16.0), child: Icon( Icons.arrow_forward_ios_outlined, size: 15, color: AppColors.colorGrey700, ), ), ], ), ), ), ), ), Expanded( flex: 0, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 5), child: InkWell( onTap: () { Get.toNamed(Routes.CHANGE_TRANSACTION_PIN); }, child: Container( height: 50, margin: const EdgeInsets.only(top: 0), decoration: BoxDecoration( border: Border.all(color: AppColors.colorGrey300), borderRadius: BorderRadius.circular(8), ), child: Row( children: [ const Padding( padding: EdgeInsets.all(6.0), child: Card( elevation: 0.0, color: AppColors.colorGrey200, shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(22))), child: CircleAvatar( backgroundColor: AppColors.colorGrey200, minRadius: 15, child: Icon( Icons.password, color: AppColors.colorPrimary, size: 15, ), ), ), ), Text(TranslationKeys.makeTranslation(TranslationKeys.textChangeTransactionPin), style: Theme.of(context).textTheme.titleSmall?.copyWith(fontWeight: FontWeight.w400)), const Spacer(), const Padding( padding: EdgeInsets.all(16.0), child: Icon( Icons.arrow_forward_ios_outlined, size: 15, color: AppColors.colorGrey700, ), ), ], ), ), ), ), ), Expanded( flex: 0, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 5), child: InkWell( onTap: () { Toasty.success("Transaction Pin Already Generate"); // Get.toNamed(Routes.CREATE_TRANSACTION_PIN); }, child: Container( height: 50, margin: const EdgeInsets.only(top: 0), decoration: BoxDecoration( border: Border.all(color: AppColors.colorGrey300), borderRadius: BorderRadius.circular(8), ), child: Row( children: [ const Padding( padding: EdgeInsets.all(6.0), child: Card( elevation: 0.0, color: AppColors.colorGrey200, shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(22))), child: CircleAvatar( backgroundColor: AppColors.colorGrey200, minRadius: 15, child: Icon( Icons.password, color: AppColors.colorPrimary, size: 15, ), ), ), ), Text(TranslationKeys.makeTranslation(TranslationKeys.textCreateTransactionPin), style: Theme.of(context).textTheme.titleSmall?.copyWith(fontWeight: FontWeight.w400)), const Spacer(), const Padding( padding: EdgeInsets.all(16.0), child: Icon( Icons.arrow_forward_ios_outlined, size: 15, color: AppColors.colorGrey700, ), ), ], ), ), ), ), ), Expanded( flex: 0, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 5), child: InkWell( onTap: () { controller.showLogoutDialog(context); }, child: Container( height: 50, margin: const EdgeInsets.only(top: 0), decoration: BoxDecoration( border: Border.all(color: AppColors.colorGrey300), borderRadius: BorderRadius.circular(8), ), child: Row( children: [ const Padding( padding: EdgeInsets.all(6.0), child: Card( elevation: 0.0, color: AppColors.colorGrey200, shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(22))), child: CircleAvatar( backgroundColor: AppColors.colorGrey200, minRadius: 15, child: Icon( Icons.logout, color: AppColors.colorPrimary, size: 15, ), ), ), ), Text(TranslationKeys.makeTranslation(TranslationKeys.textLogOut), style: Theme.of(context).textTheme.titleSmall?.copyWith(fontWeight: FontWeight.w400)), const Spacer(), const Padding( padding: EdgeInsets.all(16.0), child: Icon( Icons.arrow_forward_ios_outlined, size: 15, color: AppColors.colorGrey700, ), ), ], ), ), ), ), ), const Expanded(flex: 0, child: SizedBox(height: 15)), ], ), ), ); } /// Change Language Function For Search Bar void showBottomSheet(BuildContext context, String accountType, AppSettingController controller) { // List options = []; for (int i = 0; i < Languages.supportedLanguages.length; i++) { // Languages language = Languages.supportedLanguages[i]; options.add(OptionData.withData(language.lable, "", language)); // } Get.bottomSheet( Container( decoration: BoxDecoration(color: Colors.white, border: Border.all(color: AppColors.colorGrey800, width: 1), borderRadius: const BorderRadius.only(topLeft: Radius.circular(30), topRight: Radius.circular(30))), margin: const EdgeInsets.only(left: 20, right: 20), child: DialogDesign(options, (selectedOption) { Languages language = selectedOption.dataObject as Languages; print("===========$language"); controller.updateLanguage(language.locale); }), ), backgroundColor: Colors.transparent, isScrollControlled: true, shape: const RoundedRectangleBorder(borderRadius: BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10))), ); } } class DialogDesign extends StatelessWidget { List options = []; Function(OptionData) onSelect; DialogDesign(this.options, this.onSelect); @override Widget build(BuildContext context) { return Container( padding: const EdgeInsets.all(16.0), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( TranslationKeys.makeTranslation(TranslationKeys.textSelectYourOption), style: Theme.of(context).textTheme.titleLarge?.copyWith(color: AppColors.titleColor, fontSize: 12, fontWeight: FontWeight.w600), ), InkWell( onTap: () { Get.back(); // Close the bottom sheet using Get }, child: const CircleAvatar( radius: 12.5, backgroundColor: Colors.transparent, child: Icon( Icons.close, size: 16.0, color: Colors.red, ), ), ), ], ), const SizedBox(height: 10.0), FilterableBottomSheet(options: options, onSelect: onSelect), ], ), ); } }