From b0d083cf9b7c0665804d6cba0474ee1261bde6d7 Mon Sep 17 00:00:00 2001 From: Khatri7968 Date: Wed, 19 Oct 2022 22:09:41 +0500 Subject: [PATCH] Added One Banking App developed in flutter --- banking_app_flutter-main/.gitignore | 44 ++++ banking_app_flutter-main/.metadata | 45 ++++ banking_app_flutter-main/README.md | 16 ++ .../analysis_options.yaml | 29 +++ banking_app_flutter-main/android/.gitignore | 13 + .../android/app/build.gradle | 71 ++++++ .../android/app/src/debug/AndroidManifest.xml | 8 + .../android/app/src/main/AndroidManifest.xml | 34 +++ .../com/example/banking_app/MainActivity.kt | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3606 bytes .../mipmap-hdpi/ic_launcher_adaptive_back.png | Bin 0 -> 5552 bytes .../mipmap-hdpi/ic_launcher_adaptive_fore.png | Bin 0 -> 3152 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2225 bytes .../mipmap-mdpi/ic_launcher_adaptive_back.png | Bin 0 -> 3167 bytes .../mipmap-mdpi/ic_launcher_adaptive_fore.png | Bin 0 -> 1784 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 5249 bytes .../ic_launcher_adaptive_back.png | Bin 0 -> 8761 bytes .../ic_launcher_adaptive_fore.png | Bin 0 -> 4119 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 8332 bytes .../ic_launcher_adaptive_back.png | Bin 0 -> 15950 bytes .../ic_launcher_adaptive_fore.png | Bin 0 -> 8238 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 12131 bytes .../ic_launcher_adaptive_back.png | Bin 0 -> 24980 bytes .../ic_launcher_adaptive_fore.png | Bin 0 -> 11413 bytes .../app/src/main/res/values-night/styles.xml | 18 ++ .../app/src/main/res/values/styles.xml | 18 ++ .../app/src/profile/AndroidManifest.xml | 8 + banking_app_flutter-main/android/build.gradle | 31 +++ .../android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../android/settings.gradle | 11 + .../lib/db/db_helper.dart | 121 +++++++++ banking_app_flutter-main/lib/main.dart | 21 ++ .../lib/model/customer.dart | 25 ++ .../lib/model/transfer_transaction.dart | 31 +++ banking_app_flutter-main/lib/pages/home.dart | 94 +++++++ .../lib/pages/select_customer_page.dart | 44 ++++ .../lib/pages/select_operation_page.dart | 81 ++++++ .../lib/pages/transaction_history.dart | 65 +++++ .../lib/pages/transaction_page.dart | 240 ++++++++++++++++++ .../lib/widgets/customer_card.dart | 44 ++++ .../lib/widgets/transferhistorycard.dart | 27 ++ banking_app_flutter-main/pubspec.lock | 203 +++++++++++++++ banking_app_flutter-main/pubspec.yaml | 78 ++++++ 47 files changed, 1463 insertions(+) create mode 100644 banking_app_flutter-main/.gitignore create mode 100644 banking_app_flutter-main/.metadata create mode 100644 banking_app_flutter-main/README.md create mode 100644 banking_app_flutter-main/analysis_options.yaml create mode 100644 banking_app_flutter-main/android/.gitignore create mode 100644 banking_app_flutter-main/android/app/build.gradle create mode 100644 banking_app_flutter-main/android/app/src/debug/AndroidManifest.xml create mode 100644 banking_app_flutter-main/android/app/src/main/AndroidManifest.xml create mode 100644 banking_app_flutter-main/android/app/src/main/kotlin/com/example/banking_app/MainActivity.kt create mode 100644 banking_app_flutter-main/android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 banking_app_flutter-main/android/app/src/main/res/drawable/launch_background.xml create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png create mode 100644 banking_app_flutter-main/android/app/src/main/res/values-night/styles.xml create mode 100644 banking_app_flutter-main/android/app/src/main/res/values/styles.xml create mode 100644 banking_app_flutter-main/android/app/src/profile/AndroidManifest.xml create mode 100644 banking_app_flutter-main/android/build.gradle create mode 100644 banking_app_flutter-main/android/gradle.properties create mode 100644 banking_app_flutter-main/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 banking_app_flutter-main/android/settings.gradle create mode 100644 banking_app_flutter-main/lib/db/db_helper.dart create mode 100644 banking_app_flutter-main/lib/main.dart create mode 100644 banking_app_flutter-main/lib/model/customer.dart create mode 100644 banking_app_flutter-main/lib/model/transfer_transaction.dart create mode 100644 banking_app_flutter-main/lib/pages/home.dart create mode 100644 banking_app_flutter-main/lib/pages/select_customer_page.dart create mode 100644 banking_app_flutter-main/lib/pages/select_operation_page.dart create mode 100644 banking_app_flutter-main/lib/pages/transaction_history.dart create mode 100644 banking_app_flutter-main/lib/pages/transaction_page.dart create mode 100644 banking_app_flutter-main/lib/widgets/customer_card.dart create mode 100644 banking_app_flutter-main/lib/widgets/transferhistorycard.dart create mode 100644 banking_app_flutter-main/pubspec.lock create mode 100644 banking_app_flutter-main/pubspec.yaml diff --git a/banking_app_flutter-main/.gitignore b/banking_app_flutter-main/.gitignore new file mode 100644 index 00000000..24476c5d --- /dev/null +++ b/banking_app_flutter-main/.gitignore @@ -0,0 +1,44 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/banking_app_flutter-main/.metadata b/banking_app_flutter-main/.metadata new file mode 100644 index 00000000..e27f5ccf --- /dev/null +++ b/banking_app_flutter-main/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + channel: stable + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + - platform: android + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + - platform: ios + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + - platform: linux + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + - platform: macos + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + - platform: web + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + - platform: windows + create_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + base_revision: e3c29ec00c9c825c891d75054c63fcc46454dca1 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/banking_app_flutter-main/README.md b/banking_app_flutter-main/README.md new file mode 100644 index 00000000..54fbdb13 --- /dev/null +++ b/banking_app_flutter-main/README.md @@ -0,0 +1,16 @@ +# banking_app + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/banking_app_flutter-main/analysis_options.yaml b/banking_app_flutter-main/analysis_options.yaml new file mode 100644 index 00000000..61b6c4de --- /dev/null +++ b/banking_app_flutter-main/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/banking_app_flutter-main/android/.gitignore b/banking_app_flutter-main/android/.gitignore new file mode 100644 index 00000000..6f568019 --- /dev/null +++ b/banking_app_flutter-main/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/banking_app_flutter-main/android/app/build.gradle b/banking_app_flutter-main/android/app/build.gradle new file mode 100644 index 00000000..0a9ef003 --- /dev/null +++ b/banking_app_flutter-main/android/app/build.gradle @@ -0,0 +1,71 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.banking_app" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/banking_app_flutter-main/android/app/src/debug/AndroidManifest.xml b/banking_app_flutter-main/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..eb9dacc2 --- /dev/null +++ b/banking_app_flutter-main/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/banking_app_flutter-main/android/app/src/main/AndroidManifest.xml b/banking_app_flutter-main/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..12e42dfe --- /dev/null +++ b/banking_app_flutter-main/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/banking_app_flutter-main/android/app/src/main/kotlin/com/example/banking_app/MainActivity.kt b/banking_app_flutter-main/android/app/src/main/kotlin/com/example/banking_app/MainActivity.kt new file mode 100644 index 00000000..0124830c --- /dev/null +++ b/banking_app_flutter-main/android/app/src/main/kotlin/com/example/banking_app/MainActivity.kt @@ -0,0 +1,6 @@ +package com.example.banking_app + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/banking_app_flutter-main/android/app/src/main/res/drawable-v21/launch_background.xml b/banking_app_flutter-main/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 00000000..f74085f3 --- /dev/null +++ b/banking_app_flutter-main/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/banking_app_flutter-main/android/app/src/main/res/drawable/launch_background.xml b/banking_app_flutter-main/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000..304732f8 --- /dev/null +++ b/banking_app_flutter-main/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/banking_app_flutter-main/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/banking_app_flutter-main/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..90f95809 --- /dev/null +++ b/banking_app_flutter-main/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/banking_app_flutter-main/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/banking_app_flutter-main/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..33ce2a358cc4bc3eb54af07a1f430cc5c48db357 GIT binary patch literal 3606 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 literal 0 HcmV?d00001 diff --git a/banking_app_flutter-main/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png b/banking_app_flutter-main/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png new file mode 100644 index 0000000000000000000000000000000000000000..04751a009b5ace3cdec5288b87c59ae2885b19ac GIT binary patch literal 5552 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 Fe*;&hodN&= literal 0 HcmV?d00001 diff --git a/banking_app_flutter-main/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/banking_app_flutter-main/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..7a5d6dac40472485ffaca31b9592a715a4d1b330 GIT binary patch literal 2225 zcmV;i2u}BjP)Px-Ye_^wRA@uhT5U{ISsH%$C`h%8Kw&ABQ3R^|@S|=-pj$R8C>qptesm`=qNAfG z>Szq^ERgKFsGH!(WI}Wt6i0N#DUO(^2xK&hE46%7rHV#Ktrm7-r4iN<6h+i--jm*L z>9(Z^4&9U7+;Z>vc%Jht)8!iC?&eLkOSrUmPm(S-% zyFHSNihX^3_jNkmZmCpS24G+~7IBvV)$^&YuKsO&e0+gWD0C>1k&@}^>iVZfqsdKA zPj9wZg#5*2afbk#^_G^FjWcG<_1*HQWK;M}4hU`{y}x z=6quzG03qU5%5(il?fRc8LIaI=3VFMd@ARb?;tE)d-vSi5*v@UQ2_&0Cf{Cd``S?f9Uot>SyeEBk7yr8J{ z-(og9PY{Ru&QX2)XM8>%si~lqpeJB%BKY@XPtiPd3dwV;4eSI-$(j;qDqtU1qi^a4i^s+o3 zz(ljz+-2JtN8sSWgHWkd47h!K+sZ@#s2M%D@u3Ze+sZ*yIh#fn2K(E)+stLJVj%(MhF@j2^ z5+_cafL5zz*2&J!hEAu0zrR23+_}RfO491->4CSmH++12nC}%86^)!gRaF&}5Oqwz zghG-ZU^1DQj%n7OKYxzk;9w>(8kl55;7A$-P9~GFKHA#a*!!zjud@0Clq^g#-LPQ; zdskdsj8&^vAvQLajp2@jf(Hf$OjOY}3K6i<(o(3^YU^`nq0*HTQ{%9(FhoX1GQAUU zvKHsWM3%p^qLtx*8rH{-Gxl=@4tQmI_0P$<6iG+!X?S5#EwWM*c52Y|jS&~f~rO+Aqr2S8}?g#=Hs zf=;JvoHlJ5X`g2QrR4~I5COtVRuJUnsk z6A60@aDP)o3a+TA*tBffvcFO$IF^Mn+sewye<&1+{g%i>r`6WYiK8tMg&-!S+S=M( zGMQ}USdk#`YPI^<{Q2|$W+Rz6KFnnyYQ`wFoXDrxg`?%cV8jEsyD3wSyfVIk8|8HxZGnF46zzjf=@gtcqeei0oV z9Z!-PtreSASdxrhuh$$te7LZvsECfyf3ciI|Bq~JiMT_6>a#C4bofg-Q)y}G$Em5Q z>xDvLByB?8)gmiYTO#fv3t)~xx_0-VwWm*2+R@c~D2BS}$&5&-yM@7}%X za=HAYn3xzDZ4K!nt2iUXZ8d54MVDT$SF2R2(_6M|sRr=WlHbrGMYBHSCss%6fIA_d zeWkbLP86vG5{V>u^XART5{X0_5fKqPdGh4Bjyme-=(uJy8t>_JI&E=rvFh&KyX2rW z+Z16ax8c6lyMx2wLgscui>%l;WQ)8g86@k_MRFr+*%q2rk_F8$fu%eBO`z$W%kRM> zapIv!ahoC{L!jwSm%V?HBnTu2c0~W=!GZb@QSY>bi-|hx00000NkvXXu0mjfn3y_* literal 0 HcmV?d00001 diff --git a/banking_app_flutter-main/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png b/banking_app_flutter-main/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png new file mode 100644 index 0000000000000000000000000000000000000000..4608b75ad81b048aeaddd8e2333e32a5313581e9 GIT binary patch literal 3167 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 FV1kcb;t~J= literal 0 HcmV?d00001 diff --git a/banking_app_flutter-main/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png b/banking_app_flutter-main/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png new file mode 100644 index 0000000000000000000000000000000000000000..a14ae1e34dbaaa641da431767bade432f1a386e5 GIT binary patch literal 1784 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 literal 0 HcmV?d00001 diff --git a/banking_app_flutter-main/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png b/banking_app_flutter-main/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png new file mode 100644 index 0000000000000000000000000000000000000000..5ada224a24786b8f9ba23b15bf3075772730f2cf GIT binary patch literal 8761 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 literal 0 HcmV?d00001 diff --git a/banking_app_flutter-main/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png b/banking_app_flutter-main/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png new file mode 100644 index 0000000000000000000000000000000000000000..e485e7c265beab651e77042e4664d7557c7dbacf GIT binary patch literal 4119 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 ILqg2|0RVz%82|tP literal 0 HcmV?d00001 diff --git a/banking_app_flutter-main/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/banking_app_flutter-main/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..66c9209c3eb1e7f0de0360da5f776b22ace79f31 GIT binary patch literal 8332 zcmWk!Wmptl8(w1RSa9iZ36T~gUvdd4>5!0+25A9lSbFJ@E@|oR20^+Tq#J1vX}AP~O1oU}S{kNy7-3j_Gyli6$nZYa*`vXY>RG3o;l z2nLdume6!JJkG?{(VAWAPxi+Phzw!Q?t0{XH>}!=VmYV@V*{6G92S~I&&<}<$=y!z zGUTz>x8+_H3nqj~g*XeM#1|lSvgvV{OkvWVw^`2@WzJ;jJ|UwNf|%EyS(ns;mfzd| zdH!>FUi)V-Z7;D+{}GOfTQ{-Mc%fpB3!#8fpk}g9WS~sBt=PD>5L?`t`cO?mM`0gi z?Zl@wU(!-)f%vSe(pcf%?LmIE&$n(HmP-L>g5AhWVcjiQb@%7BfH zZHGZfD>5}WXr0pD{)j76Ul<;!rKxGl!NDQ=<>BT$@WpH8wo+9V?gC;-bDSTQ*VH4} zFz#gOL?$}Ajmh=(^*tJD>R$^>O9VXTrP^9rG%Ro4Jd6GJpGPuA%1BRpDjHnU5rprv zv%MYE(%h_6Ut3FMH#AWs)Cj!fqua^v#qB?T(tC^Jg#;|W%<`Heq`P(Ntm33JHD`Eb zW&4xM%gUbmx7n8vFG`AwZ_D%Z&8E}%Z06n=b+qaC_NA8D@VrCxc2&zMD%uKo-<;`k za&kKGu2ZIts)R>Gm=eAeqb4IFa!Q9>z+-1qspSgMW0?i3tE0Fu)l*81<}7SD4D)Ee6KhR=het*R|A)5SR?y+1-`7ySrmT zHt`0!g_5Je#8z|8proXnPR`C=rD2BSGQ}T^jW=-I+}wCQs+!~$UYW#RzU75Wy6gRa zb|>50yo<1U>s?`>%A(x9e$9GCOh%y?hKH>x>OM3)+}HrDQC+H$W#EVBaiDs?I68K5 zks3SNL6CT0RT}r6o*q4iwGN-;^73O?pq|R=fAw%Jt=X{it^OFG;vK+b`VmpcnMIQj z5Hhs?Ej#;&@1MEy*5jiij6?5+3xc`^L^W(m0Pea@7gSePRJ8E=XWn1e`9C3viHWa| zkB_CGCwSfUt7tYpsEm;wWk97i2nh;iqkgew#7#&}K6Q3+kyg~q%hfje!81(;|GUn@ z$@w(0xTrhU;L;*;ck3iCKS)YOmYf=bkb4O_=NL(H{MhKQ_6vgEoGB|lZ}i5Cg_&7r zvBIF$9M!GRxiPc@l-quQcr7gKrT#-Xvt#0Y`A+8kEUI>;VdiAB^BzY4)aW(R1&nOw z#2JqfeA6bj*pN0;#GP;*_5~NKo2UAx7z&MZ$jxZiq(t&2f zyhz^|{^k@Cx~mh3SB+nx@-dCHjf{>yA$##6@Ib0;P4SDHtQ5#3aLxL+hNfm+cVFMD zwn+~9?+7zoC>hzQqpNG?uRf{xk0k}DLC1*|Y@(t*isMM#qC6PuP|85t-u{GYb#?VLwefbl zHWUmj_jN~1%y>VlcA?gXLJoM_olg7RVW~Y8zwJQW=$Z>Vm)#QYT4l!_&gH1ikJ1k) z^-zRPdW@^Dudm|$^)a`LI;T=EYNP#1_~qG|POd7QnYrHR$pl8W&|$6n`6j_|635RP zyD!!zq&hWbVMdCIBls+=`5bUXAKQz|%jChs>D~b~P1$To+pnQZI&v@It~0MiM1J#e zbDw)o^M2Q7(}B^`=Wa#Q2#42c(b<6{cV~%H=XZva*Y>9hhFfcj(<{I=H8n|JkCzh7 z&DcrR7e7`K01ubKsxB`n5wbBg-CA}TeLY{+(jwG9H`hSO7NL2UP%OGwC z*%0g%l?14dx4(-Z%{T3j?wukYdv_lnA7AsS3xQ(f92M@m8;gyiPLP5LZ*FdO0*W>M zL)7@-Al>8LUk1O&zhvF=HYLm*mdnt z$^}#vv0KL5r~A`aXqvjZ9+Ru9VmeyXjOcQU9tv31mF4B_EPqkzK~{@3=G$w}PmTUc z^rwd5U`iZF7QsyJJ6sh>xdI((MhuAEvu?X*{WFzAo0IgAyvaujSTQNj*tHNyTI}g& z%h;jg)*?iwF$4lL2erGMu2$#d;XDx)4mW%EUU#@9sYfqcyREKkd zGXHbl4fK7y+sJYIi;-GQdCoCWhjMfYdITK@&9m51Rm#yeV= z7+NhG8{5zLThRiA3Qa^lDDTaVTI2VShGi?%k607+HuD3*r)^SxbG4Q#7rW^W3VikX z$F6GGz)+Xb(b4YG;J4L6KlS@SH5=;g@~>Hvf{VWx19N2}ARusge!d;|lhf6uxZO!M z!qTgu+SHq28Q&dEADk)HIB*IgYXKCe+0IZRBS5y^m!krIJII8SLyD3h*>5@@;zv?> zLQhs_XA`^rHh!K}sA;c%^ykD0GG$ix5E1g{=z*2Md4sh<2|tbp&zHL)R+vk5)-N8( zL4S{z$$aaShp*xoWaR*Olvh&1udb<~w_B>C1G@bcu%lO!HtMLf=t@H_PY)i%5D0wy zosQ$t%#7yJK!f|aNupNL5-K}-V*LouJmze(%R&6x;+y@vn1SETIG>C}Rbh$ZuZ zSUNLc_!)ix`?m{{4RgQe={Gt0Z}0BL`=en_F@l%>6B3HIo-QO(Q5hGKXywGo2Mt6( zdO+&Ys!&$QF&aZqT}64h-2}R1Q&qwH8YA?eT6 zRhEUyvW$S@%)k&cED%4hpU9>ya(Gke)b#Wq0J?(!s2}tNu=?B`{Fu?v($cy*0n{>S zJJor6Z7omx<=4|yC6wFCaq+O$R$-6Fzw?9Drv3XHRWu+I9CRJW9MBt1^p3S!OTxuw z=hurh;P=cg-g;hHdD?^UISCw%+C3A4LPIrDRN2|t2Liyj1H*4R72nWCw>qqey|rE7 zqMR<$$d>=c6!(9moh$$NjZo|cF_I;ko?VF(j`|5jwe{;UGXz0LPap6#K++gcdf31J zuWzhqK#-wqiNJj)HNq}}0G=yJ$wbfuq4)#bQB4)FQv*EX zB2pm)G$kU`r#%oaloUX`eB0bKX&H4}^U)^E?(LOs8F%P>Op;8<$WR0%s6xlh<_6`V zi0e5H8Xe3emAwh$tl70}-K+1ZF5OwhVLKrT{-UdMdIWMtZy*FSvSS1cwO&&cL4k)p3{;_J*g*cI_)~rx0&<1#?)oCkah}46(3-uEQ#GW_<*S-co&v@~t zo4{ZC$iD#U{ctgMtP~W83_vL5C?LYjzgkqnV?T(wlVD78K{$V<@>nK-HhNT2xFk}$ z>0051jG8bI`q{!$j)Ej2n*hlYd)#FXOE<2F*M{l4^ul>8MzSe#Ah0G=s5j!k61vN`1c*gZUA) zWnn?boXLV8RICAeibjVcF(J_09za-LRY+6~o8Z(9!-Q||{#434I&$GBpkSZ4tOj#~ zP43Cikl;xy_Z+!?eS(( zNs1`0(FB61z)r-7fIrfR=w6hG>@akN$etQ5GBUEmvCXZmu<~*a-5N9OgSF1ij%jym z&ZE_KuX)F}>bRSP`R7G=I57X0q+iYPXhl+5U{G=>ch~=YSfKoe*n;%{Ivxquh-*sy zjF)~7YKy*CSJNufwmA54W$QfXbGB1D4yvnq8jhL&#EMa>PI(-EC>-pFsZ{C2CB&++ny1Jcq&%d7X#G>IuVOX50xPd4{B9a)R1y%v! zm6%hGW(un0W+C2wRGlvi| zu=sFQf5u0h)rC)_6X0yAP=az#0O`5g4NNUrsR+$F0T$dVR7|}{ouQ<|*d&oVJl#3Q zH$^c3g~!Bv=W{)raUcN|Q;(sz6;iA6`#n8mv1wQQeqAqAgDPL2;?yt?&IaR>29@d6 zAGQ^un1iq$ja}r}=z4PiL$SQHq&EdOq=0RK=>9U}gZC>tpGxYhs}J&#epLgg9}k1a z;)%JzCZSCA$VFAjOQE!QTv`++CzIW|K%Th}hf!fNi7BYY zb;PLF_kgpT1>V}UV1^7tw*~)@s}vW1UiBz{8`ZGB>$_d z$eVq-rVC(JDe=2~1{ccDeD%%BOd+HPfDg0fzgej(Vfr4G!-0slmz9-`jF3R17iW-a z9!OX?q#o#nVA93fXQrjy$;07Ye*JvpcV#<|>5*U{y8DKThQ>Yh5;TjOt-C(*oeMWV zG4RjU)|OFXVhpo&30L{phQs3@8OAD!4k7eV)c2KvFfgyx1SB(K%{9|H| zA$ivnC31n9$3pS>XDFd*ByNP?A%|dvb)1sw^xag!`}D_$2U>!@Z|`fX;1(9UsrD-^ z#&+mpPZIYrzxas%)MMJMbvz~_kys)s8l0oOs9|AY-2Y#Yx6UBBoxJb8Ei5;J$T4*q ze%qA!EKx7@qvPZBu-h~@J~md?^^SmO>i_6nj9f_(0Sherb1x7 zT4+aGKRz%ZxLRvDZmoY^aM5gB0xim-iin87O$S1zAGU^HFS*PwOJB(-R~U8rjvX!5 zP9nmhDw05Wbk7(g|_3~SZ4Lc#)b{}q}1@bPci><8DZx(jg4mA>0EjGGQiPe z#ux$mX<1;dLa&Kz3IAkH16Iwt$C*_BZc4)2v{EYeU;oBxB`nGTiP7meQ>6ArKol^< zLhfhlg=%>+IrILm1~a;f3L}8O-VC%hGyMvPF0DaE zJreocgcWX-;K3pjExPM`)YYeYVq;^Am4<^xTloRWxdtUBu8~9`6nBy0b)SQxov+o> z(GJCh0}|gJ2#z|S{Iabc>8lSmG1ilSGLR@PE>2lx)qI&a9;uxieEva#|Cf*s5iVUp zzg6G-FCai5jKCY{^X5QM)C;?v=<^u&pqFKU-4~i(){jTbfAA+a`>Tls0Ww+Yf9K~O zO_BlnBU7k=1AW!e(Gf^;Ca3<=js)2!UuGO~a$CtZ-vhgLPUVuI9ite58OvdG!vzosCRyEA5q44`?YU3_a0Fg|M&d zldYZP@n6Sn_T1Rr>L8ULDFhv}`;$06esw!qP_sASW#|A3!BE6{Dt}KUOC+@t>BVK1 z=$ckC+II8#v%*&JGES(cDv2JTBc0#0o%KAMB;quubbuA!zpvgr5(XgY&K@lCfRx(F zm$3Ux4~FdyEvOPE&1oPBs0ATFQ2o$$G*rj!wPlAkpO}%+<^^o*B!fLnXh`tSY$5hP@lZj5nc(w@a|3FtoWd3A z%iYmG^`E)}(95`3$);;TN!=d-4(a{Bz0PztK!l36z~k@a277|$KGBr#Zz9-CSE#=l zd7t++Ic@!VXL@eaoDvPL!rBL(m}fbX;xDURgCXUTbWwr(ntf@npoB@?6qbW?E@gBu zWZ{0iRBv;Aw(--bZ^{3QwKwi3@G_9i;&1(m`WayCXy8s~PDY@Wh#td<)7vlQjh088 z3)tt5mr&?cqzI(b38e>gn~;zo${-spJ;5F%+pJTlxnpewDIZEa|7ny6p%L}G+Un}+ z>JIUa)!Q z>Za$_{^a|R0YM12d(Y3GmV0}9$*eP>-9Jf@CPUMo++CvlgA^E(Qq|n%I()o-^!E0u zpu|zXpdh916;aJXB9Z?A+8w;5&ZQ04`{GOT0zJ472wdta{DX2QnJj_ zKdU`?6_sb-?SVL*cnFJ77tt>f&tTa#97bCPNs-iP6iG}P7kLqbFS#=6mvHwfL+Gjbf5F%=QaWRU`vTRARvf3!F;G2wO&HEBj`Foxxr zLRDTVDk$g)+02!lLeD_dd0nP*h#*MyQ6vjduoYknMd=wBw7on$nunw$@+E@kC_Fqo z-WmDc?sU#o7~I!_Xy-b?v)ssweV!<7ZD-#Qwl$L|-tWb6qa8l?q(BrW9-&KHLs^W8 zT@t7ZrJ$f#3l0kUL=5{4trRM=Tv|Gm0$ zN$S^$kP6}+0n#mYd1Ylo9spBB`h&Uy-P+vUucpTGx}Q z_Umv)hNkpMm(8a2y(?=+Vh#$?(HWb37xS?&q4jl6kBDhLbk7v^y1oQ(-(Ichbytr* zi3ZJF9zk+}^I8&9ACa#EI~h|DvU|9dw}=Q0+a8}w7YM3W%nzmtG_u?`!;;UkmkSAq zv%48a{eYAu2r!Ipmwgdr5%1O|lF_?}TG$t6nTJfv*cH?9qE4ku?PQ>|C+2)+1CW1< zwU(V{H(N2C$b^?GbV}yUqU>y;_E`D509O4GaB^~5272H_HaQ1Y!G;kY^<28WX0kaB z4r8H=Dm^LHxjlY(Z);=H^G&}vb#7i>|K06vaJ}8~94;)?29rZb3`H5pSquScU)|r| zH|TtR@@htnx~PtxG)O8&VO0EkyMXn%7aAtfi|A?H!F=h>l@AbZj-jEU z1On@ghLPG!wk|a4HXv_OSN<-Rd3C+)@KU3Ru?ROXIK~MSRf0EM#5t^qvWe!2K@<^_ zLQf}S;zSHG@%xB@j$W4vaQPXKt`mHoub`o6!-!QZ5XC+g0AX&q*spbDCM71idaty& z$^tR(32WCUZu~$@ST&gq#7yEXTA^AucQCn}Mmo{(f_rQVJ$DMZwEK^65(s2n2w;IH z10cKuPGm$;ortsMEKN@WMM>L{UD5RupU1Xl_( z9LKyzSffUkNhxjn&)(jA_fO!OoSa-)UG0bh@}b(&QX4lrR$Wa^m+F#|lKkA+D3#T6SFElI+!8(T{{jYA)F+=+}MHod?Z9mcpdfS>3J4F{Zkh659 z_B5E3^kS}xz$C2>nd2lAbzY!)S;E3*6CIp45(6Y)=tzk^KTeFu3!?b&z%&uT-9q?M zNxaTTFB^%C4KZr})7}PANvx`W5NN}T|2ia8nug1wfPWV%{a#DRFfm98)tmn{y5fGr zOfjMGYr|lmEZrP>KA7Z8rMP(KjlScW1=`5@1&<{@@L_<^|Gx#$p2vd~R!O=NIR~dD z=%(O@^}WNx(MtWc*!0?tQ&Iz6P9uq>jOV!%>V<56spZJaV&#tZEY6WJ{pBi2QvetR OB>zrXxU_aP_6AFySbZV?c05@@TbnD|-m1#f-$C;!swwE3x>lS@zHRNx=F`?X#__I?W) z8H2S=Y+(XyA+H@T6bQ({ocYAAi?@e1N=i11HvfIwEY9AB1P5OSZQTTJ2DkqEcB^1P zN30h7vvNLh1XX5j)##u^xD@k(>JBVB^?Wjbn|$Iyj|wOm`AW3lSdqjEJz`-FewBq zJ_xX;f1}SPv(hHhKJv1D;3r5)Jha0%5gq1bV#`IZ7n@X`#CWXN6uz@tNhFF5{w(oD z;qA5^X2pzqMUXN%>)XnR9Y*~P-$u18TGS=6^r7f=ew))o&*|dr)bOyPoH#sPn8Gd^ zCaZ{rvyg2X+jy5e`D_>c%%{wSw>;*zgSADq2fzgdbi8F;)3(%oMzK3 zh4uG^FhqXxMJ|^=MN-wB6j(q_XK*)`z}wvSjFiY32eQm(GhF%%Apkt56(i7$&8TPf zuT~fN#r5&uM5sCeE$t+9h%;HbA4t2&&zYB8-3f|UR%_-o$Xup9iebBF^SNWmNJ-oy z4dPc{B)L+s+LxJ-9wT{V@lWOLK+IN(6FA43!xZf|{V=7{REx#cPE_qkITX$i$;smU zlDgY@BKx08_R7y%@Q1Qrq_PoK|2&j$`#@dX)i6%qG^i}NoxEH(J`el$5+os=vqVp* zRHYi5^CXCcyj8#6lrP47($DvL?fLf&MJzr2<9{A;m+7z2elrXYXV=bi3ne4^XV^s; zT$9n-M=QMcUuz+46jN|r?asopvO6fRTv5|(m2@bVn5tYadHl$QLr-50BRzr0pU0ooZ8coW#G|X zsHS`}wF-G1%vEqJGfeN~LD&hhkAUaYEEp4=Pi&j@eN6jCLcLsYr?UwbE7#aYe$1`% zg^w+>o6mUEo`o}couxQn7{rojdDJxf8CQJ8Oh}jU{17_Q7xa5oxYgrlfK*gEjf(O( z)5)D<^mLv6!8UbSZrxiMsisT5qo}UbZlDkVgNa9dvxRGv3qnJ|xI<=tIptMDa$p^d zTt$-Sjb|Q${1~lu(AzF2k0rpA4^5t-t+HIf{A~IQCh-V0CerLP9x?GPlti}SPd`UW z>r)>y4_DFdeqJ3`_TOWxaZ}O$$cl-NWuHybOuqh1)Mn=E8n(XT-+0Q9tZt)5$YH~X z^v?VtjJBxo%}wj#;grNu*G{08PT5EmWl{=WrQ0ea+YpH+(G>>7_q_6CZ@M6PehlI@ z))o39-{Er$h>f-j{=xL3TD6_iZ4V-`Cm(8^hA=E#EUa}@2w`Q{`$`k{gv;Pn2Io)C z(et;oa|j`NIOV^N01c*Wf590}>eLl=NBjTFX|R83RtDh-$3eZJ5E}l zs-l45g&LY)+L9g@36~@!dq)r4F!f8i)VcXCbs5r@^+*xr*!NOQav5caj3D)PTQB)% zLZtRzo}-$<4^wI0ti-_pa=Zzp?_f9ctHBrsQp3wrJF=M@+TBB84}zT3-WHeAReI7s zv}KX?42|i`7&hZEx1ww|X~aycit3U;cf|O^$+;4!8~gCdV9r0G&wDu7z~i%d@Dkd# z@)ZJE`08bHSNfg~(6BaCb$$GLQ1Xp&+(rwr5HSYxc=2T?D&EZ0_q9N}z!1-Z-p_P! zIK3+dz#)wkM_?IA2>3twXjY3X#u1Vq4ND`_B+)C-HaWu=Xg|fyBFGD~!^sPN+G4Yt z!Z@4BRnaEJHU#A!^g}ERkU%20A&8#am3tx)L~MUj>hzn8Rk9~l%(Ot%vY8Lblf~UN z+!HevT$aoc3gYBq-_d8$K&Ca?+MI{L)sDt@MgS>U{>0qkiq8lVd6&-SV@L?r*p z`s;E}ElmU0R15uTcjUzTkot5V)03&ZboI>BO&jLk!dg~62OpNxL`GR%!yyHx)R%EM zkeBi|;dI-0K)c%M$eX!RZpdTeO6x7u3yY>LIG%=iDUui|KlS2>b|$tyA`OPhHY2sA_$hoY}$KUXgLzcRtC|1##EDJXt{RL z!1dFJke2pz9^DS9WX95z`}4B#bjA52e)&BH<2|uayI5--_U}1~W;yfowabH>3EFZYRCV9%TB-)+*GD3G$&HnT1P@uj%ULOy=7;oArwtGOj#gb{hJ^@%F07 z2e7Vg*I0@8+70lQ�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 Ksa2_>!v6;pY-R%h literal 0 HcmV?d00001 diff --git a/banking_app_flutter-main/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png b/banking_app_flutter-main/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc758625cead3a7c144aeabc96ee515b62febca GIT binary patch literal 8238 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 literal 0 HcmV?d00001 diff --git a/banking_app_flutter-main/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png b/banking_app_flutter-main/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png new file mode 100644 index 0000000000000000000000000000000000000000..94f505f2764d89f92e7fee30d891781fe2f96a9f GIT binary patch literal 24980 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 c!2hLmo>g)Vqq~+2d}e_}SJOzNMjajbKif&B2|@ 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 + + + + + + diff --git a/banking_app_flutter-main/android/app/src/main/res/values/styles.xml b/banking_app_flutter-main/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..cb1ef880 --- /dev/null +++ b/banking_app_flutter-main/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/banking_app_flutter-main/android/app/src/profile/AndroidManifest.xml b/banking_app_flutter-main/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000..eb9dacc2 --- /dev/null +++ b/banking_app_flutter-main/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/banking_app_flutter-main/android/build.gradle b/banking_app_flutter-main/android/build.gradle new file mode 100644 index 00000000..83ae2200 --- /dev/null +++ b/banking_app_flutter-main/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.6.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.1.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/banking_app_flutter-main/android/gradle.properties b/banking_app_flutter-main/android/gradle.properties new file mode 100644 index 00000000..94adc3a3 --- /dev/null +++ b/banking_app_flutter-main/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/banking_app_flutter-main/android/gradle/wrapper/gradle-wrapper.properties b/banking_app_flutter-main/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..cb24abda --- /dev/null +++ b/banking_app_flutter-main/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/banking_app_flutter-main/android/settings.gradle b/banking_app_flutter-main/android/settings.gradle new file mode 100644 index 00000000..44e62bcf --- /dev/null +++ b/banking_app_flutter-main/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/banking_app_flutter-main/lib/db/db_helper.dart b/banking_app_flutter-main/lib/db/db_helper.dart new file mode 100644 index 00000000..6b8e527d --- /dev/null +++ b/banking_app_flutter-main/lib/db/db_helper.dart @@ -0,0 +1,121 @@ +import 'dart:async'; + +import 'package:faker/faker.dart'; +import 'package:sqflite/sqflite.dart'; +import 'package:path/path.dart' as p; + +import '../model/customer.dart'; +import '../model/transfer_transaction.dart'; + +class DbHelper { + static DbHelper instance = DbHelper._(); + static const String tableName = 'CUSTOMERS'; + static const String tableName2 = 'TRANSFERS'; + DbHelper._(); + Database? _database; + + Future get database async { + return _database ??= await openDatabase( + p.join(await getDatabasesPath(), "Mydb.db"), + version: 1, + onCreate: _onCreate, + ); + } + + Future> getAllCustomers() async { + List customers = []; + final db = await instance.database; + final result = await db.query(tableName); + for (var customerData in result) { + customers.add(Customer.fromJson(customerData)); + } + return customers; + } + + Future updateCustomer(Customer customer) async { + final db = await instance.database; + await db.rawUpdate( + 'Update $tableName Set balance=? where name=?', + [ + customer.balance, + customer.name, + ], + ); + print('updated'); + } + + FutureOr _onCreate(Database db, int version) async { + await db.execute("""CREATE TABLE $tableName( + name TEXT Primary Key, + email TEXT, + balance REAL + )"""); + await db.execute("""CREATE TABLE $tableName2( + from_name TEXT, + to_name TEXT, + to_email TEXT, + from_email TEXT, + amount REAL + )"""); + print("$tableName created"); + print("$tableName2 created"); + _insertCustomerData(); + } + + Future addTransfer(TransferTransaction transfer) async { + final db = await instance.database; + await db.insert( + tableName2, + { + 'to_name': transfer.to, + 'from_name': transfer.from, + 'from_email': transfer.fromEmail, + 'to_email': transfer.toEmail, + 'amount': transfer.amount, + }, + ); + print("$transfer inserted into db"); + } + + Future> getAllTransfersOfCustomer( + Customer customer) async { + List transfers = []; + final db = await database; + final result = await db.query( + tableName2, + where: 'to_name=? OR from_name=?', + whereArgs: [ + customer.name, + customer.name, + ], + ); + for (var transferData in result) { + transfers.add(TransferTransaction.fromJson(transferData)); + } + return transfers; + } + + void _insertCustomerData() async { + final db = await instance.database; + Faker faker = Faker(); + String insertQuery = "INSERT INTO $tableName Values"; + for (var i = 0; i < 10; i++) { + String name = faker.person.name(); + name = name.replaceAll("'", ""); + String email = faker.internet.email(); + email = email.replaceAll("'", ""); + final balance = faker.randomGenerator.decimal(min: 315, scale: 20000); + insertQuery += "('$name','$email',${balance.toStringAsFixed(2)}),"; + } + insertQuery = insertQuery.substring(0, insertQuery.length - 1); + print('Query: $insertQuery'); + await db.rawInsert(insertQuery); + print("Rows inserted"); + } + + Future deleteDb() async { + await deleteDatabase(p.join(await getDatabasesPath(), 'Mydb.db')); + _database = null; + print("deleted"); + } +} diff --git a/banking_app_flutter-main/lib/main.dart b/banking_app_flutter-main/lib/main.dart new file mode 100644 index 00000000..5f76f3dc --- /dev/null +++ b/banking_app_flutter-main/lib/main.dart @@ -0,0 +1,21 @@ +import 'package:banking_app/db/db_helper.dart'; +import 'package:banking_app/pages/home.dart'; +import 'package:flutter/material.dart'; + +void main() async { + WidgetsFlutterBinding.ensureInitialized(); + await DbHelper.instance.database; + runApp(const BankingApp()); +} + +class BankingApp extends StatelessWidget { + const BankingApp({super.key}); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + debugShowCheckedModeBanner: false, + home: HomePage(), + ); + } +} diff --git a/banking_app_flutter-main/lib/model/customer.dart b/banking_app_flutter-main/lib/model/customer.dart new file mode 100644 index 00000000..90c9e2c0 --- /dev/null +++ b/banking_app_flutter-main/lib/model/customer.dart @@ -0,0 +1,25 @@ +class Customer { + String name; + String email; + double balance; + + Customer({ + required this.balance, + required this.email, + required this.name, + }); + + static Customer fromJson(json) => Customer( + balance: json['balance'], + email: json['email'], + name: json['name'], + ); + + @override + String toString() { + return '''Customer{ + name: $name, + email: $email, + balance:$balance}\n'''; + } +} diff --git a/banking_app_flutter-main/lib/model/transfer_transaction.dart b/banking_app_flutter-main/lib/model/transfer_transaction.dart new file mode 100644 index 00000000..01cc0d7e --- /dev/null +++ b/banking_app_flutter-main/lib/model/transfer_transaction.dart @@ -0,0 +1,31 @@ +class TransferTransaction { + String from; + String to; + String toEmail; + String fromEmail; + double amount; + + TransferTransaction({ + required this.amount, + required this.to, + required this.from, + required this.fromEmail, + required this.toEmail, + }); + + static TransferTransaction fromJson(json) => TransferTransaction( + amount: json['amount'], + from: json['from_name'], + fromEmail: json['to_email'], + to: json['to_name'], + toEmail: json['to_email'], + ); + + @override + String toString() { + return '''Transfer{ + From: $from, + To: $to, + Amount:$amount}\n'''; + } +} diff --git a/banking_app_flutter-main/lib/pages/home.dart b/banking_app_flutter-main/lib/pages/home.dart new file mode 100644 index 00000000..4cd29fcc --- /dev/null +++ b/banking_app_flutter-main/lib/pages/home.dart @@ -0,0 +1,94 @@ +import 'package:banking_app/pages/select_operation_page.dart'; +import 'package:flutter/material.dart'; + +import '../db/db_helper.dart'; +import '../model/customer.dart'; +import '../widgets/customer_card.dart'; + +class HomePage extends StatefulWidget { + const HomePage({super.key}); + + @override + State createState() => _HomePageState(); +} + +class _HomePageState extends State { + bool isLoading = false; + final _dbHelper = DbHelper.instance; + List customerList = []; + @override + void initState() { + super.initState(); + loadData(); + loadData(); + } + + loadData() async { + setState(() { + isLoading = true; + }); + final data = await _dbHelper.getAllCustomers(); + print(data.length); + setState(() { + customerList = data; + }); + await Future.delayed(const Duration(milliseconds: 300)); + print("done"); + setState(() { + isLoading = false; + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('All customers'), + centerTitle: true, + actions: [ + IconButton(onPressed: loadData, icon: const Icon(Icons.refresh)) + ], + ), + body: Container( + margin: const EdgeInsets.all(10.0), + child: isLoading + ? const Center( + child: CircularProgressIndicator( + color: Colors.pink, + strokeWidth: 5, + ), + ) + : customerList.isEmpty + ? const Center( + child: Text('No data available.'), + ) + : ListView.builder( + padding: const EdgeInsets.only(bottom: 10.0), + itemCount: customerList.length, + itemBuilder: (context, index) => CustomerCard( + customer: customerList[index], + onPressed: () async { + final answer = await Navigator.push( + context, + MaterialPageRoute(builder: (_) { + return SelectOperationPage( + customerList: customerList, + selectedCustomer: customerList[index], + ); + }), + ); + if (answer != null && answer == 1) { + loadData(); + } + }, + ), + ), + ), + // floatingActionButton: FloatingActionButton( + // onPressed: () async { + // await _dbHelper.deleteDb(); + // }, + // ), + ); + } +} diff --git a/banking_app_flutter-main/lib/pages/select_customer_page.dart b/banking_app_flutter-main/lib/pages/select_customer_page.dart new file mode 100644 index 00000000..c5dd79df --- /dev/null +++ b/banking_app_flutter-main/lib/pages/select_customer_page.dart @@ -0,0 +1,44 @@ +import 'package:banking_app/pages/transaction_page.dart'; +import 'package:flutter/material.dart'; + +import '../model/customer.dart'; +import '../widgets/customer_card.dart'; + +class SelectCustomerPage extends StatelessWidget { + final List customerList; + final Customer selected; + + const SelectCustomerPage({ + super.key, + required this.customerList, + required this.selected, + }); + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Select a customer'), + ), + body: Container( + margin: const EdgeInsets.all(10.0), + child: ListView.builder( + itemCount: customerList.length, + itemBuilder: (_, index) => CustomerCard( + customer: customerList[index], + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (_) => TransactionPage( + fromCustomer: selected, + toCustomer: customerList[index], + ), + ), + ); + }, + ), + ), + ), + ); + } +} diff --git a/banking_app_flutter-main/lib/pages/select_operation_page.dart b/banking_app_flutter-main/lib/pages/select_operation_page.dart new file mode 100644 index 00000000..2ab79f6d --- /dev/null +++ b/banking_app_flutter-main/lib/pages/select_operation_page.dart @@ -0,0 +1,81 @@ +import 'package:banking_app/pages/select_customer_page.dart'; +import 'package:banking_app/pages/transaction_history.dart'; +import 'package:flutter/material.dart'; + +import '../model/customer.dart'; + +class SelectOperationPage extends StatelessWidget { + const SelectOperationPage( + {super.key, required this.selectedCustomer, required this.customerList}); + final Customer selectedCustomer; + final List customerList; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Choose an operation'), + centerTitle: true, + ), + body: Padding( + padding: const EdgeInsets.all(15.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + buildRoundedButton( + 'Transfer Money', + () => onTransferMoneyBtnPressed(context), + ), + const SizedBox(width: 10, height: 10), + buildRoundedButton( + 'View Transactions', + () => onViewTransactionPressed(context), + ), + ], + ), + ), + ); + } + + ElevatedButton buildRoundedButton(String btnText, VoidCallback onPressed) { + return ElevatedButton( + style: ElevatedButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), + ), + onPressed: onPressed, + child: Padding( + padding: const EdgeInsets.all(15.0), + child: Text(btnText), + ), + ); + } + + void onTransferMoneyBtnPressed(context) async { + final thisCustomerList = customerList + .where((customer) => customer.name != selectedCustomer.name) + .toList(); + Navigator.push( + context, + MaterialPageRoute(builder: (_) { + return SelectCustomerPage( + customerList: thisCustomerList, + selected: selectedCustomer, + ); + }), + ); + } + + void onViewTransactionPressed(context) { + Navigator.push( + context, + MaterialPageRoute(builder: (_) { + return TransactionHistoryPage( + selectedCustomer: selectedCustomer, + ); + }), + ); + } +} diff --git a/banking_app_flutter-main/lib/pages/transaction_history.dart b/banking_app_flutter-main/lib/pages/transaction_history.dart new file mode 100644 index 00000000..ebf1f7eb --- /dev/null +++ b/banking_app_flutter-main/lib/pages/transaction_history.dart @@ -0,0 +1,65 @@ +import 'package:banking_app/model/customer.dart'; +import 'package:banking_app/model/transfer_transaction.dart'; +import 'package:flutter/material.dart'; + +import '../db/db_helper.dart'; +import '../widgets/transferhistorycard.dart'; + +class TransactionHistoryPage extends StatefulWidget { + const TransactionHistoryPage({super.key, required this.selectedCustomer}); + final Customer selectedCustomer; + @override + State createState() => _TransactionHistoryPageState(); +} + +class _TransactionHistoryPageState extends State { + bool isLoading = false; + final _dbHelper = DbHelper.instance; + List transactions = []; + + @override + void initState() { + super.initState(); + loadTransactionHistory(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Transaction History'), + ), + body: isLoading + ? const Center( + child: CircularProgressIndicator( + color: Colors.pink, + ), + ) + : transactions.isEmpty + ? const Center(child: Text('No transaction history.')) + : ListView.builder( + itemCount: transactions.length, + itemBuilder: (_, index) => TransferTransactionCard( + transaction: transactions[index], + ), + ), + ); + } + + void loadTransactionHistory() async { + setState(() { + isLoading = true; + }); + final history = + await _dbHelper.getAllTransfersOfCustomer(widget.selectedCustomer); + if (history.isNotEmpty) { + setState(() { + transactions = history; + }); + } + await Future.delayed(const Duration(milliseconds: 200)); + setState(() { + isLoading = false; + }); + } +} diff --git a/banking_app_flutter-main/lib/pages/transaction_page.dart b/banking_app_flutter-main/lib/pages/transaction_page.dart new file mode 100644 index 00000000..21dc5f8f --- /dev/null +++ b/banking_app_flutter-main/lib/pages/transaction_page.dart @@ -0,0 +1,240 @@ +import 'dart:async'; + +import 'package:banking_app/db/db_helper.dart'; +import 'package:banking_app/model/transfer_transaction.dart'; +import 'package:flutter/material.dart'; + +import '../model/customer.dart'; + +class TransactionPage extends StatefulWidget { + const TransactionPage( + {super.key, required this.fromCustomer, required this.toCustomer}); + final Customer fromCustomer; + final Customer toCustomer; + + @override + State createState() => _TransactionPageState(); +} + +class _TransactionPageState extends State { + final formKey = GlobalKey(); + final amountController = TextEditingController(); + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Enter amount'), + ), + body: Form( + key: formKey, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Stack( + fit: StackFit.expand, + children: [ + buildHeader(), + Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + buildAvailableBalance(), + const SizedBox(width: 10, height: 30), + buildAmountTextField(), + const SizedBox(width: 10, height: 10), + buildTransferBtn(), + ], + ), + ], + ), + ), + ), + ); + } + + Align buildAvailableBalance() { + return Align( + alignment: Alignment.topRight, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Text( + 'Available balance: ', + style: buildDialogTextStyle(color: Colors.black, fontSize: 15), + ), + Text( + '\$${widget.fromCustomer.balance}', + style: const TextStyle( + fontSize: 15, + color: Colors.blue, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ); + } + + Column buildHeader() { + return Column( + children: [ + Text( + 'From', + style: buildDialogTextStyle(color: Colors.black), + ), + Text( + widget.fromCustomer.name, + style: buildDialogTextStyle(fontSize: 25), + ), + const SizedBox(width: 10, height: 10), + Text( + 'To', + style: buildDialogTextStyle(color: Colors.black), + ), + Text( + widget.toCustomer.name, + style: buildDialogTextStyle(fontSize: 25), + ), + ], + ); + } + + ElevatedButton buildTransferBtn() { + return ElevatedButton( + style: ElevatedButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), + ), + onPressed: onTransferBtnPressed, + child: const Padding( + padding: EdgeInsets.all(15.0), + child: Text('Transfer'), + ), + ); + } + + TextFormField buildAmountTextField() { + return TextFormField( + keyboardType: const TextInputType.numberWithOptions(decimal: true), + decoration: InputDecoration( + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(20.0), + ), + hintText: '\$ amount', + ), + controller: amountController, + validator: (val) { + if (val == null || val.isEmpty) { + return 'enter an amount.'; + } + if (double.parse(val) > widget.fromCustomer.balance) { + return 'not enough balance.'; + } + return null; + }, + ); + } + + AlertDialog buildAlertDialog(double amount) { + return AlertDialog( + contentPadding: const EdgeInsets.all(20.0), + title: Center( + child: Text( + 'Transfer Successful', + style: buildDialogTextStyle( + fontSize: 22, + color: Colors.black, + ), + ), + ), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon( + Icons.check, + color: Colors.green, + size: 80, + ), + const SizedBox(width: 10, height: 10), + Text( + 'From', + style: buildDialogTextStyle(color: Colors.black), + ), + Text( + widget.fromCustomer.name, + style: buildDialogTextStyle(), + ), + const SizedBox(width: 10, height: 10), + Text( + 'To', + style: buildDialogTextStyle(color: Colors.black), + ), + Text( + widget.toCustomer.name, + style: buildDialogTextStyle(), + ), + const SizedBox(width: 10, height: 10), + Text( + 'Amount', + style: buildDialogTextStyle(color: Colors.black), + ), + Text( + '\$$amount', + style: buildDialogTextStyle(), + ), + ], + ), + ); + } + + TextStyle buildDialogTextStyle( + {Color color = Colors.blue, double fontSize = 20}) { + return TextStyle( + color: color, + fontSize: fontSize, + ); + } + + void onTransferBtnPressed() async { + if (formKey.currentState!.validate()) { + final amount = double.parse(amountController.text); + TransferTransaction transaction = TransferTransaction( + amount: double.parse(amountController.text), + to: widget.toCustomer.name, + from: widget.fromCustomer.name, + fromEmail: widget.fromCustomer.email, + toEmail: widget.toCustomer.email, + ); + print(transaction); + await DbHelper.instance.addTransfer(transaction); + // print("From Customer before: ${widget.fromCustomer}"); + // print("To Customer before: ${widget.toCustomer}"); + widget.fromCustomer.balance -= amount; + widget.toCustomer.balance += amount; + await DbHelper.instance.updateCustomer(widget.fromCustomer); + await DbHelper.instance.updateCustomer(widget.toCustomer); + // print("From Customer after: ${widget.fromCustomer}"); + // print("To Customer after: ${widget.toCustomer}"); + amountController.clear(); + setState(() {}); + await showDialog( + context: context, + // ignore: prefer_const_constructors + builder: (context) { + Timer(const Duration(milliseconds: 1200), () { + Navigator.pop(context); + }); + return buildAlertDialog(amount); + }, + ); + // ignore: use_build_context_synchronously + Navigator.pop(context); + // ignore: use_build_context_synchronously + Navigator.pop(context); + // ignore: use_build_context_synchronously + Navigator.pop(context, 1); + } else { + print("Validation failed"); + } + } +} diff --git a/banking_app_flutter-main/lib/widgets/customer_card.dart b/banking_app_flutter-main/lib/widgets/customer_card.dart new file mode 100644 index 00000000..af5e8a26 --- /dev/null +++ b/banking_app_flutter-main/lib/widgets/customer_card.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; + +import '../model/customer.dart'; + +class CustomerCard extends StatelessWidget { + const CustomerCard({ + super.key, + required this.customer, + required this.onPressed, + }); + + final Customer customer; + final VoidCallback? onPressed; + @override + Widget build(BuildContext context) { + return Card( + elevation: 5.0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), + color: Colors.blue, + child: ListTile( + onTap: onPressed, + leading: CircleAvatar( + radius: 30, + backgroundColor: Colors.white.withOpacity(0.9), + child: Text( + customer.name.characters.first.toUpperCase(), + style: const TextStyle( + color: Colors.blue, + fontSize: 25, + fontWeight: FontWeight.bold, + ), + ), + ), + contentPadding: const EdgeInsets.all(15.0), + textColor: Colors.white, + title: Text(customer.name), + subtitle: Text(customer.email), + trailing: Text('\$${customer.balance}'), + ), + ); + } +} diff --git a/banking_app_flutter-main/lib/widgets/transferhistorycard.dart b/banking_app_flutter-main/lib/widgets/transferhistorycard.dart new file mode 100644 index 00000000..34988c2e --- /dev/null +++ b/banking_app_flutter-main/lib/widgets/transferhistorycard.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; + +import '../model/transfer_transaction.dart'; + +class TransferTransactionCard extends StatelessWidget { + const TransferTransactionCard({Key? key, required this.transaction}) + : super(key: key); + final TransferTransaction transaction; + @override + Widget build(BuildContext context) { + return Card( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(15.0), + ), + margin: const EdgeInsets.all(10.0), + child: ListTile( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(15.0), + ), + title: Text('To: ${transaction.to}(${transaction.toEmail})'), + subtitle: Text('Amount: \$${transaction.amount}'), + tileColor: Colors.blue, + textColor: Colors.white, + ), + ); + } +} diff --git a/banking_app_flutter-main/pubspec.lock b/banking_app_flutter-main/pubspec.lock new file mode 100644 index 00000000..3632533b --- /dev/null +++ b/banking_app_flutter-main/pubspec.lock @@ -0,0 +1,203 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.9.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.16.0" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + faker: + dependency: "direct main" + description: + name: faker + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.12" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.5" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.2" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.0" + sqflite: + dependency: "direct main" + description: + name: sqflite + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0+1" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + synchronized: + dependency: transitive + description: + name: synchronized + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0+3" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.12" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" +sdks: + dart: ">=2.18.1 <3.0.0" + flutter: ">=3.3.0-0" diff --git a/banking_app_flutter-main/pubspec.yaml b/banking_app_flutter-main/pubspec.yaml new file mode 100644 index 00000000..d9fc326b --- /dev/null +++ b/banking_app_flutter-main/pubspec.yaml @@ -0,0 +1,78 @@ +name: banking_app +description: A new Flutter project. + +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +# In Windows, build-name is used as the major, minor, and patch parts +# of the product and file versions while build-number is used as the build suffix. +version: 1.0.0+1 + +environment: + sdk: '>=2.18.1 <3.0.0' + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + cupertino_icons: ^1.0.2 + faker: ^2.0.0 + flutter: + sdk: flutter + sqflite: ^2.1.0+1 + +dev_dependencies: + flutter_lints: ^2.0.0 + flutter_test: + sdk: flutter + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages