├── analysis_options.yaml ├── ios ├── Runner │ ├── Runner-Bridging-Header.h │ ├── Assets.xcassets │ │ ├── LaunchImage.imageset │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ ├── README.md │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ └── Contents.json │ ├── AppDelegate.swift │ ├── Base.lproj │ │ ├── Main.storyboard │ │ └── LaunchScreen.storyboard │ └── Info.plist ├── Flutter │ ├── Debug.xcconfig │ ├── Release.xcconfig │ └── AppFrameworkInfo.plist ├── Runner.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ └── IDEWorkspaceChecks.plist │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ └── project.pbxproj ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── WorkspaceSettings.xcsettings │ │ └── IDEWorkspaceChecks.plist ├── RunnerTests │ └── RunnerTests.swift ├── Podfile.lock ├── .gitignore └── Podfile ├── assets ├── icons │ └── add.png └── images │ ├── bg1.png │ ├── bg2.png │ ├── circles.png │ ├── profile.jpg │ └── success.png ├── screenshots ├── Screenshot 2024-10-31 at 9.09.45 PM.png ├── Screenshot 2024-10-31 at 9.09.54 PM.png ├── Screenshot 2024-10-31 at 9.10.20 PM.png ├── Screenshot 2024-10-31 at 9.10.30 PM.png ├── Screenshot 2024-10-31 at 9.10.37 PM.png ├── Screenshot 2024-10-31 at 9.10.42 PM.png └── Screenshot 2024-10-31 at 9.10.47 PM.png ├── android ├── app │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── drawable-v21 │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── values │ │ │ │ │ └── styles.xml │ │ │ │ └── values-night │ │ │ │ │ └── styles.xml │ │ │ ├── kotlin │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── note_app │ │ │ │ │ └── MainActivity.kt │ │ │ └── AndroidManifest.xml │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ └── profile │ │ │ └── AndroidManifest.xml │ └── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties ├── .gitignore ├── build.gradle └── settings.gradle ├── lib ├── constants │ ├── app_images.dart │ └── app_colors.dart ├── main.dart ├── common │ └── scale_button.dart └── views │ ├── home_view.dart │ ├── new_note_view.dart │ └── save_screen.dart ├── pubspec.yaml ├── README.md ├── .gitignore ├── .metadata └── pubspec.lock /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /assets/icons/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/assets/icons/add.png -------------------------------------------------------------------------------- /assets/images/bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/assets/images/bg1.png -------------------------------------------------------------------------------- /assets/images/bg2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/assets/images/bg2.png -------------------------------------------------------------------------------- /assets/images/circles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/assets/images/circles.png -------------------------------------------------------------------------------- /assets/images/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/assets/images/profile.jpg -------------------------------------------------------------------------------- /assets/images/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/assets/images/success.png -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /screenshots/Screenshot 2024-10-31 at 9.09.45 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/screenshots/Screenshot 2024-10-31 at 9.09.45 PM.png -------------------------------------------------------------------------------- /screenshots/Screenshot 2024-10-31 at 9.09.54 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/screenshots/Screenshot 2024-10-31 at 9.09.54 PM.png -------------------------------------------------------------------------------- /screenshots/Screenshot 2024-10-31 at 9.10.20 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/screenshots/Screenshot 2024-10-31 at 9.10.20 PM.png -------------------------------------------------------------------------------- /screenshots/Screenshot 2024-10-31 at 9.10.30 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/screenshots/Screenshot 2024-10-31 at 9.10.30 PM.png -------------------------------------------------------------------------------- /screenshots/Screenshot 2024-10-31 at 9.10.37 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/screenshots/Screenshot 2024-10-31 at 9.10.37 PM.png -------------------------------------------------------------------------------- /screenshots/Screenshot 2024-10-31 at 9.10.42 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/screenshots/Screenshot 2024-10-31 at 9.10.42 PM.png -------------------------------------------------------------------------------- /screenshots/Screenshot 2024-10-31 at 9.10.47 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/screenshots/Screenshot 2024-10-31 at 9.10.47 PM.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imgautam07/note_app/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/example/note_app/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.note_app 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() 6 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip 6 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/to/reference-keystore 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /lib/constants/app_images.dart: -------------------------------------------------------------------------------- 1 | class AppImages { 2 | static String bg1 = "assets/images/bg1.png"; 3 | static String bg2 = "assets/images/bg2.png"; 4 | static String circles = "assets/images/circles.png"; 5 | static String success = "assets/images/success.png"; 6 | static String profile = "assets/images/profile.jpg"; 7 | 8 | static String addIcon = "assets/icons/add.png"; 9 | } 10 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | allprojects { 2 | repositories { 3 | google() 4 | mavenCentral() 5 | } 6 | } 7 | 8 | rootProject.buildDir = "../build" 9 | subprojects { 10 | project.buildDir = "${rootProject.buildDir}/${project.name}" 11 | } 12 | subprojects { 13 | project.evaluationDependsOn(":app") 14 | } 15 | 16 | tasks.register("clean", Delete) { 17 | delete rootProject.buildDir 18 | } 19 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lib/constants/app_colors.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class AppColors { 4 | static Color darkHeader = const Color(0xFFF5F8FA); 5 | static Color amber = const Color(0xFFE3A68F); 6 | static Color indigo = const Color(0xFF7A78F2); 7 | static Color background = const Color(0xFFEAEFF4); 8 | static Color black = const Color(0xFF17191B); 9 | static Color greyColor = const Color(0xFF212325); 10 | } 11 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | 4 | @main 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: note_app 2 | description: "A new Flutter project." 3 | publish_to: 'none' 4 | version: 0.1.0 5 | 6 | environment: 7 | sdk: ^3.5.3 8 | 9 | dependencies: 10 | cupertino_icons: ^1.0.8 11 | flutter: 12 | sdk: flutter 13 | flutter_screenutil: ^5.9.3 14 | google_fonts: ^6.2.1 15 | iconsax: ^0.0.8 16 | intl: ^0.19.0 17 | 18 | dev_dependencies: 19 | flutter_test: 20 | sdk: flutter 21 | flutter_lints: ^4.0.0 22 | 23 | flutter: 24 | uses-material-design: true 25 | 26 | assets: 27 | - assets/ 28 | - assets/icons/ 29 | - assets/images/ 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # note_app 2 | 3 | A new Flutter project. 4 | [Project full illustration](https://www.instagram.com/p/DByn6kfyiZf/?img_index=1) 5 | 6 | ### Screen shots 7 | ![alt text]() 8 | ![alt text]() 9 | ![alt text]() 10 | ![alt text]() 11 | ![alt text]() 12 | ![alt text]() 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Flutter (1.0.0) 3 | - path_provider_foundation (0.0.1): 4 | - Flutter 5 | - FlutterMacOS 6 | 7 | DEPENDENCIES: 8 | - Flutter (from `Flutter`) 9 | - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) 10 | 11 | EXTERNAL SOURCES: 12 | Flutter: 13 | :path: Flutter 14 | path_provider_foundation: 15 | :path: ".symlinks/plugins/path_provider_foundation/darwin" 16 | 17 | SPEC CHECKSUMS: 18 | Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 19 | path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 20 | 21 | PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 22 | 23 | COCOAPODS: 1.15.2 24 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | def flutterSdkPath = { 3 | def properties = new Properties() 4 | file("local.properties").withInputStream { properties.load(it) } 5 | def flutterSdkPath = properties.getProperty("flutter.sdk") 6 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 7 | return flutterSdkPath 8 | }() 9 | 10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") 11 | 12 | repositories { 13 | google() 14 | mavenCentral() 15 | gradlePluginPortal() 16 | } 17 | } 18 | 19 | plugins { 20 | id "dev.flutter.flutter-plugin-loader" version "1.0.0" 21 | id "com.android.application" version "8.1.0" apply false 22 | id "org.jetbrains.kotlin.android" version "1.8.22" apply false 23 | } 24 | 25 | include ":app" 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | migrate_working_dir/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | #.vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | **/doc/api/ 26 | **/ios/Flutter/.last_build_id 27 | .dart_tool/ 28 | .flutter-plugins 29 | .flutter-plugins-dependencies 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Symbolication related 35 | app.*.symbols 36 | 37 | # Obfuscation related 38 | app.*.map.json 39 | 40 | # Android Studio will place build artifacts here 41 | /android/app/debug 42 | /android/app/profile 43 | /android/app/release 44 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 12.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_screenutil/flutter_screenutil.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:note_app/constants/app_colors.dart'; 5 | import 'package:note_app/views/home_view.dart'; 6 | 7 | /* 8 | 9 | instagram - @flutter.demon 10 | github - @unique-gautam-yadav 11 | 12 | This is a multiline text in flutter 13 | You can add text in any way here you can delete any text by dragging the cursor or any thing you can do here like a text editor 14 | 15 | Your you heard it right 16 | 17 | 18 | Flutter is love …………… 19 | 20 | 21 | */ 22 | 23 | void main() { 24 | runApp(const MainApp()); 25 | } 26 | 27 | class MainApp extends StatelessWidget { 28 | const MainApp({super.key}); 29 | 30 | @override 31 | Widget build(BuildContext context) { 32 | return ScreenUtilInit( 33 | designSize: const Size(393, 852), 34 | builder: (context, _) { 35 | return MaterialApp( 36 | debugShowCheckedModeBanner: false, 37 | theme: ThemeData( 38 | colorScheme: ColorScheme.fromSeed( 39 | seedColor: AppColors.amber, 40 | surface: AppColors.background, 41 | ), 42 | fontFamily: GoogleFonts.rubik().fontFamily, 43 | ), 44 | home: const HomeView(), 45 | ); 46 | }, 47 | ); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id "com.android.application" 3 | id "kotlin-android" 4 | // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. 5 | id "dev.flutter.flutter-gradle-plugin" 6 | } 7 | 8 | android { 9 | namespace = "com.example.note_app" 10 | compileSdk = flutter.compileSdkVersion 11 | ndkVersion = flutter.ndkVersion 12 | 13 | compileOptions { 14 | sourceCompatibility = JavaVersion.VERSION_1_8 15 | targetCompatibility = JavaVersion.VERSION_1_8 16 | } 17 | 18 | kotlinOptions { 19 | jvmTarget = JavaVersion.VERSION_1_8 20 | } 21 | 22 | defaultConfig { 23 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 24 | applicationId = "com.example.note_app" 25 | // You can update the following values to match your application needs. 26 | // For more information, see: https://flutter.dev/to/review-gradle-config. 27 | minSdk = flutter.minSdkVersion 28 | targetSdk = flutter.targetSdkVersion 29 | versionCode = flutter.versionCode 30 | versionName = flutter.versionName 31 | } 32 | 33 | buildTypes { 34 | release { 35 | // TODO: Add your own signing config for the release build. 36 | // Signing with the debug keys for now, so `flutter run --release` works. 37 | signingConfig = signingConfigs.debug 38 | } 39 | } 40 | } 41 | 42 | flutter { 43 | source = "../.." 44 | } 45 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment this line to define a global platform for your project 2 | # platform :ios, '12.0' 3 | 4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true' 6 | 7 | project 'Runner', { 8 | 'Debug' => :debug, 9 | 'Profile' => :release, 10 | 'Release' => :release, 11 | } 12 | 13 | def flutter_root 14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) 15 | unless File.exist?(generated_xcode_build_settings_path) 16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" 17 | end 18 | 19 | File.foreach(generated_xcode_build_settings_path) do |line| 20 | matches = line.match(/FLUTTER_ROOT\=(.*)/) 21 | return matches[1].strip if matches 22 | end 23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" 24 | end 25 | 26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) 27 | 28 | flutter_ios_podfile_setup 29 | 30 | target 'Runner' do 31 | use_frameworks! 32 | use_modular_headers! 33 | 34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) 35 | target 'RunnerTests' do 36 | inherit! :search_paths 37 | end 38 | end 39 | 40 | post_install do |installer| 41 | installer.pods_project.targets.each do |target| 42 | flutter_additional_ios_build_settings(target) 43 | end 44 | end 45 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | Note App 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | note_app 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(FLUTTER_BUILD_NAME) 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | $(FLUTTER_BUILD_NUMBER) 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | CADisableMinimumFrameDurationOnPhone 45 | 46 | UIApplicationSupportsIndirectInputEvents 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: "2663184aa79047d0a33a14a3b607954f8fdd8730" 8 | channel: "stable" 9 | 10 | project_type: app 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 17 | base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 18 | - platform: android 19 | create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 20 | base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 21 | - platform: ios 22 | create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 23 | base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 24 | - platform: linux 25 | create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 26 | base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 27 | - platform: macos 28 | create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 29 | base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 30 | - platform: web 31 | create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 32 | base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 33 | - platform: windows 34 | create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 35 | base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 36 | 37 | # User provided section 38 | 39 | # List of Local paths (relative to this file) that should be 40 | # ignored by the migrate tool. 41 | # 42 | # Files that are not part of the templates will be ignored by default. 43 | unmanaged_files: 44 | - 'lib/main.dart' 45 | - 'ios/Runner.xcodeproj/project.pbxproj' 46 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 15 | 19 | 23 | 24 | 25 | 26 | 27 | 28 | 30 | 33 | 34 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 37 | 38 | 39 | 40 | 43 | 49 | 50 | 51 | 52 | 53 | 63 | 65 | 71 | 72 | 73 | 74 | 80 | 82 | 88 | 89 | 90 | 91 | 93 | 94 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /lib/common/scale_button.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:flutter/material.dart'; 4 | 5 | class ScaleButton extends StatefulWidget { 6 | const ScaleButton({ 7 | super.key, 8 | required this.onTap, 9 | required this.child, 10 | this.scale, 11 | this.onLongPress, 12 | this.padding, 13 | this.opacityButton = false, 14 | this.onLongPressEnd, 15 | }); 16 | 17 | @override 18 | State createState() => _ScaleButtonState(); 19 | final FutureOr Function()? onTap; 20 | final VoidCallback? onLongPress; 21 | final VoidCallback? onLongPressEnd; 22 | final Widget child; 23 | final double? scale; 24 | final EdgeInsets? padding; 25 | final bool opacityButton; 26 | } 27 | 28 | class _ScaleButtonState extends State { 29 | bool isPressed = false; 30 | bool loading = false; 31 | 32 | func() async { 33 | loading = true; 34 | setState(() {}); 35 | 36 | try { 37 | await widget.onTap?.call(); 38 | } catch (e) { 39 | // 40 | } 41 | 42 | loading = false; 43 | setState(() {}); 44 | } 45 | 46 | @override 47 | Widget build(BuildContext context) { 48 | return AnimatedOpacity( 49 | opacity: widget.opacityButton 50 | ? isPressed 51 | ? .6 52 | : 1 53 | : isPressed 54 | ? (widget.scale ?? .97) 55 | : 1, 56 | duration: const Duration(milliseconds: 50), 57 | child: AnimatedScale( 58 | scale: isPressed ? (widget.scale ?? .97) : 1, 59 | duration: const Duration(milliseconds: 100), 60 | child: GestureDetector( 61 | onTap: widget.onTap == null || loading 62 | ? null 63 | : () { 64 | if (widget.onTap != null) { 65 | setState(() { 66 | isPressed = true; 67 | }); 68 | Future.delayed(const Duration(milliseconds: 50)) 69 | .then((value) { 70 | setState(() { 71 | isPressed = false; 72 | }); 73 | func(); 74 | }); 75 | } 76 | }, 77 | onTapDown: (_) { 78 | if (widget.onTap != null && loading != true) { 79 | setState(() { 80 | isPressed = true; 81 | }); 82 | } 83 | }, 84 | onLongPress: () { 85 | if (widget.onLongPress != null && loading != true) { 86 | setState(() { 87 | isPressed = true; 88 | }); 89 | } 90 | 91 | widget.onLongPress?.call(); 92 | }, 93 | onLongPressCancel: () { 94 | if (widget.onLongPress != null && loading != true) { 95 | setState(() { 96 | isPressed = false; 97 | }); 98 | } 99 | 100 | widget.onLongPressEnd?.call(); 101 | }, 102 | onLongPressEnd: (_) { 103 | if (widget.onLongPress != null && loading != true) { 104 | setState(() { 105 | isPressed = false; 106 | }); 107 | } 108 | 109 | widget.onLongPressEnd?.call(); 110 | }, 111 | onTapUp: (_) { 112 | if (widget.onTap != null && loading != true) { 113 | setState(() { 114 | isPressed = false; 115 | }); 116 | } 117 | }, 118 | onTapCancel: () { 119 | if (widget.onTap != null && loading != true) { 120 | setState(() { 121 | isPressed = false; 122 | }); 123 | } 124 | }, 125 | child: Container( 126 | color: Colors.transparent, 127 | padding: widget.padding ?? const EdgeInsets.all(8), 128 | child: AnimatedOpacity( 129 | opacity: loading ? .5 : 1, 130 | duration: const Duration(milliseconds: 300), 131 | child: widget.child, 132 | ), 133 | ), 134 | ), 135 | ), 136 | ); 137 | } 138 | } 139 | -------------------------------------------------------------------------------- /lib/views/home_view.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ui'; 2 | 3 | import 'package:flutter/cupertino.dart'; 4 | import 'package:flutter/material.dart'; 5 | import 'package:flutter_screenutil/flutter_screenutil.dart'; 6 | import 'package:iconsax/iconsax.dart'; 7 | import 'package:intl/intl.dart'; 8 | import 'package:note_app/common/scale_button.dart'; 9 | import 'package:note_app/constants/app_colors.dart'; 10 | import 'package:note_app/constants/app_images.dart'; 11 | import 'package:note_app/views/new_note_view.dart'; 12 | 13 | class HomeView extends StatefulWidget { 14 | const HomeView({super.key}); 15 | 16 | @override 17 | State createState() => _HomeViewState(); 18 | } 19 | 20 | class _HomeViewState extends State { 21 | String selected = "All Notes"; 22 | 23 | @override 24 | Widget build(BuildContext context) { 25 | return Scaffold( 26 | floatingActionButtonLocation: FloatingActionButtonLocation.startDocked, 27 | floatingActionButton: ScaleButton( 28 | onTap: () { 29 | Navigator.push( 30 | context, 31 | CupertinoPageRoute( 32 | builder: (context) => const NewNoteView(), 33 | ), 34 | ); 35 | }, 36 | scale: .9, 37 | child: Container( 38 | padding: EdgeInsets.all(24.w), 39 | decoration: BoxDecoration( 40 | color: AppColors.black, 41 | shape: BoxShape.circle, 42 | ), 43 | child: Image.asset( 44 | AppImages.addIcon, 45 | color: Colors.white, 46 | width: 44.w, 47 | ), 48 | ), 49 | ), 50 | body: Stack( 51 | // fit: StackFit.expand, 52 | children: [ 53 | Positioned.fill( 54 | child: SizedBox.fromSize( 55 | size: MediaQuery.sizeOf(context), 56 | child: Opacity( 57 | opacity: .7, 58 | child: Image.asset( 59 | AppImages.bg1, 60 | fit: BoxFit.cover, 61 | height: MediaQuery.sizeOf(context).height, 62 | width: MediaQuery.sizeOf(context).width, 63 | ), 64 | ), 65 | ), 66 | ), 67 | Positioned( 68 | right: 20.w, 69 | top: 0, 70 | bottom: 0, 71 | child: SizedBox( 72 | width: MediaQuery.sizeOf(context).width - 73 | (20.w * 2) - 74 | 44.w - 75 | (24.w * 2) - 76 | 20.w, 77 | child: ListView.separated( 78 | itemCount: 20, 79 | padding: EdgeInsets.only( 80 | top: 360.w + 20.w, 81 | bottom: MediaQuery.paddingOf(context).bottom + 20.w, 82 | ), 83 | separatorBuilder: (context, index) => SizedBox(height: 20.w), 84 | itemBuilder: (context, index) { 85 | return Container( 86 | padding: EdgeInsets.all(24.w), 87 | height: MediaQuery.sizeOf(context).width - 88 | (20.w * 2) - 89 | 44.w - 90 | (24.w * 2) - 91 | 20.w + 92 | 10, 93 | decoration: BoxDecoration( 94 | color: Colors.white.withOpacity(.4), 95 | borderRadius: BorderRadius.circular(30), 96 | ), 97 | child: Column( 98 | crossAxisAlignment: CrossAxisAlignment.start, 99 | children: [ 100 | Container( 101 | padding: EdgeInsets.all(6.w), 102 | decoration: BoxDecoration( 103 | color: Colors.white, 104 | borderRadius: BorderRadius.circular(100), 105 | ), 106 | child: Row( 107 | mainAxisSize: MainAxisSize.min, 108 | children: [ 109 | Icon( 110 | Iconsax.calendar, 111 | color: AppColors.indigo, 112 | ), 113 | SizedBox(width: 8.w), 114 | Text( 115 | DateFormat('MMM, dd, yyyy').format( 116 | DateTime.now(), 117 | ), 118 | ), 119 | SizedBox(width: 4.w), 120 | ], 121 | ), 122 | ), 123 | const Spacer(), 124 | Text( 125 | "New Metal ✌️ Music to Listen", 126 | style: TextStyle( 127 | fontSize: 22.sp, 128 | ), 129 | ), 130 | ], 131 | ), 132 | ); 133 | }, 134 | ), 135 | ), 136 | ), 137 | Positioned( 138 | left: 0, 139 | right: 0, 140 | height: 360.w, 141 | child: ClipRect( 142 | child: BackdropFilter( 143 | filter: ImageFilter.blur(sigmaX: 12, sigmaY: 12), 144 | child: Container( 145 | color: AppColors.background.withOpacity(.4), 146 | child: Column( 147 | crossAxisAlignment: CrossAxisAlignment.start, 148 | children: [ 149 | SizedBox( 150 | height: MediaQuery.paddingOf(context).top + 16.h), 151 | Padding( 152 | padding: EdgeInsets.symmetric(horizontal: 20.w), 153 | child: Column( 154 | crossAxisAlignment: CrossAxisAlignment.start, 155 | children: [ 156 | Row( 157 | children: [ 158 | ClipRRect( 159 | borderRadius: BorderRadius.circular(100), 160 | child: Image.asset( 161 | AppImages.profile, 162 | width: 45.w, 163 | height: 45.w, 164 | ), 165 | ), 166 | const Spacer(), 167 | Container( 168 | padding: EdgeInsets.all(12.w), 169 | decoration: const BoxDecoration( 170 | shape: BoxShape.circle, 171 | color: Colors.white, 172 | ), 173 | child: Icon( 174 | Iconsax.menu_15, 175 | color: AppColors.black, 176 | ), 177 | ), 178 | ], 179 | ), 180 | SizedBox(height: 20.h), 181 | FractionallySizedBox( 182 | widthFactor: .9, 183 | child: Text( 184 | "Your Thoughts, One Place.", 185 | style: TextStyle( 186 | fontSize: 44.sp, 187 | color: AppColors.black, 188 | ), 189 | ), 190 | ), 191 | ], 192 | ), 193 | ), 194 | const Spacer(), 195 | SizedBox(height: 16.h), 196 | SizedBox( 197 | height: 54.h, 198 | child: ListView( 199 | padding: EdgeInsets.symmetric(horizontal: 18.w), 200 | scrollDirection: Axis.horizontal, 201 | children: [ 202 | _appBarChip('Collections'), 203 | _appBarChip('Old Notes'), 204 | _appBarChip('All Notes'), 205 | ], 206 | ), 207 | ), 208 | SizedBox(height: 20.h), 209 | ], 210 | ), 211 | ), 212 | ), 213 | ), 214 | ), 215 | ], 216 | ), 217 | ); 218 | } 219 | 220 | Widget _appBarChip(String title) { 221 | return ScaleButton( 222 | onTap: () { 223 | setState(() { 224 | selected = title; 225 | }); 226 | }, 227 | child: AnimatedContainer( 228 | duration: const Duration(milliseconds: 400), 229 | curve: Curves.fastEaseInToSlowEaseOut, 230 | padding: EdgeInsets.symmetric(horizontal: 24.w, vertical: 4), 231 | decoration: BoxDecoration( 232 | color: selected == title ? AppColors.black : AppColors.background, 233 | borderRadius: BorderRadius.circular(100), 234 | border: Border.all( 235 | color: AppColors.black.withOpacity(selected == title ? 1 : .3), 236 | ), 237 | ), 238 | child: Center( 239 | child: DefaultTextStyle( 240 | style: TextStyle( 241 | color: selected == title ? Colors.white : AppColors.black, 242 | fontSize: 14.sp, 243 | ), 244 | child: Text(title), 245 | ), 246 | ), 247 | ), 248 | ); 249 | } 250 | } 251 | -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | async: 5 | dependency: transitive 6 | description: 7 | name: async 8 | sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" 9 | url: "https://pub.dev" 10 | source: hosted 11 | version: "2.11.0" 12 | boolean_selector: 13 | dependency: transitive 14 | description: 15 | name: boolean_selector 16 | sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" 17 | url: "https://pub.dev" 18 | source: hosted 19 | version: "2.1.1" 20 | characters: 21 | dependency: transitive 22 | description: 23 | name: characters 24 | sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" 25 | url: "https://pub.dev" 26 | source: hosted 27 | version: "1.3.0" 28 | clock: 29 | dependency: transitive 30 | description: 31 | name: clock 32 | sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf 33 | url: "https://pub.dev" 34 | source: hosted 35 | version: "1.1.1" 36 | collection: 37 | dependency: transitive 38 | description: 39 | name: collection 40 | sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a 41 | url: "https://pub.dev" 42 | source: hosted 43 | version: "1.18.0" 44 | crypto: 45 | dependency: transitive 46 | description: 47 | name: crypto 48 | sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" 49 | url: "https://pub.dev" 50 | source: hosted 51 | version: "3.0.6" 52 | cupertino_icons: 53 | dependency: "direct main" 54 | description: 55 | name: cupertino_icons 56 | sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 57 | url: "https://pub.dev" 58 | source: hosted 59 | version: "1.0.8" 60 | fake_async: 61 | dependency: transitive 62 | description: 63 | name: fake_async 64 | sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" 65 | url: "https://pub.dev" 66 | source: hosted 67 | version: "1.3.1" 68 | ffi: 69 | dependency: transitive 70 | description: 71 | name: ffi 72 | sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" 73 | url: "https://pub.dev" 74 | source: hosted 75 | version: "2.1.3" 76 | flutter: 77 | dependency: "direct main" 78 | description: flutter 79 | source: sdk 80 | version: "0.0.0" 81 | flutter_lints: 82 | dependency: "direct dev" 83 | description: 84 | name: flutter_lints 85 | sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" 86 | url: "https://pub.dev" 87 | source: hosted 88 | version: "4.0.0" 89 | flutter_screenutil: 90 | dependency: "direct main" 91 | description: 92 | name: flutter_screenutil 93 | sha256: "8239210dd68bee6b0577aa4a090890342d04a136ce1c81f98ee513fc0ce891de" 94 | url: "https://pub.dev" 95 | source: hosted 96 | version: "5.9.3" 97 | flutter_test: 98 | dependency: "direct dev" 99 | description: flutter 100 | source: sdk 101 | version: "0.0.0" 102 | google_fonts: 103 | dependency: "direct main" 104 | description: 105 | name: google_fonts 106 | sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82 107 | url: "https://pub.dev" 108 | source: hosted 109 | version: "6.2.1" 110 | http: 111 | dependency: transitive 112 | description: 113 | name: http 114 | sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 115 | url: "https://pub.dev" 116 | source: hosted 117 | version: "1.2.2" 118 | http_parser: 119 | dependency: transitive 120 | description: 121 | name: http_parser 122 | sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" 123 | url: "https://pub.dev" 124 | source: hosted 125 | version: "4.0.2" 126 | iconsax: 127 | dependency: "direct main" 128 | description: 129 | name: iconsax 130 | sha256: fb0144c61f41f3f8a385fadc27783ea9f5359670be885ed7f35cef32565d5228 131 | url: "https://pub.dev" 132 | source: hosted 133 | version: "0.0.8" 134 | intl: 135 | dependency: "direct main" 136 | description: 137 | name: intl 138 | sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf 139 | url: "https://pub.dev" 140 | source: hosted 141 | version: "0.19.0" 142 | leak_tracker: 143 | dependency: transitive 144 | description: 145 | name: leak_tracker 146 | sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" 147 | url: "https://pub.dev" 148 | source: hosted 149 | version: "10.0.5" 150 | leak_tracker_flutter_testing: 151 | dependency: transitive 152 | description: 153 | name: leak_tracker_flutter_testing 154 | sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" 155 | url: "https://pub.dev" 156 | source: hosted 157 | version: "3.0.5" 158 | leak_tracker_testing: 159 | dependency: transitive 160 | description: 161 | name: leak_tracker_testing 162 | sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" 163 | url: "https://pub.dev" 164 | source: hosted 165 | version: "3.0.1" 166 | lints: 167 | dependency: transitive 168 | description: 169 | name: lints 170 | sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" 171 | url: "https://pub.dev" 172 | source: hosted 173 | version: "4.0.0" 174 | matcher: 175 | dependency: transitive 176 | description: 177 | name: matcher 178 | sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb 179 | url: "https://pub.dev" 180 | source: hosted 181 | version: "0.12.16+1" 182 | material_color_utilities: 183 | dependency: transitive 184 | description: 185 | name: material_color_utilities 186 | sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec 187 | url: "https://pub.dev" 188 | source: hosted 189 | version: "0.11.1" 190 | meta: 191 | dependency: transitive 192 | description: 193 | name: meta 194 | sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 195 | url: "https://pub.dev" 196 | source: hosted 197 | version: "1.15.0" 198 | path: 199 | dependency: transitive 200 | description: 201 | name: path 202 | sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" 203 | url: "https://pub.dev" 204 | source: hosted 205 | version: "1.9.0" 206 | path_provider: 207 | dependency: transitive 208 | description: 209 | name: path_provider 210 | sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" 211 | url: "https://pub.dev" 212 | source: hosted 213 | version: "2.1.5" 214 | path_provider_android: 215 | dependency: transitive 216 | description: 217 | name: path_provider_android 218 | sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a 219 | url: "https://pub.dev" 220 | source: hosted 221 | version: "2.2.12" 222 | path_provider_foundation: 223 | dependency: transitive 224 | description: 225 | name: path_provider_foundation 226 | sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 227 | url: "https://pub.dev" 228 | source: hosted 229 | version: "2.4.0" 230 | path_provider_linux: 231 | dependency: transitive 232 | description: 233 | name: path_provider_linux 234 | sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 235 | url: "https://pub.dev" 236 | source: hosted 237 | version: "2.2.1" 238 | path_provider_platform_interface: 239 | dependency: transitive 240 | description: 241 | name: path_provider_platform_interface 242 | sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" 243 | url: "https://pub.dev" 244 | source: hosted 245 | version: "2.1.2" 246 | path_provider_windows: 247 | dependency: transitive 248 | description: 249 | name: path_provider_windows 250 | sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 251 | url: "https://pub.dev" 252 | source: hosted 253 | version: "2.3.0" 254 | platform: 255 | dependency: transitive 256 | description: 257 | name: platform 258 | sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" 259 | url: "https://pub.dev" 260 | source: hosted 261 | version: "3.1.6" 262 | plugin_platform_interface: 263 | dependency: transitive 264 | description: 265 | name: plugin_platform_interface 266 | sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" 267 | url: "https://pub.dev" 268 | source: hosted 269 | version: "2.1.8" 270 | sky_engine: 271 | dependency: transitive 272 | description: flutter 273 | source: sdk 274 | version: "0.0.99" 275 | source_span: 276 | dependency: transitive 277 | description: 278 | name: source_span 279 | sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" 280 | url: "https://pub.dev" 281 | source: hosted 282 | version: "1.10.0" 283 | stack_trace: 284 | dependency: transitive 285 | description: 286 | name: stack_trace 287 | sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" 288 | url: "https://pub.dev" 289 | source: hosted 290 | version: "1.11.1" 291 | stream_channel: 292 | dependency: transitive 293 | description: 294 | name: stream_channel 295 | sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 296 | url: "https://pub.dev" 297 | source: hosted 298 | version: "2.1.2" 299 | string_scanner: 300 | dependency: transitive 301 | description: 302 | name: string_scanner 303 | sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" 304 | url: "https://pub.dev" 305 | source: hosted 306 | version: "1.2.0" 307 | term_glyph: 308 | dependency: transitive 309 | description: 310 | name: term_glyph 311 | sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 312 | url: "https://pub.dev" 313 | source: hosted 314 | version: "1.2.1" 315 | test_api: 316 | dependency: transitive 317 | description: 318 | name: test_api 319 | sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" 320 | url: "https://pub.dev" 321 | source: hosted 322 | version: "0.7.2" 323 | typed_data: 324 | dependency: transitive 325 | description: 326 | name: typed_data 327 | sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 328 | url: "https://pub.dev" 329 | source: hosted 330 | version: "1.4.0" 331 | vector_math: 332 | dependency: transitive 333 | description: 334 | name: vector_math 335 | sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" 336 | url: "https://pub.dev" 337 | source: hosted 338 | version: "2.1.4" 339 | vm_service: 340 | dependency: transitive 341 | description: 342 | name: vm_service 343 | sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" 344 | url: "https://pub.dev" 345 | source: hosted 346 | version: "14.2.5" 347 | web: 348 | dependency: transitive 349 | description: 350 | name: web 351 | sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb 352 | url: "https://pub.dev" 353 | source: hosted 354 | version: "1.1.0" 355 | xdg_directories: 356 | dependency: transitive 357 | description: 358 | name: xdg_directories 359 | sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" 360 | url: "https://pub.dev" 361 | source: hosted 362 | version: "1.1.0" 363 | sdks: 364 | dart: ">=3.5.3 <4.0.0" 365 | flutter: ">=3.24.0" 366 | -------------------------------------------------------------------------------- /lib/views/new_note_view.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:flutter/cupertino.dart'; 4 | import 'package:flutter/material.dart'; 5 | import 'package:flutter_screenutil/flutter_screenutil.dart'; 6 | import 'package:iconsax/iconsax.dart'; 7 | import 'package:note_app/common/scale_button.dart'; 8 | import 'package:note_app/constants/app_colors.dart'; 9 | import 'package:note_app/constants/app_images.dart'; 10 | import 'package:note_app/views/save_screen.dart'; 11 | 12 | class NewNoteView extends StatefulWidget { 13 | const NewNoteView({super.key}); 14 | 15 | @override 16 | State createState() => _NewNoteViewState(); 17 | } 18 | 19 | class _NewNoteViewState extends State { 20 | TextEditingController? focusedController; 21 | 22 | final TextEditingController _title = TextEditingController(); 23 | final TextEditingController _content = TextEditingController(); 24 | final FocusNode _titleNode = FocusNode(); 25 | final FocusNode _contentNode = FocusNode(); 26 | int isCap = 1; 27 | 28 | Timer? _longTimer; 29 | 30 | startBack() { 31 | _longTimer = Timer.periodic(const Duration(milliseconds: 100), (timer) { 32 | if (focusedController == null) { 33 | _longTimer?.cancel(); 34 | return; 35 | } 36 | String c = focusedController!.text; 37 | if (c.isEmpty) return; 38 | 39 | String cont = focusedController!.text; 40 | int ind = focusedController!.selection.baseOffset; 41 | 42 | String n = cont.substring(0, ind); 43 | n = n.substring(0, n.length - 1); 44 | 45 | if (n.isEmpty) { 46 | _longTimer?.cancel(); 47 | } 48 | 49 | String m = cont.substring(ind, cont.length); 50 | 51 | focusedController?.text = "$n$m"; 52 | 53 | focusedController!.selection = 54 | TextSelection.fromPosition(TextPosition(offset: ind - 1)); 55 | }); 56 | } 57 | 58 | startForward(String key) { 59 | _longTimer = Timer.periodic(const Duration(milliseconds: 100), (timer) { 60 | if (focusedController == null) { 61 | _longTimer?.cancel(); 62 | return; 63 | } 64 | if (isCap == 0 && key.length == 1) { 65 | key = key.toLowerCase(); 66 | } 67 | 68 | if (isCap == 1) { 69 | setState(() { 70 | isCap = 0; 71 | }); 72 | } 73 | 74 | String cont = focusedController!.text; 75 | int ind = focusedController!.selection.baseOffset; 76 | 77 | String n = cont.substring(0, ind); 78 | String m = cont.substring(ind, cont.length); 79 | 80 | focusedController?.text = "$n$key$m"; 81 | focusedController!.selection = 82 | TextSelection.fromPosition(TextPosition(offset: ind + 1)); 83 | }); 84 | } 85 | 86 | @override 87 | void initState() { 88 | super.initState(); 89 | 90 | _titleNode.addListener(() { 91 | if (_titleNode.hasFocus) { 92 | isCap = _title.text.isEmpty ? 1 : 0; 93 | 94 | focusedController = _title; 95 | setState(() {}); 96 | } else { 97 | if (focusedController == _title) { 98 | focusedController = null; 99 | setState(() {}); 100 | } 101 | } 102 | }); 103 | 104 | _contentNode.addListener(() { 105 | if (_contentNode.hasFocus) { 106 | isCap = _content.text.isEmpty ? 1 : 0; 107 | 108 | focusedController = _content; 109 | 110 | setState(() {}); 111 | } else { 112 | if (focusedController == _content) { 113 | focusedController = null; 114 | } 115 | setState(() {}); 116 | } 117 | }); 118 | } 119 | 120 | @override 121 | Widget build(BuildContext context) { 122 | return Scaffold( 123 | body: Stack( 124 | children: [ 125 | Image.asset( 126 | AppImages.bg2, 127 | fit: BoxFit.cover, 128 | height: MediaQuery.sizeOf(context).height, 129 | width: MediaQuery.sizeOf(context).width, 130 | ), 131 | Positioned.fill( 132 | left: 20.w, 133 | right: 20.w, 134 | child: Column( 135 | crossAxisAlignment: CrossAxisAlignment.start, 136 | children: [ 137 | SizedBox(height: MediaQuery.paddingOf(context).top + 16.h), 138 | Row( 139 | children: [ 140 | ScaleButton( 141 | scale: .9, 142 | onTap: () => Navigator.pop(context), 143 | child: Container( 144 | padding: EdgeInsets.all(12.w), 145 | decoration: const BoxDecoration( 146 | shape: BoxShape.circle, 147 | color: Colors.white, 148 | ), 149 | child: const Icon(Iconsax.arrow_left), 150 | ), 151 | ), 152 | SizedBox(width: 14.w), 153 | Text( 154 | "ADD NOTE", 155 | style: TextStyle( 156 | fontSize: 18.sp, 157 | color: AppColors.black.withOpacity(.5), 158 | ), 159 | ), 160 | const Spacer(), 161 | ScaleButton( 162 | scale: .9, 163 | onTap: () { 164 | Navigator.push( 165 | context, 166 | CupertinoPageRoute( 167 | builder: (context) => const SaveScreen(), 168 | ), 169 | ); 170 | }, 171 | child: Container( 172 | padding: EdgeInsets.symmetric( 173 | horizontal: 24.w, 174 | vertical: 18.w, 175 | ), 176 | decoration: BoxDecoration( 177 | color: Colors.white, 178 | borderRadius: BorderRadius.circular(100), 179 | ), 180 | child: Row( 181 | children: [ 182 | const Icon( 183 | Iconsax.folder_add, 184 | size: 26, 185 | ), 186 | SizedBox(width: 12.w), 187 | Text( 188 | "SAVE", 189 | style: TextStyle( 190 | fontSize: 18.sp, 191 | color: AppColors.black, 192 | ), 193 | ), 194 | ], 195 | ), 196 | ), 197 | ), 198 | ], 199 | ), 200 | SizedBox(height: 20.h), 201 | Expanded( 202 | child: SingleChildScrollView( 203 | child: Column( 204 | children: [ 205 | TextFormField( 206 | keyboardType: TextInputType.none, 207 | maxLines: 100, 208 | minLines: 1, 209 | focusNode: _titleNode, 210 | controller: _title, 211 | cursorColor: AppColors.black, 212 | style: TextStyle( 213 | fontSize: 44.sp, 214 | color: AppColors.black, 215 | ), 216 | decoration: const InputDecoration( 217 | hintText: "Add Title", 218 | border: OutlineInputBorder( 219 | borderSide: BorderSide.none, 220 | borderRadius: BorderRadius.zero, 221 | ), 222 | contentPadding: EdgeInsets.zero, 223 | ), 224 | ), 225 | TextFormField( 226 | keyboardType: TextInputType.none, 227 | maxLines: 100, 228 | minLines: 1, 229 | focusNode: _contentNode, 230 | controller: _content, 231 | cursorColor: AppColors.black, 232 | style: TextStyle( 233 | fontSize: 18.sp, 234 | color: AppColors.black, 235 | ), 236 | decoration: const InputDecoration( 237 | hintText: "Add Content", 238 | border: 239 | OutlineInputBorder(borderSide: BorderSide.none), 240 | contentPadding: EdgeInsets.zero, 241 | ), 242 | ), 243 | ], 244 | ), 245 | ), 246 | ), 247 | AnimatedContainer( 248 | width: double.infinity, 249 | height: focusedController == null ? 0 : 300.h, 250 | duration: const Duration(milliseconds: 400), 251 | curve: Curves.fastEaseInToSlowEaseOut, 252 | ), 253 | ], 254 | ), 255 | ), 256 | AnimatedPositioned( 257 | duration: const Duration(milliseconds: 400), 258 | left: 4.w, 259 | right: 4.w, 260 | bottom: focusedController == null ? -300.h : 4.w, 261 | curve: Curves.fastEaseInToSlowEaseOut, 262 | child: Container( 263 | padding: EdgeInsets.only( 264 | left: 6.w, 265 | right: 6.w, 266 | top: 6.w, 267 | bottom: MediaQuery.paddingOf(context).bottom + 6.w, 268 | ), 269 | decoration: BoxDecoration( 270 | color: AppColors.black, 271 | borderRadius: const BorderRadius.vertical( 272 | top: Radius.circular(20), 273 | bottom: Radius.circular(60), 274 | ), 275 | ), 276 | child: Column( 277 | mainAxisSize: MainAxisSize.min, 278 | children: [ 279 | Row( 280 | children: [ 281 | ScaleButton( 282 | onTap: () { 283 | primaryFocus?.unfocus(); 284 | }, 285 | child: const Icon( 286 | Iconsax.arrow_down_1, 287 | color: Colors.white, 288 | ), 289 | ), 290 | const Spacer(), 291 | ], 292 | ), 293 | Row( 294 | mainAxisAlignment: MainAxisAlignment.center, 295 | children: [ 296 | _key("Q"), 297 | _key("W"), 298 | _key("E"), 299 | _key("R"), 300 | _key("T"), 301 | _key("Y"), 302 | _key("U"), 303 | _key("I"), 304 | _key("O"), 305 | _key("P"), 306 | ], 307 | ), 308 | Row( 309 | mainAxisAlignment: MainAxisAlignment.center, 310 | children: [ 311 | _key("A"), 312 | _key("S"), 313 | _key("D"), 314 | _key("F"), 315 | _key("G"), 316 | _key("H"), 317 | _key("J"), 318 | _key("K"), 319 | _key("L"), 320 | ], 321 | ), 322 | Row( 323 | mainAxisAlignment: MainAxisAlignment.center, 324 | children: [ 325 | _stringFlexKey("shift", 1), 326 | _key("Z"), 327 | _key("X"), 328 | _key("C"), 329 | _key("V"), 330 | _key("B"), 331 | _key("N"), 332 | _key("M"), 333 | _stringFlexKey("DEL", 1), 334 | ], 335 | ), 336 | Row( 337 | mainAxisAlignment: MainAxisAlignment.center, 338 | children: [ 339 | _stringFlexKey( 340 | "ABC", 341 | 1, 342 | radius: const BorderRadius.only( 343 | topLeft: Radius.circular(8), 344 | topRight: Radius.circular(8), 345 | bottomRight: Radius.circular(8), 346 | bottomLeft: Radius.circular(24), 347 | ), 348 | ), 349 | _stringFlexKey("space", 3), 350 | _stringFlexKey( 351 | "return", 352 | 1, 353 | radius: const BorderRadius.only( 354 | topLeft: Radius.circular(8), 355 | topRight: Radius.circular(8), 356 | bottomRight: Radius.circular(24), 357 | bottomLeft: Radius.circular(8), 358 | ), 359 | ), 360 | ], 361 | ), 362 | ], 363 | ), 364 | ), 365 | ), 366 | ], 367 | ), 368 | ); 369 | } 370 | 371 | Widget _stringFlexKey( 372 | String key, 373 | int flex, { 374 | BorderRadius? radius, 375 | }) { 376 | return Expanded( 377 | flex: flex, 378 | child: _key(key), 379 | ); 380 | } 381 | 382 | Widget _key(String key) { 383 | return ScaleButton( 384 | opacityButton: true, 385 | onLongPressEnd: () { 386 | if (_longTimer?.isActive ?? false) { 387 | _longTimer?.cancel(); 388 | } 389 | }, 390 | onLongPress: () { 391 | if (key == 'DEL') { 392 | startBack(); 393 | } 394 | 395 | if (key.length == 1) { 396 | startForward(key); 397 | } 398 | }, 399 | onTap: () { 400 | if (isCap == 0 && key.length == 1) { 401 | key = key.toLowerCase(); 402 | } 403 | 404 | if (isCap == 1) { 405 | setState(() { 406 | isCap = 0; 407 | }); 408 | } 409 | 410 | if (key == 'space') { 411 | _add(' '); 412 | } 413 | if (key == 'DEL') { 414 | _delete(); 415 | } 416 | 417 | if (key == 'return') { 418 | _add('\n'); 419 | } 420 | 421 | if (key == 'shift') { 422 | isCap = isCap == -1 423 | ? 0 424 | : isCap == 1 425 | ? 0 426 | : isCap == 0 427 | ? 1 428 | : isCap; 429 | setState(() {}); 430 | } 431 | 432 | if (key == 'ABC') { 433 | isCap = isCap == -1 ? 0 : -1; 434 | setState(() {}); 435 | } 436 | if (key.length == 1) { 437 | _add(key); 438 | } 439 | }, 440 | padding: EdgeInsets.zero, 441 | child: Container( 442 | margin: const EdgeInsets.all(2), 443 | height: 45, 444 | width: (MediaQuery.sizeOf(context).width - ((6.w * 4) + 4 * 10)) / 10, 445 | decoration: BoxDecoration( 446 | color: (key == 'shift' && isCap == 1) || (key == 'ABC' && isCap == -1) 447 | ? Colors.blue 448 | : Colors.white.withOpacity(.2), 449 | borderRadius: BorderRadius.circular(8), 450 | ), 451 | child: Center( 452 | child: Text( 453 | key.length == 1 454 | ? (isCap != 0) 455 | ? key.toUpperCase() 456 | : key.toLowerCase() 457 | : key, 458 | style: const TextStyle( 459 | color: Colors.white, 460 | ), 461 | ), 462 | ), 463 | ), 464 | ); 465 | } 466 | 467 | void _add(String key) { 468 | String cont = focusedController!.text; 469 | int ind = focusedController!.selection.baseOffset; 470 | 471 | String n = cont.substring(0, ind); 472 | String m = cont.substring(ind, cont.length); 473 | 474 | focusedController?.text = "$n$key$m"; 475 | focusedController!.selection = 476 | TextSelection.fromPosition(TextPosition(offset: ind + 1)); 477 | } 478 | 479 | void _delete() { 480 | int st = focusedController!.selection.start; 481 | int end = focusedController!.selection.end; 482 | 483 | String cont = focusedController!.text; 484 | int ind = focusedController!.selection.baseOffset; 485 | if (cont.isNotEmpty) { 486 | if (st != end) { 487 | focusedController!.text = 488 | cont.substring(0, st) + cont.substring(end, cont.length); 489 | focusedController!.selection = 490 | TextSelection.fromPosition(TextPosition(offset: ind)); 491 | } else { 492 | String n = cont.substring(0, ind); 493 | n = n.substring(0, n.length - 1); 494 | String m = cont.substring(ind, cont.length); 495 | 496 | focusedController?.text = "$n$m"; 497 | focusedController!.selection = 498 | TextSelection.fromPosition(TextPosition(offset: ind - 1)); 499 | } 500 | } 501 | } 502 | } 503 | -------------------------------------------------------------------------------- /lib/views/save_screen.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ui'; 2 | 3 | import 'package:flutter/cupertino.dart'; 4 | import 'package:flutter/material.dart'; 5 | import 'package:flutter_screenutil/flutter_screenutil.dart'; 6 | import 'package:iconsax/iconsax.dart'; 7 | import 'package:note_app/common/scale_button.dart'; 8 | import 'package:note_app/constants/app_colors.dart'; 9 | import 'package:note_app/constants/app_images.dart'; 10 | 11 | class SaveScreen extends StatefulWidget { 12 | const SaveScreen({super.key}); 13 | 14 | @override 15 | State createState() => _SaveScreenState(); 16 | } 17 | 18 | class _SaveScreenState extends State { 19 | String? selected; 20 | 21 | @override 22 | Widget build(BuildContext context) { 23 | return Scaffold( 24 | body: Stack( 25 | children: [ 26 | SingleChildScrollView( 27 | child: Column( 28 | crossAxisAlignment: CrossAxisAlignment.start, 29 | children: [ 30 | SizedBox(height: 270.h), 31 | Row( 32 | children: [ 33 | Expanded( 34 | child: ListView.separated( 35 | padding: EdgeInsets.only(top: 170.h, left: 16.w), 36 | shrinkWrap: true, 37 | physics: const NeverScrollableScrollPhysics(), 38 | itemCount: 4, 39 | separatorBuilder: (context, index) => 40 | SizedBox(height: 20.h), 41 | itemBuilder: (context, index) { 42 | return ScaleButton( 43 | padding: EdgeInsets.zero, 44 | onTap: () { 45 | selected = '1_$index'; 46 | setState(() {}); 47 | }, 48 | child: SizedBox( 49 | height: 150.h, 50 | child: Stack( 51 | children: [ 52 | AnimatedScale( 53 | scale: selected == '1_$index' ? 2 : 0, 54 | duration: const Duration(microseconds: 300), 55 | curve: Curves.fastEaseInToSlowEaseOut, 56 | child: Image.asset(AppImages.circles), 57 | ), 58 | _collectionCard( 59 | isDark: selected == '1_$index'), 60 | ], 61 | ), 62 | ), 63 | ); 64 | }, 65 | ), 66 | ), 67 | SizedBox(width: 16.w), 68 | Expanded( 69 | child: ListView.separated( 70 | padding: EdgeInsets.only( 71 | right: 16.w, 72 | ), 73 | shrinkWrap: true, 74 | physics: const NeverScrollableScrollPhysics(), 75 | itemCount: 4, 76 | separatorBuilder: (context, index) => 77 | SizedBox(height: 20.h), 78 | itemBuilder: (context, index) { 79 | return ScaleButton( 80 | padding: EdgeInsets.zero, 81 | onTap: () { 82 | selected = '2_$index'; 83 | setState(() {}); 84 | }, 85 | child: SizedBox( 86 | height: 150.h, 87 | child: Stack( 88 | children: [ 89 | AnimatedScale( 90 | scale: selected == '2_$index' ? 2 : 0, 91 | duration: const Duration(microseconds: 300), 92 | curve: Curves.fastEaseInToSlowEaseOut, 93 | child: Image.asset(AppImages.circles), 94 | ), 95 | _collectionCard( 96 | isDark: selected == '2_$index'), 97 | ], 98 | ), 99 | ), 100 | ); 101 | }, 102 | ), 103 | ), 104 | ], 105 | ), 106 | SizedBox(height: MediaQuery.paddingOf(context).bottom + 80.h), 107 | ], 108 | ), 109 | ), 110 | Positioned( 111 | child: ClipRect( 112 | child: BackdropFilter( 113 | filter: ImageFilter.blur(sigmaX: 12, sigmaY: 12), 114 | child: Container( 115 | height: 310.h, 116 | padding: EdgeInsets.symmetric(horizontal: 16.w), 117 | color: AppColors.background.withOpacity(.4), 118 | child: Column( 119 | children: [ 120 | SizedBox( 121 | height: MediaQuery.paddingOf(context).top + 16.h), 122 | Row( 123 | children: [ 124 | ScaleButton( 125 | scale: .9, 126 | onTap: () => Navigator.pop(context), 127 | child: Container( 128 | padding: EdgeInsets.all(12.w), 129 | decoration: const BoxDecoration( 130 | shape: BoxShape.circle, 131 | color: Colors.white, 132 | ), 133 | child: const Icon(Iconsax.arrow_left), 134 | ), 135 | ), 136 | SizedBox(width: 14.w), 137 | Text( 138 | "SAVE TO", 139 | style: TextStyle( 140 | fontSize: 18.sp, 141 | color: AppColors.black.withOpacity(.5), 142 | ), 143 | ), 144 | ], 145 | ), 146 | SizedBox(height: 20.h), 147 | Text( 148 | "Select Note Collection", 149 | style: TextStyle( 150 | fontSize: 44.sp, 151 | color: AppColors.black, 152 | ), 153 | ), 154 | SizedBox(height: 20.h), 155 | ], 156 | ), 157 | ), 158 | ), 159 | ), 160 | ), 161 | AnimatedPositioned( 162 | bottom: selected == null ? -80 : 0, 163 | left: 0.w, 164 | right: 0.w, 165 | duration: const Duration(milliseconds: 100), 166 | child: ClipRect( 167 | child: BackdropFilter( 168 | filter: ImageFilter.blur(sigmaX: 80, sigmaY: 80), 169 | child: Container( 170 | padding: EdgeInsets.only( 171 | top: 20.w, 172 | left: 20.w, 173 | right: 20.w, 174 | ), 175 | decoration: BoxDecoration( 176 | gradient: LinearGradient( 177 | begin: Alignment.topCenter, 178 | end: Alignment.bottomCenter, 179 | colors: [ 180 | AppColors.background.withOpacity(.0), 181 | AppColors.background.withOpacity(1), 182 | AppColors.background.withOpacity(1), 183 | ], 184 | ), 185 | ), 186 | child: Column( 187 | children: [ 188 | CupertinoButton( 189 | onPressed: () {}, 190 | child: Text( 191 | "Save Anyway Without Collection", 192 | style: TextStyle( 193 | color: Colors.grey.shade800.withOpacity(.8), 194 | decorationColor: 195 | Colors.grey.shade800.withOpacity(.8), 196 | decorationStyle: TextDecorationStyle.dotted, 197 | decoration: TextDecoration.underline, 198 | ), 199 | ), 200 | ), 201 | Transform.translate( 202 | offset: selected != null 203 | ? const Offset(0, 0) 204 | : const Offset(0, 50), 205 | child: ScaleButton( 206 | onTap: () { 207 | showCupertinoModalPopup( 208 | barrierColor: 209 | AppColors.background.withOpacity(.4), 210 | context: context, 211 | builder: (context) { 212 | return const _SavedDialog(); 213 | }, 214 | ); 215 | }, 216 | child: Container( 217 | padding: EdgeInsets.symmetric(vertical: 18.h), 218 | decoration: BoxDecoration( 219 | color: AppColors.black, 220 | borderRadius: BorderRadius.circular(100), 221 | ), 222 | child: Row( 223 | mainAxisAlignment: MainAxisAlignment.center, 224 | children: [ 225 | const Icon( 226 | Iconsax.folder_add, 227 | color: Colors.white, 228 | ), 229 | SizedBox(width: 12.w), 230 | const Text( 231 | "Save to Collection", 232 | style: TextStyle( 233 | color: Colors.white, 234 | ), 235 | ), 236 | ], 237 | ), 238 | ), 239 | ), 240 | ), 241 | SizedBox( 242 | height: MediaQuery.paddingOf(context).bottom + 0.h), 243 | ], 244 | ), 245 | ), 246 | ), 247 | ), 248 | ), 249 | ], 250 | ), 251 | ); 252 | } 253 | 254 | Widget _collectionCard({bool isDark = false}) { 255 | return ClipRRect( 256 | borderRadius: BorderRadius.circular(20), 257 | child: Column( 258 | crossAxisAlignment: CrossAxisAlignment.start, 259 | children: [ 260 | FractionallySizedBox( 261 | widthFactor: .4, 262 | child: AnimatedContainer( 263 | duration: const Duration(milliseconds: 100), 264 | height: 20.h, 265 | decoration: BoxDecoration( 266 | color: AppColors.greyColor.withOpacity(isDark ? .8 : .07), 267 | borderRadius: const BorderRadius.only( 268 | topRight: Radius.circular(10), 269 | ), 270 | ), 271 | ), 272 | ), 273 | AnimatedContainer( 274 | duration: const Duration(milliseconds: 100), 275 | height: 30.h, 276 | decoration: BoxDecoration( 277 | color: AppColors.greyColor.withOpacity(isDark ? .8 : .07), 278 | borderRadius: const BorderRadius.only( 279 | topRight: Radius.circular(20), 280 | ), 281 | ), 282 | ), 283 | AnimatedContainer( 284 | duration: const Duration(milliseconds: 100), 285 | height: 100.h, 286 | padding: EdgeInsets.all(12.h), 287 | width: double.infinity, 288 | decoration: BoxDecoration( 289 | color: isDark ? AppColors.black : Colors.white.withOpacity(.8), 290 | borderRadius: const BorderRadius.only( 291 | bottomRight: Radius.circular(20), 292 | ), 293 | ), 294 | child: Column( 295 | crossAxisAlignment: CrossAxisAlignment.start, 296 | children: [ 297 | Row( 298 | children: [ 299 | const Spacer(), 300 | Container( 301 | padding: 302 | EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), 303 | decoration: BoxDecoration( 304 | color: AppColors.indigo.withOpacity(isDark ? 1 : .15), 305 | borderRadius: BorderRadius.circular(100), 306 | ), 307 | child: Row( 308 | children: [ 309 | Icon( 310 | Iconsax.document_1, 311 | color: isDark ? Colors.white : AppColors.indigo, 312 | size: 12, 313 | ), 314 | SizedBox(width: 3.w), 315 | Text( 316 | "3 Notes", 317 | style: TextStyle( 318 | fontSize: 10, 319 | color: isDark ? Colors.white : AppColors.black, 320 | ), 321 | ), 322 | ], 323 | ), 324 | ), 325 | ], 326 | ), 327 | const Spacer(), 328 | Text( 329 | "To-Do-List 📋", 330 | style: TextStyle( 331 | fontSize: 20, 332 | color: isDark ? Colors.white : AppColors.black, 333 | ), 334 | ) 335 | ], 336 | ), 337 | ), 338 | ], 339 | ), 340 | ); 341 | } 342 | } 343 | 344 | class _SavedDialog extends StatelessWidget { 345 | const _SavedDialog(); 346 | 347 | @override 348 | Widget build(BuildContext context) { 349 | return BackdropFilter( 350 | filter: ImageFilter.blur(sigmaX: 8, sigmaY: 8), 351 | child: SizedBox( 352 | height: 500, 353 | width: double.infinity, 354 | child: Material( 355 | color: Colors.transparent, 356 | child: Container( 357 | margin: EdgeInsets.symmetric(horizontal: 8.w), 358 | height: 500.h, 359 | width: double.infinity, 360 | padding: EdgeInsets.only( 361 | left: 20.w, 362 | right: 20.w, 363 | top: 10.h, 364 | ), 365 | decoration: const BoxDecoration( 366 | color: Colors.white, 367 | borderRadius: BorderRadius.vertical( 368 | top: Radius.circular(40), 369 | )), 370 | child: Column( 371 | mainAxisSize: MainAxisSize.min, 372 | children: [ 373 | Container( 374 | width: 40.w, 375 | height: 2, 376 | decoration: BoxDecoration( 377 | color: Colors.grey.withOpacity(.4), 378 | borderRadius: BorderRadius.circular(10), 379 | ), 380 | ), 381 | const SizedBox(height: 3), 382 | Container( 383 | width: 30.w, 384 | height: 2, 385 | decoration: BoxDecoration( 386 | color: Colors.grey.withOpacity(.4), 387 | borderRadius: BorderRadius.circular(10), 388 | ), 389 | ), 390 | SizedBox( 391 | width: double.infinity, 392 | height: 450, 393 | child: Stack( 394 | children: [ 395 | Align( 396 | alignment: Alignment.topCenter, 397 | child: Image.asset( 398 | AppImages.success, 399 | width: 300, 400 | ), 401 | ), 402 | Positioned.fill( 403 | child: Column( 404 | children: [ 405 | const Spacer(), 406 | Text( 407 | "Successfully Saved!", 408 | style: TextStyle( 409 | fontSize: 32.sp, 410 | fontWeight: FontWeight.w600, 411 | ), 412 | ), 413 | Text( 414 | "Woohoo!! You saved this note on\n\"To-Do-List\" Collection", 415 | textAlign: TextAlign.center, 416 | style: TextStyle( 417 | fontSize: 16.sp, 418 | color: Colors.grey.shade600, 419 | ), 420 | ), 421 | const SizedBox(height: 30), 422 | ScaleButton( 423 | onTap: () { 424 | Navigator.pop(context); 425 | Navigator.pop(context); 426 | Navigator.pop(context); 427 | }, 428 | child: Container( 429 | padding: EdgeInsets.symmetric(vertical: 18.h), 430 | decoration: BoxDecoration( 431 | color: AppColors.black, 432 | borderRadius: BorderRadius.circular(100), 433 | ), 434 | child: Row( 435 | mainAxisAlignment: MainAxisAlignment.center, 436 | children: [ 437 | const Icon( 438 | Iconsax.home_2, 439 | color: Colors.white, 440 | ), 441 | SizedBox(width: 12.w), 442 | const Text( 443 | "Back to Home", 444 | style: TextStyle( 445 | color: Colors.white, 446 | ), 447 | ), 448 | ], 449 | ), 450 | ), 451 | ), 452 | ], 453 | ), 454 | ), 455 | ], 456 | ), 457 | ), 458 | const Spacer(), 459 | ], 460 | ), 461 | ), 462 | ), 463 | ), 464 | ); 465 | } 466 | } 467 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 54; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 12 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 13 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 14 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 15 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 16 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 17 | C0017169530A6CBEE4963450 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFBC62CAC9DFD475A303074C /* Pods_RunnerTests.framework */; }; 18 | FC12F90102DA18A73D0875C2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A2E6B91C8D4DF0F5DAA7C0E4 /* Pods_Runner.framework */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXContainerItemProxy section */ 22 | 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { 23 | isa = PBXContainerItemProxy; 24 | containerPortal = 97C146E61CF9000F007C117D /* Project object */; 25 | proxyType = 1; 26 | remoteGlobalIDString = 97C146ED1CF9000F007C117D; 27 | remoteInfo = Runner; 28 | }; 29 | /* End PBXContainerItemProxy section */ 30 | 31 | /* Begin PBXCopyFilesBuildPhase section */ 32 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 33 | isa = PBXCopyFilesBuildPhase; 34 | buildActionMask = 2147483647; 35 | dstPath = ""; 36 | dstSubfolderSpec = 10; 37 | files = ( 38 | ); 39 | name = "Embed Frameworks"; 40 | runOnlyForDeploymentPostprocessing = 0; 41 | }; 42 | /* End PBXCopyFilesBuildPhase section */ 43 | 44 | /* Begin PBXFileReference section */ 45 | 12FF7A1BA1AEA53840AF487E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 46 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 47 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 48 | 173F6D3A4C8CC88433D3ACED /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 49 | 24170209C55C7877E0F1957F /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 50 | 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 51 | 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 52 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 53 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 54 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 55 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 56 | 8340B4D0D53134F888B804C4 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 57 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 58 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 59 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 60 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 61 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 62 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 63 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 64 | A2E6B91C8D4DF0F5DAA7C0E4 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 65 | A7D68179012CCB5B6169B8C5 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 66 | AFBC62CAC9DFD475A303074C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 67 | CABBD8EDB0781EE26C103FB2 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; 68 | /* End PBXFileReference section */ 69 | 70 | /* Begin PBXFrameworksBuildPhase section */ 71 | 2DC89FC1930E0FFC2256F2FA /* Frameworks */ = { 72 | isa = PBXFrameworksBuildPhase; 73 | buildActionMask = 2147483647; 74 | files = ( 75 | C0017169530A6CBEE4963450 /* Pods_RunnerTests.framework in Frameworks */, 76 | ); 77 | runOnlyForDeploymentPostprocessing = 0; 78 | }; 79 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 80 | isa = PBXFrameworksBuildPhase; 81 | buildActionMask = 2147483647; 82 | files = ( 83 | FC12F90102DA18A73D0875C2 /* Pods_Runner.framework in Frameworks */, 84 | ); 85 | runOnlyForDeploymentPostprocessing = 0; 86 | }; 87 | /* End PBXFrameworksBuildPhase section */ 88 | 89 | /* Begin PBXGroup section */ 90 | 331C8082294A63A400263BE5 /* RunnerTests */ = { 91 | isa = PBXGroup; 92 | children = ( 93 | 331C807B294A618700263BE5 /* RunnerTests.swift */, 94 | ); 95 | path = RunnerTests; 96 | sourceTree = ""; 97 | }; 98 | 9740EEB11CF90186004384FC /* Flutter */ = { 99 | isa = PBXGroup; 100 | children = ( 101 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 102 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 103 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 104 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 105 | ); 106 | name = Flutter; 107 | sourceTree = ""; 108 | }; 109 | 97C146E51CF9000F007C117D = { 110 | isa = PBXGroup; 111 | children = ( 112 | 9740EEB11CF90186004384FC /* Flutter */, 113 | 97C146F01CF9000F007C117D /* Runner */, 114 | 97C146EF1CF9000F007C117D /* Products */, 115 | 331C8082294A63A400263BE5 /* RunnerTests */, 116 | B1F0C4D2BAA8D165CCE19012 /* Pods */, 117 | A6CE30353C4383E50EE9D9DB /* Frameworks */, 118 | ); 119 | sourceTree = ""; 120 | }; 121 | 97C146EF1CF9000F007C117D /* Products */ = { 122 | isa = PBXGroup; 123 | children = ( 124 | 97C146EE1CF9000F007C117D /* Runner.app */, 125 | 331C8081294A63A400263BE5 /* RunnerTests.xctest */, 126 | ); 127 | name = Products; 128 | sourceTree = ""; 129 | }; 130 | 97C146F01CF9000F007C117D /* Runner */ = { 131 | isa = PBXGroup; 132 | children = ( 133 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 134 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 135 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 136 | 97C147021CF9000F007C117D /* Info.plist */, 137 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 138 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 139 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 140 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, 141 | ); 142 | path = Runner; 143 | sourceTree = ""; 144 | }; 145 | A6CE30353C4383E50EE9D9DB /* Frameworks */ = { 146 | isa = PBXGroup; 147 | children = ( 148 | A2E6B91C8D4DF0F5DAA7C0E4 /* Pods_Runner.framework */, 149 | AFBC62CAC9DFD475A303074C /* Pods_RunnerTests.framework */, 150 | ); 151 | name = Frameworks; 152 | sourceTree = ""; 153 | }; 154 | B1F0C4D2BAA8D165CCE19012 /* Pods */ = { 155 | isa = PBXGroup; 156 | children = ( 157 | 8340B4D0D53134F888B804C4 /* Pods-Runner.debug.xcconfig */, 158 | 12FF7A1BA1AEA53840AF487E /* Pods-Runner.release.xcconfig */, 159 | 24170209C55C7877E0F1957F /* Pods-Runner.profile.xcconfig */, 160 | CABBD8EDB0781EE26C103FB2 /* Pods-RunnerTests.debug.xcconfig */, 161 | 173F6D3A4C8CC88433D3ACED /* Pods-RunnerTests.release.xcconfig */, 162 | A7D68179012CCB5B6169B8C5 /* Pods-RunnerTests.profile.xcconfig */, 163 | ); 164 | name = Pods; 165 | path = Pods; 166 | sourceTree = ""; 167 | }; 168 | /* End PBXGroup section */ 169 | 170 | /* Begin PBXNativeTarget section */ 171 | 331C8080294A63A400263BE5 /* RunnerTests */ = { 172 | isa = PBXNativeTarget; 173 | buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; 174 | buildPhases = ( 175 | 88C952D51A7DA84D1E0972A7 /* [CP] Check Pods Manifest.lock */, 176 | 331C807D294A63A400263BE5 /* Sources */, 177 | 331C807F294A63A400263BE5 /* Resources */, 178 | 2DC89FC1930E0FFC2256F2FA /* Frameworks */, 179 | ); 180 | buildRules = ( 181 | ); 182 | dependencies = ( 183 | 331C8086294A63A400263BE5 /* PBXTargetDependency */, 184 | ); 185 | name = RunnerTests; 186 | productName = RunnerTests; 187 | productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; 188 | productType = "com.apple.product-type.bundle.unit-test"; 189 | }; 190 | 97C146ED1CF9000F007C117D /* Runner */ = { 191 | isa = PBXNativeTarget; 192 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 193 | buildPhases = ( 194 | 3824951FA16E583D21EA2FFC /* [CP] Check Pods Manifest.lock */, 195 | 9740EEB61CF901F6004384FC /* Run Script */, 196 | 97C146EA1CF9000F007C117D /* Sources */, 197 | 97C146EB1CF9000F007C117D /* Frameworks */, 198 | 97C146EC1CF9000F007C117D /* Resources */, 199 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 200 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 201 | CEB536D95A6941EBA5BAEBE1 /* [CP] Embed Pods Frameworks */, 202 | ); 203 | buildRules = ( 204 | ); 205 | dependencies = ( 206 | ); 207 | name = Runner; 208 | productName = Runner; 209 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 210 | productType = "com.apple.product-type.application"; 211 | }; 212 | /* End PBXNativeTarget section */ 213 | 214 | /* Begin PBXProject section */ 215 | 97C146E61CF9000F007C117D /* Project object */ = { 216 | isa = PBXProject; 217 | attributes = { 218 | BuildIndependentTargetsInParallel = YES; 219 | LastUpgradeCheck = 1510; 220 | ORGANIZATIONNAME = ""; 221 | TargetAttributes = { 222 | 331C8080294A63A400263BE5 = { 223 | CreatedOnToolsVersion = 14.0; 224 | TestTargetID = 97C146ED1CF9000F007C117D; 225 | }; 226 | 97C146ED1CF9000F007C117D = { 227 | CreatedOnToolsVersion = 7.3.1; 228 | LastSwiftMigration = 1100; 229 | }; 230 | }; 231 | }; 232 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 233 | compatibilityVersion = "Xcode 9.3"; 234 | developmentRegion = en; 235 | hasScannedForEncodings = 0; 236 | knownRegions = ( 237 | en, 238 | Base, 239 | ); 240 | mainGroup = 97C146E51CF9000F007C117D; 241 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 242 | projectDirPath = ""; 243 | projectRoot = ""; 244 | targets = ( 245 | 97C146ED1CF9000F007C117D /* Runner */, 246 | 331C8080294A63A400263BE5 /* RunnerTests */, 247 | ); 248 | }; 249 | /* End PBXProject section */ 250 | 251 | /* Begin PBXResourcesBuildPhase section */ 252 | 331C807F294A63A400263BE5 /* Resources */ = { 253 | isa = PBXResourcesBuildPhase; 254 | buildActionMask = 2147483647; 255 | files = ( 256 | ); 257 | runOnlyForDeploymentPostprocessing = 0; 258 | }; 259 | 97C146EC1CF9000F007C117D /* Resources */ = { 260 | isa = PBXResourcesBuildPhase; 261 | buildActionMask = 2147483647; 262 | files = ( 263 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 264 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 265 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 266 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 267 | ); 268 | runOnlyForDeploymentPostprocessing = 0; 269 | }; 270 | /* End PBXResourcesBuildPhase section */ 271 | 272 | /* Begin PBXShellScriptBuildPhase section */ 273 | 3824951FA16E583D21EA2FFC /* [CP] Check Pods Manifest.lock */ = { 274 | isa = PBXShellScriptBuildPhase; 275 | buildActionMask = 2147483647; 276 | files = ( 277 | ); 278 | inputFileListPaths = ( 279 | ); 280 | inputPaths = ( 281 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 282 | "${PODS_ROOT}/Manifest.lock", 283 | ); 284 | name = "[CP] Check Pods Manifest.lock"; 285 | outputFileListPaths = ( 286 | ); 287 | outputPaths = ( 288 | "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", 289 | ); 290 | runOnlyForDeploymentPostprocessing = 0; 291 | shellPath = /bin/sh; 292 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 293 | showEnvVarsInLog = 0; 294 | }; 295 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 296 | isa = PBXShellScriptBuildPhase; 297 | alwaysOutOfDate = 1; 298 | buildActionMask = 2147483647; 299 | files = ( 300 | ); 301 | inputPaths = ( 302 | "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", 303 | ); 304 | name = "Thin Binary"; 305 | outputPaths = ( 306 | ); 307 | runOnlyForDeploymentPostprocessing = 0; 308 | shellPath = /bin/sh; 309 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; 310 | }; 311 | 88C952D51A7DA84D1E0972A7 /* [CP] Check Pods Manifest.lock */ = { 312 | isa = PBXShellScriptBuildPhase; 313 | buildActionMask = 2147483647; 314 | files = ( 315 | ); 316 | inputFileListPaths = ( 317 | ); 318 | inputPaths = ( 319 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 320 | "${PODS_ROOT}/Manifest.lock", 321 | ); 322 | name = "[CP] Check Pods Manifest.lock"; 323 | outputFileListPaths = ( 324 | ); 325 | outputPaths = ( 326 | "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", 327 | ); 328 | runOnlyForDeploymentPostprocessing = 0; 329 | shellPath = /bin/sh; 330 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 331 | showEnvVarsInLog = 0; 332 | }; 333 | 9740EEB61CF901F6004384FC /* Run Script */ = { 334 | isa = PBXShellScriptBuildPhase; 335 | alwaysOutOfDate = 1; 336 | buildActionMask = 2147483647; 337 | files = ( 338 | ); 339 | inputPaths = ( 340 | ); 341 | name = "Run Script"; 342 | outputPaths = ( 343 | ); 344 | runOnlyForDeploymentPostprocessing = 0; 345 | shellPath = /bin/sh; 346 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 347 | }; 348 | CEB536D95A6941EBA5BAEBE1 /* [CP] Embed Pods Frameworks */ = { 349 | isa = PBXShellScriptBuildPhase; 350 | buildActionMask = 2147483647; 351 | files = ( 352 | ); 353 | inputFileListPaths = ( 354 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", 355 | ); 356 | name = "[CP] Embed Pods Frameworks"; 357 | outputFileListPaths = ( 358 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", 359 | ); 360 | runOnlyForDeploymentPostprocessing = 0; 361 | shellPath = /bin/sh; 362 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; 363 | showEnvVarsInLog = 0; 364 | }; 365 | /* End PBXShellScriptBuildPhase section */ 366 | 367 | /* Begin PBXSourcesBuildPhase section */ 368 | 331C807D294A63A400263BE5 /* Sources */ = { 369 | isa = PBXSourcesBuildPhase; 370 | buildActionMask = 2147483647; 371 | files = ( 372 | 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, 373 | ); 374 | runOnlyForDeploymentPostprocessing = 0; 375 | }; 376 | 97C146EA1CF9000F007C117D /* Sources */ = { 377 | isa = PBXSourcesBuildPhase; 378 | buildActionMask = 2147483647; 379 | files = ( 380 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 381 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 382 | ); 383 | runOnlyForDeploymentPostprocessing = 0; 384 | }; 385 | /* End PBXSourcesBuildPhase section */ 386 | 387 | /* Begin PBXTargetDependency section */ 388 | 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { 389 | isa = PBXTargetDependency; 390 | target = 97C146ED1CF9000F007C117D /* Runner */; 391 | targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; 392 | }; 393 | /* End PBXTargetDependency section */ 394 | 395 | /* Begin PBXVariantGroup section */ 396 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 397 | isa = PBXVariantGroup; 398 | children = ( 399 | 97C146FB1CF9000F007C117D /* Base */, 400 | ); 401 | name = Main.storyboard; 402 | sourceTree = ""; 403 | }; 404 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 405 | isa = PBXVariantGroup; 406 | children = ( 407 | 97C147001CF9000F007C117D /* Base */, 408 | ); 409 | name = LaunchScreen.storyboard; 410 | sourceTree = ""; 411 | }; 412 | /* End PBXVariantGroup section */ 413 | 414 | /* Begin XCBuildConfiguration section */ 415 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 416 | isa = XCBuildConfiguration; 417 | buildSettings = { 418 | ALWAYS_SEARCH_USER_PATHS = NO; 419 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 420 | CLANG_ANALYZER_NONNULL = YES; 421 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 422 | CLANG_CXX_LIBRARY = "libc++"; 423 | CLANG_ENABLE_MODULES = YES; 424 | CLANG_ENABLE_OBJC_ARC = YES; 425 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 426 | CLANG_WARN_BOOL_CONVERSION = YES; 427 | CLANG_WARN_COMMA = YES; 428 | CLANG_WARN_CONSTANT_CONVERSION = YES; 429 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 430 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 431 | CLANG_WARN_EMPTY_BODY = YES; 432 | CLANG_WARN_ENUM_CONVERSION = YES; 433 | CLANG_WARN_INFINITE_RECURSION = YES; 434 | CLANG_WARN_INT_CONVERSION = YES; 435 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 436 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 437 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 438 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 439 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 440 | CLANG_WARN_STRICT_PROTOTYPES = YES; 441 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 442 | CLANG_WARN_UNREACHABLE_CODE = YES; 443 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 444 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 445 | COPY_PHASE_STRIP = NO; 446 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 447 | ENABLE_NS_ASSERTIONS = NO; 448 | ENABLE_STRICT_OBJC_MSGSEND = YES; 449 | ENABLE_USER_SCRIPT_SANDBOXING = NO; 450 | GCC_C_LANGUAGE_STANDARD = gnu99; 451 | GCC_NO_COMMON_BLOCKS = YES; 452 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 453 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 454 | GCC_WARN_UNDECLARED_SELECTOR = YES; 455 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 456 | GCC_WARN_UNUSED_FUNCTION = YES; 457 | GCC_WARN_UNUSED_VARIABLE = YES; 458 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 459 | MTL_ENABLE_DEBUG_INFO = NO; 460 | SDKROOT = iphoneos; 461 | SUPPORTED_PLATFORMS = iphoneos; 462 | TARGETED_DEVICE_FAMILY = "1,2"; 463 | VALIDATE_PRODUCT = YES; 464 | }; 465 | name = Profile; 466 | }; 467 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 468 | isa = XCBuildConfiguration; 469 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 470 | buildSettings = { 471 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 472 | CLANG_ENABLE_MODULES = YES; 473 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 474 | ENABLE_BITCODE = NO; 475 | INFOPLIST_FILE = Runner/Info.plist; 476 | LD_RUNPATH_SEARCH_PATHS = ( 477 | "$(inherited)", 478 | "@executable_path/Frameworks", 479 | ); 480 | PRODUCT_BUNDLE_IDENTIFIER = com.example.noteApp; 481 | PRODUCT_NAME = "$(TARGET_NAME)"; 482 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 483 | SWIFT_VERSION = 5.0; 484 | VERSIONING_SYSTEM = "apple-generic"; 485 | }; 486 | name = Profile; 487 | }; 488 | 331C8088294A63A400263BE5 /* Debug */ = { 489 | isa = XCBuildConfiguration; 490 | baseConfigurationReference = CABBD8EDB0781EE26C103FB2 /* Pods-RunnerTests.debug.xcconfig */; 491 | buildSettings = { 492 | BUNDLE_LOADER = "$(TEST_HOST)"; 493 | CODE_SIGN_STYLE = Automatic; 494 | CURRENT_PROJECT_VERSION = 1; 495 | GENERATE_INFOPLIST_FILE = YES; 496 | MARKETING_VERSION = 1.0; 497 | PRODUCT_BUNDLE_IDENTIFIER = com.example.noteApp.RunnerTests; 498 | PRODUCT_NAME = "$(TARGET_NAME)"; 499 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 500 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 501 | SWIFT_VERSION = 5.0; 502 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; 503 | }; 504 | name = Debug; 505 | }; 506 | 331C8089294A63A400263BE5 /* Release */ = { 507 | isa = XCBuildConfiguration; 508 | baseConfigurationReference = 173F6D3A4C8CC88433D3ACED /* Pods-RunnerTests.release.xcconfig */; 509 | buildSettings = { 510 | BUNDLE_LOADER = "$(TEST_HOST)"; 511 | CODE_SIGN_STYLE = Automatic; 512 | CURRENT_PROJECT_VERSION = 1; 513 | GENERATE_INFOPLIST_FILE = YES; 514 | MARKETING_VERSION = 1.0; 515 | PRODUCT_BUNDLE_IDENTIFIER = com.example.noteApp.RunnerTests; 516 | PRODUCT_NAME = "$(TARGET_NAME)"; 517 | SWIFT_VERSION = 5.0; 518 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; 519 | }; 520 | name = Release; 521 | }; 522 | 331C808A294A63A400263BE5 /* Profile */ = { 523 | isa = XCBuildConfiguration; 524 | baseConfigurationReference = A7D68179012CCB5B6169B8C5 /* Pods-RunnerTests.profile.xcconfig */; 525 | buildSettings = { 526 | BUNDLE_LOADER = "$(TEST_HOST)"; 527 | CODE_SIGN_STYLE = Automatic; 528 | CURRENT_PROJECT_VERSION = 1; 529 | GENERATE_INFOPLIST_FILE = YES; 530 | MARKETING_VERSION = 1.0; 531 | PRODUCT_BUNDLE_IDENTIFIER = com.example.noteApp.RunnerTests; 532 | PRODUCT_NAME = "$(TARGET_NAME)"; 533 | SWIFT_VERSION = 5.0; 534 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; 535 | }; 536 | name = Profile; 537 | }; 538 | 97C147031CF9000F007C117D /* Debug */ = { 539 | isa = XCBuildConfiguration; 540 | buildSettings = { 541 | ALWAYS_SEARCH_USER_PATHS = NO; 542 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 543 | CLANG_ANALYZER_NONNULL = YES; 544 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 545 | CLANG_CXX_LIBRARY = "libc++"; 546 | CLANG_ENABLE_MODULES = YES; 547 | CLANG_ENABLE_OBJC_ARC = YES; 548 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 549 | CLANG_WARN_BOOL_CONVERSION = YES; 550 | CLANG_WARN_COMMA = YES; 551 | CLANG_WARN_CONSTANT_CONVERSION = YES; 552 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 553 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 554 | CLANG_WARN_EMPTY_BODY = YES; 555 | CLANG_WARN_ENUM_CONVERSION = YES; 556 | CLANG_WARN_INFINITE_RECURSION = YES; 557 | CLANG_WARN_INT_CONVERSION = YES; 558 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 559 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 560 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 561 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 562 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 563 | CLANG_WARN_STRICT_PROTOTYPES = YES; 564 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 565 | CLANG_WARN_UNREACHABLE_CODE = YES; 566 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 567 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 568 | COPY_PHASE_STRIP = NO; 569 | DEBUG_INFORMATION_FORMAT = dwarf; 570 | ENABLE_STRICT_OBJC_MSGSEND = YES; 571 | ENABLE_TESTABILITY = YES; 572 | ENABLE_USER_SCRIPT_SANDBOXING = NO; 573 | GCC_C_LANGUAGE_STANDARD = gnu99; 574 | GCC_DYNAMIC_NO_PIC = NO; 575 | GCC_NO_COMMON_BLOCKS = YES; 576 | GCC_OPTIMIZATION_LEVEL = 0; 577 | GCC_PREPROCESSOR_DEFINITIONS = ( 578 | "DEBUG=1", 579 | "$(inherited)", 580 | ); 581 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 582 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 583 | GCC_WARN_UNDECLARED_SELECTOR = YES; 584 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 585 | GCC_WARN_UNUSED_FUNCTION = YES; 586 | GCC_WARN_UNUSED_VARIABLE = YES; 587 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 588 | MTL_ENABLE_DEBUG_INFO = YES; 589 | ONLY_ACTIVE_ARCH = YES; 590 | SDKROOT = iphoneos; 591 | TARGETED_DEVICE_FAMILY = "1,2"; 592 | }; 593 | name = Debug; 594 | }; 595 | 97C147041CF9000F007C117D /* Release */ = { 596 | isa = XCBuildConfiguration; 597 | buildSettings = { 598 | ALWAYS_SEARCH_USER_PATHS = NO; 599 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 600 | CLANG_ANALYZER_NONNULL = YES; 601 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 602 | CLANG_CXX_LIBRARY = "libc++"; 603 | CLANG_ENABLE_MODULES = YES; 604 | CLANG_ENABLE_OBJC_ARC = YES; 605 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 606 | CLANG_WARN_BOOL_CONVERSION = YES; 607 | CLANG_WARN_COMMA = YES; 608 | CLANG_WARN_CONSTANT_CONVERSION = YES; 609 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 610 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 611 | CLANG_WARN_EMPTY_BODY = YES; 612 | CLANG_WARN_ENUM_CONVERSION = YES; 613 | CLANG_WARN_INFINITE_RECURSION = YES; 614 | CLANG_WARN_INT_CONVERSION = YES; 615 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 616 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 617 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 618 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 619 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 620 | CLANG_WARN_STRICT_PROTOTYPES = YES; 621 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 622 | CLANG_WARN_UNREACHABLE_CODE = YES; 623 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 624 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 625 | COPY_PHASE_STRIP = NO; 626 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 627 | ENABLE_NS_ASSERTIONS = NO; 628 | ENABLE_STRICT_OBJC_MSGSEND = YES; 629 | ENABLE_USER_SCRIPT_SANDBOXING = NO; 630 | GCC_C_LANGUAGE_STANDARD = gnu99; 631 | GCC_NO_COMMON_BLOCKS = YES; 632 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 633 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 634 | GCC_WARN_UNDECLARED_SELECTOR = YES; 635 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 636 | GCC_WARN_UNUSED_FUNCTION = YES; 637 | GCC_WARN_UNUSED_VARIABLE = YES; 638 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 639 | MTL_ENABLE_DEBUG_INFO = NO; 640 | SDKROOT = iphoneos; 641 | SUPPORTED_PLATFORMS = iphoneos; 642 | SWIFT_COMPILATION_MODE = wholemodule; 643 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 644 | TARGETED_DEVICE_FAMILY = "1,2"; 645 | VALIDATE_PRODUCT = YES; 646 | }; 647 | name = Release; 648 | }; 649 | 97C147061CF9000F007C117D /* Debug */ = { 650 | isa = XCBuildConfiguration; 651 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 652 | buildSettings = { 653 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 654 | CLANG_ENABLE_MODULES = YES; 655 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 656 | ENABLE_BITCODE = NO; 657 | INFOPLIST_FILE = Runner/Info.plist; 658 | LD_RUNPATH_SEARCH_PATHS = ( 659 | "$(inherited)", 660 | "@executable_path/Frameworks", 661 | ); 662 | PRODUCT_BUNDLE_IDENTIFIER = com.example.noteApp; 663 | PRODUCT_NAME = "$(TARGET_NAME)"; 664 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 665 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 666 | SWIFT_VERSION = 5.0; 667 | VERSIONING_SYSTEM = "apple-generic"; 668 | }; 669 | name = Debug; 670 | }; 671 | 97C147071CF9000F007C117D /* Release */ = { 672 | isa = XCBuildConfiguration; 673 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 674 | buildSettings = { 675 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 676 | CLANG_ENABLE_MODULES = YES; 677 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 678 | ENABLE_BITCODE = NO; 679 | INFOPLIST_FILE = Runner/Info.plist; 680 | LD_RUNPATH_SEARCH_PATHS = ( 681 | "$(inherited)", 682 | "@executable_path/Frameworks", 683 | ); 684 | PRODUCT_BUNDLE_IDENTIFIER = com.example.noteApp; 685 | PRODUCT_NAME = "$(TARGET_NAME)"; 686 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 687 | SWIFT_VERSION = 5.0; 688 | VERSIONING_SYSTEM = "apple-generic"; 689 | }; 690 | name = Release; 691 | }; 692 | /* End XCBuildConfiguration section */ 693 | 694 | /* Begin XCConfigurationList section */ 695 | 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { 696 | isa = XCConfigurationList; 697 | buildConfigurations = ( 698 | 331C8088294A63A400263BE5 /* Debug */, 699 | 331C8089294A63A400263BE5 /* Release */, 700 | 331C808A294A63A400263BE5 /* Profile */, 701 | ); 702 | defaultConfigurationIsVisible = 0; 703 | defaultConfigurationName = Release; 704 | }; 705 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 706 | isa = XCConfigurationList; 707 | buildConfigurations = ( 708 | 97C147031CF9000F007C117D /* Debug */, 709 | 97C147041CF9000F007C117D /* Release */, 710 | 249021D3217E4FDB00AE95B9 /* Profile */, 711 | ); 712 | defaultConfigurationIsVisible = 0; 713 | defaultConfigurationName = Release; 714 | }; 715 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 716 | isa = XCConfigurationList; 717 | buildConfigurations = ( 718 | 97C147061CF9000F007C117D /* Debug */, 719 | 97C147071CF9000F007C117D /* Release */, 720 | 249021D4217E4FDB00AE95B9 /* Profile */, 721 | ); 722 | defaultConfigurationIsVisible = 0; 723 | defaultConfigurationName = Release; 724 | }; 725 | /* End XCConfigurationList section */ 726 | }; 727 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 728 | } 729 | --------------------------------------------------------------------------------