diff --git a/l10n.yaml b/l10n.yaml new file mode 100644 index 0000000..4e6692e --- /dev/null +++ b/l10n.yaml @@ -0,0 +1,3 @@ +arb-dir: lib/l10n +template-arb-file: app_en.arb +output-localization-file: app_localizations.dart \ No newline at end of file diff --git a/lib/app.dart b/lib/app.dart index c71ab29..0aabad1 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -3,6 +3,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:kmobile/features/customer_info/screens/customer_info_screen.dart'; import 'package:kmobile/security/secure_storage.dart'; +import 'package:kmobile/src/preferences/preferences_cubit.dart'; import 'api/services/auth_service.dart'; import 'config/themes.dart'; import 'config/routes.dart'; @@ -35,6 +36,8 @@ class KMobile extends StatelessWidget { create: (_) => getIt(), ), // Add other Bloc/Cubit providers here + BlocProvider( + create: (_) => PreferencesCubit()), ], child: MaterialApp( title: 'Banking App', diff --git a/lib/features/dashboard/screens/dashboard_screen.dart b/lib/features/dashboard/screens/dashboard_screen.dart index 2b306d8..20eb8e8 100644 --- a/lib/features/dashboard/screens/dashboard_screen.dart +++ b/lib/features/dashboard/screens/dashboard_screen.dart @@ -7,6 +7,7 @@ import 'package:kmobile/features/beneficiaries/screens/manage_beneficiaries_scre import 'package:kmobile/features/enquiry/screens/enquiry_screen.dart'; import 'package:kmobile/features/fund_transfer/screens/fund_transfer_beneficiary_screen.dart'; import 'package:kmobile/features/quick_pay/screens/quick_pay_screen.dart'; +import 'package:kmobile/src/preferences/preference.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart'; class DashboardScreen extends StatefulWidget { @@ -45,8 +46,8 @@ class _DashboardScreenState extends State { child: InkWell( borderRadius: BorderRadius.circular(20), onTap: (){ - // Navigator.push(context, MaterialPageRoute( - // builder: (context) => const CustomerInfoScreen())); + Navigator.push(context, MaterialPageRoute( + builder: (context) => const Preference())); }, child: const CircleAvatar( backgroundImage: AssetImage('assets/images/avatar.jpg'), // Replace with your image diff --git a/lib/l10n/app_bn.arb b/lib/l10n/app_bn.arb new file mode 100644 index 0000000..590a460 --- /dev/null +++ b/lib/l10n/app_bn.arb @@ -0,0 +1,174 @@ +{ + "@@locale": "bn", + "app_title": "আইপিকেএস ম্যাপ", + "ipks": "আইপিকেএস", + "fingerprint_reason": "অ্যাপ শুরু করতে প্রমাণীকরণ করুন", + "@fingerprint_reason": {}, + "m_pin_entry_prompt": "আপনার এমপিআইএন লিখুন", + "register_prompt": "রেজিস্টার?", + "try_another_way": "অন্য উপায় চেষ্টা করুন", + "username": "ব্যবহারকারীর নাম", + "password": "পাসওয়ার্ড", + "login": "লগইন", + "register": "রেজিস্টার", + "mobile_number": "মোবাইল নম্বর", + "aadhaar_number": "আধার নম্বর", + "date_of_birth": "জন্ম তারিখ", + "pacs_id": "প্যাকস আইডি", + "view_full_kyc": "পূর্ণ কেওয়াইসি দেখুন", + "account_summary": "হিসাবের সংক্ষিপ্ত সমূহ", + "account_statement": "হিসাবের বিবৃতি", + "customer_details": "গ্রাহকের বিবরণ", + "home": "হোম", + "details": "বিস্তারিত", + "statement": "বিবৃতি", + "no_of_active_accounts": "সক্রিয় হিসাবের সংখ্যা", + "pan_number": "প্যান নম্বর", + "mirror_acct_no": "মিরর হিসাব নম্বর", + "cif": "সিআইএফ", + "product_name": "পণ্যের নাম", + "acct_opening_dt": "হিসাব খোলার তারিখ", + "account_status": "হিসাবের অবস্থা", + "available_bal": "উপলব্ধ ব্যালেন্স", + "interest_rate": "সুদের হার", + "acct_type": "হিসাবের ধরন", + "acct_no": "হিসাব নম্বর", + "date_range": "তারিখের পরিসীমা", + "amount_range": "পরিমাণের পরিসীমা", + "save": "সংরক্ষণ করুন", + "min": "সর্বনিম্ন", + "max": "সর্বোচ্চ", + "min_amt": "ন্যূনতম পরিমাণ", + "max_amt": "সর্বোচ্চ পরিমাণ", + "customer_no_search_message": "আপনার আইপিকেএস গ্রাহক নম্বর লিখুন দয়া করে। আপনার গ্রাহক নম্বরটি আইপিকেএস ডেটাবেসে আপনার বিবরণ খুঁজে পেতে ব্যবহৃত হয়।", + "search": "অনুসন্ধান", + "details_verification_message": "দয়া করে আপনার বিবরণ যাচাই করুন।", + "customer_no": "গ্রাহক নম্বর", + "name": "নাম", + "email": "ইমেল", + "pacs_name": "প্যাকস নাম", + "not_you_prompt": "না আপনি?", + "next": "পরবর্তী", + "otp_verification_message": "একটি ওটিপি মেসেজ আপনার নিবন্ধিত মোবাইল নম্বরে {masked_phone_number} প্রেরিত হয়েছে। এটি যাচাই করতে নিচে লিখুন।", + "@otp_verification_message": { + "placeholders": { + "masked_phone_number": { + "type": "String" + } + } + }, + "otp": "ওটিপি", + "resend_otp_prompt": "পুনরায় ওটিপি প্রেরণ করুন?", + "new_credentials_message": "দয়া করে এমঅ্যাপ এর জন্য আপনার নতুন ব্যবহারকারী নাম এবং পাসওয়ার্ড তৈরি করুন", + "repeat_password": "পাসওয়ার্ড পুনরায় লিখুন", + "registration_success_display": "রেজিস্ট্রেশন সফল", + "goto_login_prompt": "লগইন পৃষ্ঠায় যান", + "marital_status": "বৈবাহিক অবস্থা", + "gender": "লিঙ্গ", + "address": "ঠিকানা", + "or": "অথবা", + "district": "জেলা", + "state": "রাজ্য", + "city": "শহর", + "pin_code": "পিন কোড", + "linked_sb_no": "সংযুক্ত এসবি হিসাব নম্বর", + "farmer_type": "কৃষকের ধরণ", + "guardian_name": "অভিভাবকের নাম", + "religion": "ধর্ম", + "caste": "জাতি", + "not_available": "পাওয়া যায়নি", + "no_accounts_found": "কোনও হিসাব পাওয়া যায়নি", + "account_holder": "হিসাব ধারক", + "customer_name": "গ্রাহকের নাম", + "sanction_amount": "অনুমোদিত পরিমাণ", + "sanction_date": "অনুমোদনের তারিখ", + "disbursed_amount": "বিতরণ করা পরিমাণ", + "interest_outstanding": "সুদের বকেয়া", + "principal_outstanding": "প্রধান বকেয়া", + "interest_paid": "সুদ প্রদান", + "principal_paid": "প্রধান প্রদান", + "emi_amount": "ইএমআই পরিমাণ", + "due_date": "নির্ধারিত তারিখ", + "last_repayment_date": "সর্বশেষ পরিশোধের তারিখ", + "interest_description": "সুদের বিবরণ", + "total_interest_outstanding": "মোট সুদের বকেয়া", + "total_interest_accrued": "মোট সুদ উত্থাপন", + "total_interest_paid": "মোট সুদ প্রদান", + "loan_type": "ঋণের ধরণ", + "old_account_number": "পুরাতন হিসাব নম্বর", + "penal_interest_rate": "জরিমানা সুদের হার", + "cbs_account_number": "সিবিএস হিসাব নম্বর", + "nominee_name": "নোমিনির নাম", + "open_date": "খোলার তারিখ", + "interest_available": "সুদ উপলব্ধ", + "interest_from_date": "সুদ শুরুর তারিখ", + "interest_to_date": "সুদ শেষের তারিখ", + "term_value": "মেয়াদ মান", + "maturity_value": "পরিপ্রেক্ষিত মূল্য", + "maturity_date": "পরিপ্রেক্ষিত তারিখ", + "term_start_date": "মেয়াদ শুরুর তারিখ", + "term_end_date": "মেয়াদ শেষের তারিখ", + "interest_projected": "সুদ প্রকাশ্য", + "interest_capitalized": "সুদ পুঁজিবদ্ধ", + "no_of_installments_paid": "পরিশোধিত কিস্তির সংখ্যা", + "next_due_date": "পরবর্তী মেয়াদ শেষের তারিখ", + "rd_penal_count": "আরডি জরিমানা গণনা", + "hold_value": "ধার মান", + "term_length": "মেয়াদের দৈর্ঘ্য", + "interest_repayment_method": "সুদ পরিশোধের পদ্ধতি", + "mode_of_account": "হিসাবের মোড", + "secondary_cif_number": "দ্বিতীয় সিআইএফ নম্বর", + "secondary_cif_name": "দ্বিতীয় সিআইএফ নাম", + "no_statements_found": "কোনও বিবৃতি পাওয়া যায়নি", + "date_range_exceeds_10_days": "10 দিনের বেশি সময়কাল নির্বাচন করুন না", + "last_10_transactions": "সর্বশেষ 10 লেনদেন প্রদর্শিত হচ্ছে", + "select_account_type": "হিসাবের ধরন নির্বাচন করুন", + "select_account_number": "হিসাব নম্বর নির্বাচন করুন", + "select_date_range": "তারিখের পরিসীমা নির্বাচন করুন", + "please_wait": "অপেক্ষা করুন...", + "preferences": "পছন্দসমূহ", + "everforest": "এভারফরেস্ট", + "rosy": "রোসি", + "skypeia": "স্কাইপিয়া", + "marigold": "গাঁদা ফুল", + "select_language": "ভাষা নির্বাচন করুন", + "english": "ইংরেজি", + "hindi": "হিন্দি", + "bengali": "বাংলা", + "malayalam": "মালায়ালম", + "dark_theme": "গা থিম", + "color_theme": "রঙের থিম", + "language": "ভাষা", + "deposit": "জমা", + "loan": "ঋণ", + "export": "রপ্তানি", + "invalid_credentials": "অবৈধ পরিচয়পত্র", + "logout": "লগআউট", + "backend_ip": "ব্যাকএন্ড আইপি", + "bank_branch_no": "ব্যাংক শাখা নম্বর", + "ifsc_code": "আইএফএসসি কোড", + "bank_branch_name": "ব্যাংক শাখার নাম", + "search_customer_paragraph": "অনুগ্রহ করে আপনার আইপিকেএস গ্রাহক নম্বর দিন। আপনার গ্রাহক নম্বর আইপিকেএস ডাটাবেসে আপনার বিবরণ খুঁজতে ব্যবহৃত হয়", + "invalid_customer_no": "অবৈধ গ্রাহক নম্বর", + "searching": "অনুসন্ধান করা হচ্ছে", + "invalid_otp": "অবৈধ ওটিপি", + "register_customer_message": "অনুগ্রহ করে এমঅ্যাপের জন্য আপনার নতুন ব্যবহারকারী নাম এবং পাসওয়ার্ড প্রবেশ করান", + "username_criteria": "৬টি অক্ষর, শুধুমাত্র অক্ষর এবং সংখ্যা", + "password_criteria": "একটি বড় হাতের অক্ষর, একটি ছোট হাতের অক্ষর, একটি সংখ্যা (৮টি অক্ষর)", + "passowrd_mismatch_msg": "পাসওয়ার্ডগুলি মেলে না", + "password_confirm": "পাসওয়ার্ড নিশ্চিত করুন", + "registration_successful": "নিবন্ধন সফল হয়েছে", + "registration_successful_message": "অনুগ্রহ করে আপনার নতুন পরিচয়পত্র দিয়ে লগইন করুন", + "goto_login": "লগইন পৃষ্ঠায় যান", + "socket_exception": "অনুগ্রহ করে আপনার ইন্টারনেট সংযোগ পরীক্ষা করুন", + "mpin_setup": "৪-সংখ্যার এমপিন সেট করুন", + "mpin_confirm": "আপনার এমপিন নিশ্চিত করুন", + "storage_permission_denied": "স্টোরেজ অনুমতি অস্বীকৃত হয়েছে", + "forgot_password": "পাসওয়ার্ড ভুলে গেছেন", + "forgot_password_search_user": "আপনার সিআইএফ নম্বর লিখুন", + "forgot_password_success": "রিসেট সফল হয়েছে", + "forgot_password_create": "আপনার নতুন পাসওয়ার্ড লিখুন", + "new_password": "নতুন পাসওয়ার্ড", + "security": "নিরাপত্তা", + "verify_mpin": "আপনার এমপিন যাচাই করুন" +} \ No newline at end of file diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb new file mode 100644 index 0000000..c649169 --- /dev/null +++ b/lib/l10n/app_en.arb @@ -0,0 +1,174 @@ +{ + "@@locale": "en", + "app_title": "mApp", + "ipks": "IPKS", + "fingerprint_reason": "Authenticate to start app", + "@fingerprint_reason": {}, + "m_pin_entry_prompt": "Enter your mPIN", + "register_prompt": "Register?", + "try_another_way": "Try another way", + "username": "Username", + "password": "Password", + "login": "Login", + "register": "Register", + "mobile_number": "Mobile Number", + "aadhaar_number": "Aadhaar Number", + "date_of_birth": "Date of Birth", + "pacs_id": "PACS id", + "view_full_kyc": "View full KYC", + "account_summary": "Account Summary", + "account_statement": "Account Statement", + "customer_details": "Customer Details", + "home": "Home", + "details": "Details", + "statement": "Statement", + "no_of_active_accounts": "Number of active accounts", + "pan_number": "PAN Number", + "mirror_acct_no": "Mirror Account Number", + "cif": "CIF", + "product_name": "Product Name", + "acct_opening_dt": "Account Opening Date", + "account_status": "Account Status", + "available_bal": "Available Balance", + "interest_rate": "Interest Rate", + "acct_type": "Account Type", + "acct_no": "Account Number", + "date_range": "Date Range", + "amount_range": "Amount Range", + "save": "Save", + "min": "Min", + "max": "Max", + "min_amt": "Min Amount", + "max_amt": "Max Amount", + "customer_no_search_message": "Please enter your IPKS customer number. Your customer number is used to search your details in the IPKS database.", + "search": "Search", + "details_verification_message": "Please verify your details.", + "customer_no": "Customer Number", + "name": "Name", + "email": "Email", + "pacs_name": "PACS Name", + "not_you_prompt": "Not You?", + "next": "Next", + "otp_verification_message": "An OTP message has been sent to your registered mobile number {masked_phone_number}. Enter it below to verify your phone number.", + "@otp_verification_message": { + "placeholders": { + "masked_phone_number": { + "type": "String" + } + } + }, + "otp": "OTP", + "resend_otp_prompt": "Resend OTP?", + "new_credentials_message": "Please create your new username and password for mApp", + "repeat_password": "Repeat Password", + "registration_success_display": "Registration success", + "goto_login_prompt": "Go to Login Page", + "marital_status": "Marital Status", + "gender": "Gender", + "address": "Address", + "or": "OR", + "district": "District", + "state": "State", + "city": "City", + "pin_code": "Pin code", + "linked_sb_no": "Linked SB Account Number", + "farmer_type": "Farmer Type", + "guardian_name": "Guardian Name", + "religion": "Religion", + "caste": "Caste", + "not_available": "Not Available", + "no_accounts_found": "No Accounts Found", + "account_holder": "Account Holder", + "customer_name": "Customer Name", + "sanction_amount": "Sanction Amount", + "sanction_date": "Sanction Date", + "disbursed_amount": "Disbursed Amount", + "interest_outstanding": "Interest Outstanding", + "principal_outstanding": "Principal Outstanding", + "interest_paid": "Interest Paid", + "principal_paid": "Principal Paid", + "emi_amount": "EMI Amount", + "due_date": "Due Date", + "last_repayment_date": "Last Repayment Date", + "interest_description": "Interest Description", + "total_interest_outstanding": "Total Interest Outstanding", + "total_interest_accrued": "Total Interest Accrued", + "total_interest_paid": "Total Interest Paid", + "loan_type": "Loan Type", + "old_account_number": "Old Account Number", + "penal_interest_rate": "Penal Interest Rate", + "cbs_account_number": "CBS Account Number", + "nominee_name": "Nominee Name", + "open_date": "Open Date", + "interest_available": "Interest Available", + "interest_from_date": "Interest From Date", + "interest_to_date": "Interest To Date", + "term_value": "Term Value", + "maturity_value": "Maturity Value", + "maturity_date": "Maturity Date", + "term_start_date": "Term Start Date", + "term_end_date": "Term End Date", + "interest_projected": "Interest Projected", + "interest_capitalized": "Interest Capitalized", + "no_of_installments_paid": "Number of Installments Paid", + "next_due_date": "Next Due Date", + "rd_penal_count": "RD Penal Count", + "hold_value": "Hold Value", + "term_length": "Term Length", + "interest_repayment_method": "Interest Repayment Method", + "mode_of_account": "Mode of Account", + "secondary_cif_number": "Secondary CIF Number", + "secondary_cif_name": "Secondary CIF Name", + "no_statements_found": "No Statements Found", + "date_range_exceeds_10_days": "Select duration of 10 days or less", + "last_10_transactions": "Displaying last 10 transactions", + "select_account_type": "Select Account Type", + "select_account_number": "Select Account Number", + "select_date_range": "Select Date Range", + "please_wait": "Please wait...", + "preferences": "Preferences", + "everforest": "Everforest", + "rosy": "Rosy", + "skypeia": "Skypeia", + "marigold": "Marigold", + "select_language": "Select Language", + "english": "English", + "hindi": "Hindi", + "bengali": "Bengali", + "malayalam": "Malayalam", + "dark_theme": "Dark Theme", + "color_theme": "Color Theme", + "language": "Language", + "deposit": "Deposit", + "loan": "Loan", + "export": "Export", + "invalid_credentials": "Invalid credentials", + "logout": "Logout", + "backend_ip": "Backend IP", + "bank_branch_no": "Bank Branch Number", + "ifsc_code": "IFSC code", + "bank_branch_name": "Bank Branch Name", + "search_customer_paragraph": "Please enter your IPKS customer number. Your customer number is used to search your details in the IPKS database", + "invalid_customer_no": "Invalid customer number", + "searching": "Searching", + "invalid_otp": "Invalid OTP", + "register_customer_message": "Please enter your new username and password for mApp", + "username_criteria": "6 characters, only letters and digits", + "password_criteria": "one uppercase, one lowercase, one number (8 characters)", + "passowrd_mismatch_msg": "The passwords doesn't match", + "password_confirm": "Confirm Password", + "registration_successful": "Registration Successful", + "registration_successful_message": "Please login with your new credentails", + "goto_login": "Got to Login Page", + "socket_exception": "Please check your internet connection", + "mpin_setup": "Setup 4-digit MPIN", + "mpin_confirm": "Confirm your MPIN", + "storage_permission_denied": "Storage Persmission denied", + "forgot_password": "Forgot Password", + "forgot_password_search_user": "Enter your CIF number", + "forgot_password_success": "Reset Successful", + "forgot_password_create": "Enter your new password", + "new_password": "New Password", + "security": "Security", + "verify_mpin": "Verify your MPIN" +} diff --git a/lib/l10n/app_hi.arb b/lib/l10n/app_hi.arb new file mode 100644 index 0000000..f66313c --- /dev/null +++ b/lib/l10n/app_hi.arb @@ -0,0 +1,174 @@ +{ + "@@locale": "hi", + "app_title": "आईपीकेएस ऐप", + "ipks": "आईपीकेएस", + "fingerprint_reason": "ऐप शुरू करने के लिए प्रमाणित करें", + "@fingerprint_reason": {}, + "m_pin_entry_prompt": "अपना एम पिन दर्ज करें", + "register_prompt": "रजिस्टर करें?", + "try_another_way": "किसी अन्य तरीके की कोशिश करें", + "username": "उपयोगकर्ता नाम", + "password": "पासवर्ड", + "login": "लॉगिन", + "register": "रजिस्टर", + "mobile_number": "मोबाइल नंबर", + "aadhaar_number": "आधार नंबर", + "date_of_birth": "जन्म तिथि", + "pacs_id": "पैक्स आईडी", + "view_full_kyc": "पूरा केवाईसी देखें", + "account_summary": "हिसाब सारांश", + "account_statement": "हिसाब की बयान", + "customer_details": "ग्राहक विवरण", + "home": "होम", + "details": "विवरण", + "statement": "बयान", + "no_of_active_accounts": "सक्रिय खातों की संख्या", + "pan_number": "पैन नंबर", + "mirror_acct_no": "मिरर खाता नंबर", + "cif": "सीआईएफ", + "product_name": "उत्पाद का नाम", + "acct_opening_dt": "खाता खोलने की तिथि", + "account_status": "खाता की स्थिति", + "available_bal": "उपलब्ध शेष", + "interest_rate": "ब्याज दर", + "acct_type": "खाते का प्रकार", + "acct_no": "खाता संख्या", + "date_range": "तिथि सीमा", + "amount_range": "राशि सीमा", + "save": "सहेजें", + "min": "न्यूनतम", + "max": "अधिकतम", + "min_amt": "न्यूनतम राशि", + "max_amt": "अधिकतम राशि", + "customer_no_search_message": "कृपया अपना आईपीकेएस ग्राहक संख्या दर्ज करें। आपका ग्राहक संख्या आईपीकेएस डेटाबेस में आपका विवरण खोजने के लिए उपयोग किया जाता है।", + "search": "खोज", + "details_verification_message": "कृपया अपना विवरण सत्यापित करें।", + "customer_no": "ग्राहक संख्या", + "name": "नाम", + "email": "ईमेल", + "pacs_name": "पैक्स का नाम", + "not_you_prompt": "तुम नहीं?", + "next": "अगला", + "otp_verification_message": "एक ओटीपी संदेश आपके पंजीकृत मोबाइल नंबर {masked_phone_number} पर भेजा गया है। इसे नीचे दिए गए बॉक्स में दर्ज करके अपने फोन नंबर को सत्यापित करें।", + "@otp_verification_message": { + "placeholders": { + "masked_phone_number": { + "type": "String" + } + } + }, + "otp": "ओटीपी", + "resend_otp_prompt": "ओटीपी पुनः भेजें?", + "new_credentials_message": "कृपया एमएपी के लिए अपना नया उपयोगकर्ता नाम और पासवर्ड बनाएं", + "repeat_password": "पासवर्ड दोहराएं", + "registration_success_display": "रजिस्ट्रेशन सफलता", + "goto_login_prompt": "लॉगिन पेज पर जाएं", + "marital_status": "वैवाहिक स्थिति", + "gender": "लिंग", + "address": "पता", + "or": "या", + "district": "जिला", + "state": "राज्य", + "city": "शहर", + "pin_code": "पिन कोड", + "linked_sb_no": "लिंक्ड एसबी खाता नंबर", + "farmer_type": "किसान प्रकार", + "guardian_name": "संरक्षक का नाम", + "religion": "धर्म", + "caste": "जाति", + "not_available": "उपलब्ध नहीं है", + "no_accounts_found": "कोई खाते नहीं मिला", + "account_holder": "खाता धारक", + "customer_name": "ग्राहक का नाम", + "sanction_amount": "स्वीकृत राशि", + "sanction_date": "स्वीकृति तिथि", + "disbursed_amount": "वितरित राशि", + "interest_outstanding": "बकाया ब्याज", + "principal_outstanding": "मुख्य बकाया", + "interest_paid": "ब्याज दिया", + "principal_paid": "मुख्य दिया", + "emi_amount": "ईएमआई राशि", + "due_date": "निर्धारित तिथि", + "last_repayment_date": "अंतिम प्रतिपूर्ति तिथि", + "interest_description": "ब्याज विवरण", + "total_interest_outstanding": "कुल बकाया ब्याज", + "total_interest_accrued": "कुल ब्याज बनाया गया", + "total_interest_paid": "कुल ब्याज दिया", + "loan_type": "ऋण प्रकार", + "old_account_number": "पुराना खाता नंबर", + "penal_interest_rate": "जुर्माना ब्याज दर", + "cbs_account_number": "सीबीएस खाता नंबर", + "nominee_name": "नामांकित नाम", + "open_date": "खोलने की तारीख", + "interest_available": "ब्याज उपलब्ध", + "interest_from_date": "ब्याज तिथि से", + "interest_to_date": "ब्याज तारीख तक", + "term_value": "मुद्रा मूल्य", + "maturity_value": "परिपक्ष्य मूल्य", + "maturity_date": "परिपक्ष्य तिथि", + "term_start_date": "अवधि प्रारंभ तिथि", + "term_end_date": "अवधि समाप्ति तिथि", + "interest_projected": "ब्याज परियोजित", + "interest_capitalized": "ब्याज पुँजीबद्ध", + "no_of_installments_paid": "भुगतान की गई किस्तों की संख्या", + "next_due_date": "अगली निर्धारित तिथि", + "rd_penal_count": "आरडी जुर्माना गणना", + "hold_value": "होल्ड मूल्य", + "term_length": "अवधि लंबाई", + "interest_repayment_method": "ब्याज प्रतिपूर्ति विधि", + "mode_of_account": "खाते का मोड", + "secondary_cif_number": "द्वितीय सीआईएफ नंबर", + "secondary_cif_name": "द्वितीय सीआईएफ नाम", + "no_statements_found": "कोई बयान नहीं मिला", + "date_range_exceeds_10_days": "10 दिनों से अधिक अवधि का चयन नहीं करें", + "last_10_transactions": "अंतिम 10 लेनदेन दिखा रहा है", + "select_account_type": "खाता प्रकार चुनें", + "select_account_number": "खाता संख्या चुनें", + "select_date_range": "तिथि सीमा चुनें", + "please_wait": "कृपया प्रतीक्षा करें...", + "preferences": "प्राथमिकताएँ", + "everforest": "एवरफॉरेस्ट", + "rosy": "रोसी", + "skypeia": "स्काइपिया", + "marigold": "मैरीगोल्ड", + "select_language": "भाषा चुनें", + "english": "अंग्रेज़ी", + "hindi": "हिंदी", + "bengali": "बंगाली", + "malayalam": "मलयालम", + "dark_theme": "डार्क थीम", + "color_theme": "रंग थीम", + "language": "भाषा", + "deposit": "जमा", + "loan": "ऋण", + "export": "निर्यात", + "invalid_credentials": "अमान्य प्रमाण पत्र", + "logout": "लॉगआउट", + "backend_ip": "बैकएंड आईपी", + "bank_branch_no": "बैंक शाखा संख्या", + "ifsc_code": "आईएफएससी कोड", + "bank_branch_name": "बैंक शाखा का नाम", + "search_customer_paragraph": "कृपया अपना आईपीकेएस ग्राहक नंबर दर्ज करें। आपका ग्राहक नंबर आईपीकेएस डेटाबेस में आपके विवरण खोजने के लिए उपयोग किया जाता है", + "invalid_customer_no": "अमान्य ग्राहक संख्या", + "searching": "खोज रहे हैं", + "invalid_otp": "अमान्य ओटीपी", + "register_customer_message": "कृपया एमऐप के लिए अपना नया उपयोगकर्ता नाम और पासवर्ड दर्ज करें", + "username_criteria": "6 अक्षर, केवल अक्षर और अंक", + "password_criteria": "एक अपरकेस, एक लोअरकेस, एक अंक (8 अक्षर)", + "passowrd_mismatch_msg": "पासवर्ड मेल नहीं खाते", + "password_confirm": "पासवर्ड की पुष्टि करें", + "registration_successful": "पंजीकरण सफल", + "registration_successful_message": "कृपया अपने नए प्रमाण पत्रों से लॉगिन करें", + "goto_login": "लॉगिन पेज पर जाएं", + "socket_exception": "कृपया अपना इंटरनेट कनेक्शन जांचें", + "mpin_setup": "4-अंकों का एम-पिन सेट करें", + "mpin_confirm": "अपने एम-पिन की पुष्टि करें", + "storage_permission_denied": "स्टोरेज अनुमति अस्वीकृत", + "forgot_password": "पासवर्ड भूल गए", + "forgot_password_search_user": "अपना सीआईएफ नंबर दर्ज करें", + "forgot_password_success": "रीसेट सफल", + "forgot_password_create": "अपना नया पासवर्ड दर्ज करें", + "new_password": "नया पासवर्ड", + "security": "सुरक्षा", + "verify_mpin": "अपना एम-पिन सत्यापित करें" +} \ No newline at end of file diff --git a/lib/l10n/app_ml.arb b/lib/l10n/app_ml.arb new file mode 100644 index 0000000..8321876 --- /dev/null +++ b/lib/l10n/app_ml.arb @@ -0,0 +1,174 @@ +{ + "@@locale": "ml", + "app_title": "ഐപികെഎസ് ആപ്പ്", + "ipks": "ഐപികെഎസ്", + "fingerprint_reason": "ആപ്പ് ആരംഭിക്കുകയാണ് പ്രമാണിക്കുക", + "@fingerprint_reason": {}, + "m_pin_entry_prompt": "നിങ്ങളുടെ എം പിൻ നൽകുക", + "register_prompt": "രജിസ്റ്റർ ചെയ്യുക?", + "try_another_way": "മറ്റൊരു വഴി പരീക്ഷിക്കുക", + "username": "ഉപയോക്തൃനാമം", + "password": "പാസ്‌വേഡ്", + "login": "ലോഗിൻ", + "register": "രജിസ്റ്റർ", + "mobile_number": "മൊബൈൽ നമ്പർ", + "aadhaar_number": "ആധാർ നമ്പർ", + "date_of_birth": "ജനന തീയതി", + "pacs_id": "പക്സ് ഐഡി", + "view_full_kyc": "പൂർണ്ണമായി KYC കാണുക", + "account_summary": "അക്കൗണ്ട് സംഗ്രഹം", + "account_statement": "അക്കൗണ്ട് സ്റ്റേറ്റ്മെന്റ്", + "customer_details": "ഗ്രാഹക വിവരങ്ങൾ", + "home": "ഹോം", + "details": "വിശദങ്ങൾ", + "statement": "സ്റ്റേറ്റ്മെന്റ്", + "no_of_active_accounts": "സജീവ അക്കൗണ്ടുകൾക്കായി നിലവിലെ അക്കൗണ്ടുകൾ", + "pan_number": "പാൻ നമ്പർ", + "mirror_acct_no": "മിറർ അക്കൗണ്ട് നമ്പർ", + "cif": "സിഐഎഫ്", + "product_name": "ഉൽപ്പന്നത്തിന്റെ പേര്", + "acct_opening_dt": "അക്കൗണ്ട് തുറക്കിയ തീയതി", + "account_status": "അക്കൗണ്ട് സ്റ്റാറ്റസ്", + "available_bal": "ലഭ്യമായ ബാലൻസ്", + "interest_rate": "ബായാജ് വരുമാനം", + "acct_type": "അക്കൗണ്ട് തരം", + "acct_no": "അക്കൗണ്ട് നമ്പർ", + "date_range": "തീയതി ശ്രേണി", + "amount_range": "രൂപ ശ്രേണി", + "save": "സേവ്", + "min": "അതിന്റെ", + "max": "പരമാവധി", + "min_amt": "അതിന്റെ തിരഞ്ഞെടുക്കണം", + "max_amt": "പരമാവധി തിരഞ്ഞെടുക്കണം", + "customer_no_search_message": "ദയവായി നിങ്ങളുടെ ഐപികെഎസ് ഗ്രാഹക നമ്പർ നൽകുക. ആപ്പ് ഡാറ്റാബേസിൽ നിങ്ങളുടെ വിവരങ്ങൾ തിരയുന്നതിനായി നിങ്ങളുടെ ഗ്രാഹക നമ്പർ ഉപയോഗിക്കുന്നു.", + "search": "തിരയുക", + "details_verification_message": "ദയവായി നിങ്ങളുടെ വിശദങ്ങൾ പരിശോധിക്കുക.", + "customer_no": "ഗ്രാഹക നമ്പർ", + "name": "പേര്", + "email": "ഇമെയിൽ", + "pacs_name": "പക്സ് പേര്", + "not_you_prompt": "നിന്ന് അല്ല?", + "next": "അടുത്തത്", + "otp_verification_message": "ഒരു OTP സന്ദേശം നിങ്ങളുടെ രജിസ്റ്റർ ചെയ്യപ്പെട്ട മൊബൈൽ നമ്പറിലേക്ക് {masked_phone_number} അയച്ചിരിക്കുന്നു. നിങ്ങൾക്ക് ഫോൺ നമ്പറിനെ പരിശോധിക്കാൻ അതിനു താഴെ നൽകുന്ന ബോക്സിൽ അതിൽ നൽകുക.", + "@otp_verification_message": { + "placeholders": { + "masked_phone_number": { + "type": "String" + } + } + }, + "otp": "ഓടിപി", + "resend_otp_prompt": "OTP പുനഃക്രമീകരിക്കുക?", + "new_credentials_message": "ഐപികെഎസ് ആപ്പിനായി നിങ്ങളുടെ പുതിയ ഉപയോക്തൃനാമം മറികടക്കുക", + "repeat_password": "പാസ്വേഡ് പുനരാക്ഷരിക്കുക", + "registration_success_display": "രജിസ്ട്രേഷൻ വിജയം", + "goto_login_prompt": "ലോഗിൻ പേജിലേക്ക് പോകുക", + "marital_status": "വിവാഹിത സ്ഥിതി", + "gender": "ലിംഗം", + "address": "വിലാസം", + "or": "അഥവാ", + "district": "ജില്ല", + "state": "സംസ്ഥാനം", + "city": "നഗരം", + "pin_code": "പിൻ കോഡ്", + "linked_sb_no": "ലിങ്ക്ഡ് എസ്‌ബി അക്കൗണ്ട് നമ്പർ", + "farmer_type": "കൃഷിക്കാർ തരം", + "guardian_name": "ഗാർഡിയൻ പേര്", + "religion": "മതം", + "caste": "ജാതി", + "not_available": "ലഭ്യമല്ല", + "no_accounts_found": "അക്കൗണ്ടുകൾ കണ്ടെത്തിയില്ല", + "account_holder": "അക്കൗണ്ട് ഹോൾഡർ", + "customer_name": "ഗ്രാഹകനാമം", + "sanction_amount": "അനുവദിച്ച തുക", + "sanction_date": "അനുവദിച്ച തീയതി", + "disbursed_amount": "പിന്നീട് പിഴച്ച തുക", + "interest_outstanding": "ബായാജ് അടുപ്പുകൾ", + "principal_outstanding": "പ്രധാന അടുപ്പ്", + "interest_paid": "ബായാജ് ചെലവ്", + "principal_paid": "പ്രധാന ചെലവ്", + "emi_amount": "EMI തുക", + "due_date": "നിർബന്ധമായ തീയതി", + "last_repayment_date": "അവസാന തുക തീയതി", + "interest_description": "ബായാജ് വിവരണം", + "total_interest_outstanding": "മൊത്ത ബായാജ് അടുപ്പുകൾ", + "total_interest_accrued": "മൊത്ത ബായാജ് അക്ക്രൂട്ട്", + "total_interest_paid": "മൊത്ത ബായാജ് ചെലവ്", + "loan_type": "വായ്പ തരം", + "old_account_number": "പഴയ അക്കൗണ്ട് നമ്പർ", + "penal_interest_rate": "ശിക്ഷാ ബായാജ് വരുമാനം", + "cbs_account_number": "സിബിഎസ് അക്കൗണ്ട് നമ്പർ", + "nominee_name": "നോമിനീ പേര്", + "open_date": "തുറന്ന തീയതി", + "interest_available": "ബായാജ് ലഭ്യമാണ്", + "interest_from_date": "ബായാജ് തീയതി മുതൽ", + "interest_to_date": "ബായാജ് തീയതി വരെ", + "term_value": "അവധി മൂല്യം", + "maturity_value": "പരിപാലന മൂല്യം", + "maturity_date": "പരിപാലന തീയതി", + "term_start_date": "അവധി തുടക്കം തീയതി", + "term_end_date": "അവധി അവസാനം തീയതി", + "interest_projected": "ബായാജ് പ്രൊജക്ടുചെയ്യൽ", + "interest_capitalized": "ബായാജ് ക്യാപിറ്റലൈസ്ഡ്", + "no_of_installments_paid": "പിന്നീട് നടത്തിയ കിസ്തുകൾക്കായി നിരക്കുകൾ", + "next_due_date": "അടുത്ത നിർബന്ധ തീയതി", + "rd_penal_count": "ആർഡി പെനല്‍ എണ്ണം", + "hold_value": "ഹോൾഡ് മൂല്യം", + "term_length": "അവധി നീളം", + "interest_repayment_method": "ബായാജ് തിരിച്ചറിയൽ രീതി", + "mode_of_account": "അക്കൗണ്ട് മോഡ്", + "secondary_cif_number": "സെക്കന്ററി സിഐഎഫ് നമ്പർ", + "secondary_cif_name": "സെക്കന്ററി സിഐഎഫ് പേര്", + "no_statements_found": "സ്റ്റേറ്റ്മെന്റുകൾ കണ്ടെത്തിയില്ല", + "date_range_exceeds_10_days": "10 ദിവസങ്ങൾക്ക് അധികം തീയതി ശ്രേണി തിരഞ്ഞെടുക്കരുത്", + "last_10_transactions": "അവസാന 10 ലിങ്കുകൾ പ്രദർശിപ്പിക്കുന്നു", + "select_account_type": "അക്കൗണ്ട് തരം തിരഞ്ഞെടുക്കുക", + "select_account_number": "അക്കൗണ്ട് നമ്പർ തിരഞ്ഞെടുക്കുക", + "select_date_range": "തീയതി ശ്രേണി തിരഞ്ഞെടുക്കുക", + "please_wait": "ദയവായി കാത്തിരിക്കുക...", + "preferences": "മൊത്തത്തിന്റെ അഭിരുചികൾ", + "everforest": "എവർഫോറസ്റ്റ്", + "rosy": "റോസി", + "skypeia": "സ്കൈപ്പിയ", + "marigold": "മാരിഗോൾഡ്", + "select_language": "ഭാഷ തിരഞ്ഞെടുക്കുക", + "english": "ഇംഗ്ലീഷ്", + "hindi": "ഹിന്ദി", + "bengali": "ബംഗാളി", + "malayalam": "മലയാളം", + "dark_theme": "കറുത്ത തീം", + "color_theme": "നിറ തീം", + "language": "ഭാഷ", + "deposit": "ഡപ്പോസിറ്റ്", + "loan": "വായ്പ", + "export": "കയറ്റുമതി ചെയ്യുക", + "invalid_credentials": "അസാധുവായ ക്രെഡൻഷ്യലുകൾ", + "logout": "ലോഗ്ഔട്ട്", + "backend_ip": "ബാക്ക്എൻഡ് ഐപി", + "bank_branch_no": "ബാങ്ക് ശാഖ നമ്പർ", + "ifsc_code": "ഐഎഫ്എസ്സി കോഡ്", + "bank_branch_name": "ബാങ്ക് ശാഖയുടെ പേര്", + "search_customer_paragraph": "ദയവായി നിങ്ങളുടെ ഐപികെഎസ് ഉപഭോക്താവ് നമ്പർ നൽകുക. ഐപികെഎസ് ഡാറ്റാബേസിൽ നിങ്ങളുടെ വിശദാംശങ്ങൾ തിരയാൻ ഉപഭോക്താവ് നമ്പർ ഉപയോഗിക്കുന്നു", + "invalid_customer_no": "അസാധുവായ ഉപഭോക്താവ് നമ്പർ", + "searching": "തിരയുന്നു", + "invalid_otp": "അസാധുവായ ഒറ്റത്തവണ പാസ്‌വേഡ്", + "register_customer_message": "ദയവായി mApp-നായി നിങ്ങളുടെ പുതിയ ഉപയോക്തൃനാമവും പാസ്‌വേഡും നൽകുക", + "username_criteria": "6 അക്ഷരങ്ങൾ, അക്ഷരങ്ങളും അക്കങ്ങളും മാത്രം", + "password_criteria": "ഒരു അപ്പർകേസ്, ഒരു ലോവർകേസ്, ഒരു നമ്പർ (8 അക്ഷരങ്ങൾ)", + "passowrd_mismatch_msg": "പാസ്‌വേഡുകൾ പൊരുത്തപ്പെടുന്നില്ല", + "password_confirm": "പാസ്‌വേഡ് സ്ഥിരീകരിക്കുക", + "registration_successful": "രജിസ്ട്രേഷൻ വിജയകരമായി", + "registration_successful_message": "ദയവായി നിങ്ങളുടെ പുതിയ ക്രെഡൻഷ്യലുകൾ ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യുക", + "goto_login": "ലോഗിൻ പേജിലേക്ക് പോകുക", + "socket_exception": "ദയവായി നിങ്ങളുടെ ഇന്റർനെറ്റ് കണക്ഷൻ പരിശോധിക്കുക", + "mpin_setup": "4-അക്ക എംപിൻ സജ്ജമാക്കുക", + "mpin_confirm": "നിങ്ങളുടെ എംപിൻ സ്ഥിരീകരിക്കുക", + "storage_permission_denied": "സ്റ്റോറേജ് അനുമതി നിഷേധിച്ചു", + "forgot_password": "പാസ്‌വേഡ് മറന്നോ", + "forgot_password_search_user": "നിങ്ങളുടെ സിഐഎഫ് നമ്പർ നൽകുക", + "forgot_password_success": "പുനഃസജ്ജീകരണം വിജയകരമായി", + "forgot_password_create": "നിങ്ങളുടെ പുതിയ പാസ്‌വേഡ് നൽകുക", + "new_password": "പുതിയ പാസ്‌വേഡ്", + "security": "സുരക്ഷ", + "verify_mpin": "നിങ്ങളുടെ എംപിൻ പരിശോധിക്കുക" +} \ No newline at end of file diff --git a/lib/src/preferences/color_dialog.dart b/lib/src/preferences/color_dialog.dart new file mode 100644 index 0000000..cf14bf7 --- /dev/null +++ b/lib/src/preferences/color_dialog.dart @@ -0,0 +1,70 @@ +import 'package:flutter/material.dart'; +import 'package:material_symbols_icons/symbols.dart'; +import 'package:kmobile/utils/theme/color/color_scheme.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class ColorDialog extends StatelessWidget { + const ColorDialog({super.key}); + + @override + Widget build(BuildContext context) { + return SimpleDialog( + title: const Text('Select Theme'), + children: [ + SimpleDialogOption( + onPressed: () { + Navigator.pop(context, KMobileColorScheme.everforest); + }, + child: ListTile( + leading: const Icon( + Symbols.circle, + color: Colors.greenAccent, + fill: 1.0, + ), + title: Text(AppLocalizations.of(context)!.everforest), + ), + ), + SimpleDialogOption( + onPressed: () { + Navigator.pop(context, KMobileColorScheme.rosy); + }, + child: ListTile( + leading: const Icon( + Symbols.circle, + color: Colors.pinkAccent, + fill: 1.0, + ), + title: Text(AppLocalizations.of(context)!.rosy), + ), + ), + SimpleDialogOption( + onPressed: () { + Navigator.pop(context, KMobileColorScheme.skypeia); + }, + child: ListTile( + leading: const Icon( + Symbols.circle, + color: Colors.lightBlueAccent, + fill: 1.0, + ), + title: Text(AppLocalizations.of(context)!.skypeia), + ), + ), + SimpleDialogOption( + onPressed: () { + Navigator.pop(context, KMobileColorScheme.marigold); + }, + child: ListTile( + leading: const Icon( + Symbols.circle, + color: Colors.amberAccent, + fill: 1.0, + ), + title: Text(AppLocalizations.of(context)!.marigold), + ), + ), + // const Divider(height: 0), + ], + ); + } +} diff --git a/lib/src/preferences/language_dialog.dart b/lib/src/preferences/language_dialog.dart new file mode 100644 index 0000000..5bf21f5 --- /dev/null +++ b/lib/src/preferences/language_dialog.dart @@ -0,0 +1,31 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class LanguageDialog extends StatelessWidget { + const LanguageDialog({super.key}); + + String getLocaleName(BuildContext context, String code) { + Map localeCodeMap = { + 'en': AppLocalizations.of(context)!.english, + 'bn': AppLocalizations.of(context)!.bengali, + 'ml': AppLocalizations.of(context)!.malayalam, + 'hi': AppLocalizations.of(context)!.hindi, + }; + return localeCodeMap[code] ?? 'Unknown'; + } + + @override + Widget build(BuildContext context) { + return SimpleDialog( + title: Text(AppLocalizations.of(context)!.select_language), + children: AppLocalizations.supportedLocales.map( + (locale) { + return SimpleDialogOption( + onPressed: () => Navigator.pop(context, locale), + child: ListTile(title: Text(getLocaleName(context, locale.languageCode))), + ); + }, + ).toList(), + ); + } +} diff --git a/lib/src/preferences/preference.dart b/lib/src/preferences/preference.dart new file mode 100644 index 0000000..95b5ab8 --- /dev/null +++ b/lib/src/preferences/preference.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:kmobile/src/preferences/color_dialog.dart'; +import 'package:kmobile/src/preferences/language_dialog.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:kmobile/src/preferences/preferences_cubit.dart'; +import 'package:kmobile/src/preferences/preferences_state.dart'; + +class Preference extends StatelessWidget { + const Preference({super.key}); + + @override + Widget build(BuildContext context) { + return BlocBuilder( + builder: (context, state) { + return Scaffold( + backgroundColor: Theme.of(context).colorScheme.background, + appBar: AppBar( + title: Text(AppLocalizations.of(context)!.preferences), + ), + body: ListView( + children: [ + ListTile( + title: Text(AppLocalizations.of(context)!.dark_theme), + trailing: Switch( + value: state.themeMode == ThemeMode.dark, + onChanged: (value) { + context.read().setThemeMode( + value ? ThemeMode.dark : ThemeMode.light, + ); + }, + ), + ), + const Divider(height: 0), + ListTile( + title: Text(AppLocalizations.of(context)!.color_theme), + onTap: () => _changeCurrentTheme(context), + ), + const Divider(height: 0), + ListTile( + title: Text(AppLocalizations.of(context)!.language), + onTap: () => _changeCurrentLocale(context), + ), + ], + ), + ); + }, + ); + } + + Future _changeCurrentTheme(BuildContext context) async { + final selectedColorScheme = await showDialog>( + context: context, + builder: (context) => const ColorDialog(), + ); + + if (context.mounted && selectedColorScheme != null) { + context.read().setColorScheme(selectedColorScheme); + } + } + + Future _changeCurrentLocale(BuildContext context) async { + final selectedLocale = await showDialog( + context: context, + builder: (context) => const LanguageDialog(), + ); + + if (context.mounted && selectedLocale != null) { + context.read().setLocale(selectedLocale); + } + } +} diff --git a/lib/src/preferences/preferences_cubit.dart b/lib/src/preferences/preferences_cubit.dart new file mode 100644 index 0000000..df5fb3c --- /dev/null +++ b/lib/src/preferences/preferences_cubit.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'preferences_state.dart'; +import 'package:kmobile/utils/theme/color/color_scheme.dart'; + +class PreferencesCubit extends Cubit { + PreferencesCubit() + : super(PreferencesState( + themeMode: ThemeMode.light, + colorScheme: KMobileColorScheme.everforest, + locale: const Locale.fromSubtags(languageCode: 'en'), + )); + + void setThemeMode(ThemeMode mode) { + emit(state.copyWith(themeMode: mode)); + } + + void setColorScheme(Map colorScheme) { + emit(state.copyWith(colorScheme: colorScheme)); + } + + void setLocale(Locale locale) { + emit(state.copyWith(locale: locale)); + } +} diff --git a/lib/src/preferences/preferences_state.dart b/lib/src/preferences/preferences_state.dart new file mode 100644 index 0000000..e74698a --- /dev/null +++ b/lib/src/preferences/preferences_state.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; + +class PreferencesState { + final ThemeMode themeMode; + final Map colorScheme; + final Locale locale; + + PreferencesState({ + required this.themeMode, + required this.colorScheme, + required this.locale, + }); + + PreferencesState copyWith({ + ThemeMode? themeMode, + Map? colorScheme, + Locale? locale, + }) { + return PreferencesState( + themeMode: themeMode ?? this.themeMode, + colorScheme: colorScheme ?? this.colorScheme, + locale: locale ?? this.locale, + ); + } +} diff --git a/lib/utils/theme/color/color_scheme.dart b/lib/utils/theme/color/color_scheme.dart new file mode 100644 index 0000000..7e1475f --- /dev/null +++ b/lib/utils/theme/color/color_scheme.dart @@ -0,0 +1,67 @@ +import 'package:flutter/material.dart'; + +class KMobileColorScheme { + KMobileColorScheme._(); + + static Map everforest = { + ThemeMode.light: ColorScheme.fromSeed( + seedColor: const Color(0xFF008442), + brightness: Brightness.light, + primary: const Color(0xff2C6A45), + onPrimary: const Color(0xffffffff), + primaryContainer: const Color(0xffB0F1C3), + onPrimaryContainer: const Color(0xFF00210F), + secondary: const Color(0xFF4F6354), + onSecondary: const Color(0xFFFFFFFF), + error: const Color(0xFFBA1A1A), + onError: const Color(0xFFFFFFFF), + background: const Color(0xFFF6FBF3), + onBackground: const Color(0xFF181D19), + surface: const Color(0xFFF6FBF3), + onSurface: const Color(0xFF181D19), + ), + ThemeMode.dark: ColorScheme.fromSeed( + seedColor: const Color(0xFF008442), + brightness: Brightness.dark, + primary: const Color(0xff95D5A8), + onPrimary: const Color(0xff00391E), + primaryContainer: const Color(0xff0E512F), + onPrimaryContainer: const Color(0xFFB0F1C3), + secondary: const Color(0xFFB6CCB9), + onSecondary: const Color(0xFF213527), + error: const Color(0xFFFFB4AB), + onError: const Color(0xFF690005), + background: const Color(0xFF0F1511), + onBackground: const Color(0xFFDFE4DD), + surface: const Color(0xFF0F1511), + onSurface: const Color(0xFFDFE4DD), + ), + }; + + static Map rosy = { + ThemeMode.light: ColorScheme.fromSeed( + seedColor: const Color.fromARGB(255, 132, 0, 66), + ), + ThemeMode.dark: ColorScheme.fromSeed( + seedColor: const Color.fromARGB(255, 132, 0, 66), + brightness: Brightness.dark), + }; + + static Map skypeia = { + ThemeMode.light: ColorScheme.fromSeed( + seedColor: const Color.fromARGB(255, 0, 62, 132), + ), + ThemeMode.dark: ColorScheme.fromSeed( + seedColor: const Color.fromARGB(255, 0, 62, 132), + brightness: Brightness.dark), + }; + + static Map marigold = { + ThemeMode.light: ColorScheme.fromSeed( + seedColor: const Color.fromARGB(255, 123, 132, 0), + ), + ThemeMode.dark: ColorScheme.fromSeed( + seedColor: const Color.fromARGB(255, 123, 132, 0), + brightness: Brightness.dark), + }; +} diff --git a/pubspec.lock b/pubspec.lock index ba6185b..b694848 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -142,6 +142,11 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.2" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -252,10 +257,10 @@ packages: dependency: "direct main" description: name: intl - sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf url: "https://pub.dev" source: hosted - version: "0.20.2" + version: "0.19.0" js: dependency: transitive description: @@ -356,10 +361,10 @@ packages: dependency: "direct main" description: name: material_symbols_icons - sha256: d45b6c36c3effa8cb51b1afb8698107d5ff1f88fa4631428f34a8a01abc295d7 + sha256: "7c50901b39d1ad645ee25d920aed008061e1fd541a897b4ebf2c01d966dbf16b" url: "https://pub.dev" source: hosted - version: "4.2815.0" + version: "4.2815.1" meta: dependency: transitive description: @@ -689,10 +694,10 @@ packages: dependency: transitive description: name: vector_graphics_compiler - sha256: "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad" + sha256: "557a315b7d2a6dbb0aaaff84d857967ce6bdc96a63dc6ee2a57ce5a6ee5d3331" url: "https://pub.dev" source: hosted - version: "1.1.16" + version: "1.1.17" vector_math: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index c0f7539..082392e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -41,6 +41,8 @@ dependencies: bloc: ^9.0.0 flutter_bloc: ^9.1.0 get_it: ^8.0.3 + flutter_localizations: + sdk: flutter intl: any flutter_svg: ^2.1.0 local_auth: ^2.3.0 @@ -52,6 +54,7 @@ dependencies: path_provider: ^2.1.5 + dev_dependencies: flutter_test: sdk: flutter @@ -73,6 +76,7 @@ flutter: # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true + generate: true # To add assets to your application, add an assets section, like this: assets: