├── .gitignore
├── .metadata
├── README.md
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ ├── google-services.json
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── flutter_note
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-v21
│ │ │ └── launch_background.xml
│ │ │ ├── drawable
│ │ │ └── launch_background.xml
│ │ │ ├── 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
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
└── images
│ └── logo
│ ├── logo.png
│ └── logo2.png
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Podfile
├── Podfile.lock
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
├── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ ├── 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-83.5x83.5@2x.png
│ │ └── LaunchImage.imageset
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ └── README.md
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── GoogleService-Info.plist
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
└── firebase_app_id_file.json
├── lib
├── controllers
│ ├── authController.dart
│ ├── noteController.dart
│ └── userController.dart
├── main.dart
├── models
│ ├── noteModel.dart
│ └── user.dart
├── screens
│ ├── auth
│ │ ├── login.dart
│ │ ├── signup.dart
│ │ └── widgets
│ │ │ └── CustomTextField.dart
│ ├── home
│ │ ├── add_note.dart
│ │ ├── home.dart
│ │ ├── note_list.dart
│ │ └── show_note.dart
│ ├── settings
│ │ ├── account.dart
│ │ ├── dark_mode.dart
│ │ ├── setting.dart
│ │ └── widgets
│ │ │ └── list_tile.dart
│ └── widgets
│ │ └── custom_icon_btn.dart
├── services
│ └── database.dart
└── utils
│ ├── root.dart
│ └── theme.dart
├── pubspec.lock
├── pubspec.yaml
├── test
└── widget_test.dart
└── web
├── favicon.png
├── icons
├── Icon-192.png
└── Icon-512.png
├── index.html
└── manifest.json
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 |
12 | # IntelliJ related
13 | *.iml
14 | *.ipr
15 | *.iws
16 | .idea/
17 |
18 | # The .vscode folder contains launch configuration and tasks you configure in
19 | # VS Code which you may wish to be included in version control, so this line
20 | # is commented out by default.
21 | #.vscode/
22 |
23 | # Flutter/Dart/Pub related
24 | **/doc/api/
25 | **/ios/Flutter/.last_build_id
26 | .dart_tool/
27 | .flutter-plugins
28 | .flutter-plugins-dependencies
29 | .packages
30 | .pub-cache/
31 | .pub/
32 | /build/
33 |
34 | # Web related
35 | lib/generated_plugin_registrant.dart
36 |
37 | # Symbolication related
38 | app.*.symbols
39 |
40 | # Obfuscation related
41 | app.*.map.json
42 |
43 | # Android Studio will place build artifacts here
44 | /android/app/debug
45 | /android/app/profile
46 | /android/app/release
47 |
48 | # Firebase Api keys and configuration file
49 | lib/firebase_options.dart
--------------------------------------------------------------------------------
/.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: 1d9032c7e1d867f071f2277eb1673e8f9b0274e3
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Note App
2 |
3 | Note app (Both frontend and backend) created with Flutter and Firebase.
4 |
5 | [](https://saythanks.io/to/mohak1283)
6 |
7 | ## Show some :heart: and star the repo to support the project.
8 |
9 | **Complete UI Contains:**
10 |
11 | ► Sign in & Sign up
12 | ► Home Screen
13 | ► Setting screen
14 | ► Account details
15 | ► Appearance setting
16 | ► Add note screen
17 | ► Edit note screen
18 |
19 | ## Note
20 | This repository is still under development and I will continue to add more features to it.
21 |
22 | ## Features
23 |
24 | * login and sign up user
25 | * View notes in list or grid layout
26 | * Change app theme - light or dark theme
27 | * Add and edit notes
28 | * Colorful notes (random)
29 |
30 | ## Screenshots
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | # Upcoming Features
48 | - To let user select note bg color
49 | - share notes
50 | - hand free note taking (speech to text)
51 |
52 | ### Created & Maintained By
53 |
54 | Tenzin Tamdin
55 |
56 |
57 |
58 |
59 | > If you found this project helpful or you learned something from the source code and want to thank me, consider buying me a cup of :coffee:
60 | >
61 | > * [PayPal](https://www.paypal.com/paypalme/TenzinTamdin/)
62 |
63 |
64 | ## How to Contribute
65 | 1. Fork the the project
66 | 2. Create your feature branch (git checkout -b my-new-feature)
67 | 3. Make required changes and commit (git commit -am 'Add some feature')
68 | 4. Push to the branch (git push origin my-new-feature)
69 | 5. Create new Pull Request
70 |
71 | ## License
72 |
73 | Copyright (c) 2021 Tenzin Tamdin
74 |
75 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
76 |
77 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
78 |
79 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
80 |
--------------------------------------------------------------------------------
/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/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 | flutterVersionCode = '1'
17 | }
18 |
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 | flutterVersionName = '1.0'
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | apply plugin: 'kotlin-android'
26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
27 |
28 | android {
29 | compileSdkVersion 30
30 |
31 | sourceSets {
32 | main.java.srcDirs += 'src/main/kotlin'
33 | }
34 |
35 | defaultConfig {
36 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
37 | applicationId "com.example.flutter_note"
38 | minSdkVersion 21
39 | targetSdkVersion 30
40 | versionCode flutterVersionCode.toInteger()
41 | versionName flutterVersionName
42 | }
43 |
44 | buildTypes {
45 | release {
46 | // TODO: Add your own signing config for the release build.
47 | // Signing with the debug keys for now, so `flutter run --release` works.
48 | signingConfig signingConfigs.debug
49 | }
50 | }
51 | }
52 |
53 | flutter {
54 | source '../..'
55 | }
56 |
57 | dependencies {
58 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
59 | }
60 |
61 | apply plugin: 'com.google.gms.google-services'
62 |
63 |
--------------------------------------------------------------------------------
/android/app/google-services.json:
--------------------------------------------------------------------------------
1 | {
2 | "project_info": {
3 | "project_number": "868884109886",
4 | "project_id": "flutter-note-dbb3a",
5 | "storage_bucket": "flutter-note-dbb3a.appspot.com"
6 | },
7 | "client": [
8 | {
9 | "client_info": {
10 | "mobilesdk_app_id": "1:868884109886:android:c49af8a0f40936ec904f6f",
11 | "android_client_info": {
12 | "package_name": "com.example.flutter_note"
13 | }
14 | },
15 | "oauth_client": [
16 | {
17 | "client_id": "868884109886-hirofgah6hncidtaaqs9f615buc4sfaj.apps.googleusercontent.com",
18 | "client_type": 3
19 | }
20 | ],
21 | "api_key": [
22 | {
23 | "current_key": "AIzaSyApTI8Ip8LMMaJD_x24kkhJqRttPDdueA0"
24 | }
25 | ],
26 | "services": {
27 | "appinvite_service": {
28 | "other_platform_oauth_client": [
29 | {
30 | "client_id": "868884109886-hirofgah6hncidtaaqs9f615buc4sfaj.apps.googleusercontent.com",
31 | "client_type": 3
32 | },
33 | {
34 | "client_id": "868884109886-badajmdp75k6f6tj73038e0qai436b5k.apps.googleusercontent.com",
35 | "client_type": 2,
36 | "ios_info": {
37 | "bundle_id": "com.example.flutterNote"
38 | }
39 | }
40 | ]
41 | }
42 | }
43 | }
44 | ],
45 | "configuration_version": "1"
46 | }
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
13 |
17 |
21 |
26 |
30 |
31 |
32 |
33 |
34 |
35 |
37 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/example/flutter_note/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.flutter_note
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.3.50'
3 | repositories {
4 | google()
5 | jcenter()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:4.1.0'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | classpath 'com.google.gms:google-services:4.3.8'
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | google()
18 | jcenter()
19 | }
20 | }
21 |
22 | rootProject.buildDir = '../build'
23 | subprojects {
24 | project.buildDir = "${rootProject.buildDir}/${project.name}"
25 | }
26 | subprojects {
27 | project.evaluationDependsOn(':app')
28 | }
29 |
30 | task clean(type: Delete) {
31 | delete rootProject.buildDir
32 | }
33 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
7 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4 | def properties = new Properties()
5 |
6 | assert localPropertiesFile.exists()
7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
8 |
9 | def flutterSdkPath = properties.getProperty("flutter.sdk")
10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
12 |
--------------------------------------------------------------------------------
/assets/images/logo/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/assets/images/logo/logo.png
--------------------------------------------------------------------------------
/assets/images/logo/logo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/assets/images/logo/logo2.png
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | *.mode1v3
2 | *.mode2v3
3 | *.moved-aside
4 | *.pbxuser
5 | *.perspectivev3
6 | **/*sync/
7 | .sconsign.dblite
8 | .tags*
9 | **/.vagrant/
10 | **/DerivedData/
11 | Icon?
12 | **/Pods/
13 | **/.symlinks/
14 | profile
15 | xcuserdata
16 | **/.generated/
17 | Flutter/App.framework
18 | Flutter/Flutter.framework
19 | Flutter/Flutter.podspec
20 | Flutter/Generated.xcconfig
21 | Flutter/app.flx
22 | Flutter/app.zip
23 | Flutter/flutter_assets/
24 | Flutter/flutter_export_environment.sh
25 | ServiceDefinitions.json
26 | Runner/GeneratedPluginRegistrant.*
27 |
28 | # Exceptions to above rules.
29 | !default.mode1v3
30 | !default.mode2v3
31 | !default.pbxuser
32 | !default.perspectivev3
33 |
--------------------------------------------------------------------------------
/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 | 11.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | platform :ios, '11.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 | end
36 |
37 | post_install do |installer|
38 | installer.pods_project.targets.each do |target|
39 | flutter_additional_ios_build_settings(target)
40 | end
41 | end
42 |
--------------------------------------------------------------------------------
/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - abseil/algorithm (1.20211102.0):
3 | - abseil/algorithm/algorithm (= 1.20211102.0)
4 | - abseil/algorithm/container (= 1.20211102.0)
5 | - abseil/algorithm/algorithm (1.20211102.0):
6 | - abseil/base/config
7 | - abseil/algorithm/container (1.20211102.0):
8 | - abseil/algorithm/algorithm
9 | - abseil/base/core_headers
10 | - abseil/meta/type_traits
11 | - abseil/base (1.20211102.0):
12 | - abseil/base/atomic_hook (= 1.20211102.0)
13 | - abseil/base/base (= 1.20211102.0)
14 | - abseil/base/base_internal (= 1.20211102.0)
15 | - abseil/base/config (= 1.20211102.0)
16 | - abseil/base/core_headers (= 1.20211102.0)
17 | - abseil/base/dynamic_annotations (= 1.20211102.0)
18 | - abseil/base/endian (= 1.20211102.0)
19 | - abseil/base/errno_saver (= 1.20211102.0)
20 | - abseil/base/fast_type_id (= 1.20211102.0)
21 | - abseil/base/log_severity (= 1.20211102.0)
22 | - abseil/base/malloc_internal (= 1.20211102.0)
23 | - abseil/base/pretty_function (= 1.20211102.0)
24 | - abseil/base/raw_logging_internal (= 1.20211102.0)
25 | - abseil/base/spinlock_wait (= 1.20211102.0)
26 | - abseil/base/strerror (= 1.20211102.0)
27 | - abseil/base/throw_delegate (= 1.20211102.0)
28 | - abseil/base/atomic_hook (1.20211102.0):
29 | - abseil/base/config
30 | - abseil/base/core_headers
31 | - abseil/base/base (1.20211102.0):
32 | - abseil/base/atomic_hook
33 | - abseil/base/base_internal
34 | - abseil/base/config
35 | - abseil/base/core_headers
36 | - abseil/base/dynamic_annotations
37 | - abseil/base/log_severity
38 | - abseil/base/raw_logging_internal
39 | - abseil/base/spinlock_wait
40 | - abseil/meta/type_traits
41 | - abseil/base/base_internal (1.20211102.0):
42 | - abseil/base/config
43 | - abseil/meta/type_traits
44 | - abseil/base/config (1.20211102.0)
45 | - abseil/base/core_headers (1.20211102.0):
46 | - abseil/base/config
47 | - abseil/base/dynamic_annotations (1.20211102.0):
48 | - abseil/base/config
49 | - abseil/base/core_headers
50 | - abseil/base/endian (1.20211102.0):
51 | - abseil/base/base
52 | - abseil/base/config
53 | - abseil/base/core_headers
54 | - abseil/base/errno_saver (1.20211102.0):
55 | - abseil/base/config
56 | - abseil/base/fast_type_id (1.20211102.0):
57 | - abseil/base/config
58 | - abseil/base/log_severity (1.20211102.0):
59 | - abseil/base/config
60 | - abseil/base/core_headers
61 | - abseil/base/malloc_internal (1.20211102.0):
62 | - abseil/base/base
63 | - abseil/base/base_internal
64 | - abseil/base/config
65 | - abseil/base/core_headers
66 | - abseil/base/dynamic_annotations
67 | - abseil/base/raw_logging_internal
68 | - abseil/base/pretty_function (1.20211102.0)
69 | - abseil/base/raw_logging_internal (1.20211102.0):
70 | - abseil/base/atomic_hook
71 | - abseil/base/config
72 | - abseil/base/core_headers
73 | - abseil/base/log_severity
74 | - abseil/base/spinlock_wait (1.20211102.0):
75 | - abseil/base/base_internal
76 | - abseil/base/core_headers
77 | - abseil/base/errno_saver
78 | - abseil/base/strerror (1.20211102.0):
79 | - abseil/base/config
80 | - abseil/base/core_headers
81 | - abseil/base/errno_saver
82 | - abseil/base/throw_delegate (1.20211102.0):
83 | - abseil/base/config
84 | - abseil/base/raw_logging_internal
85 | - abseil/container/common (1.20211102.0):
86 | - abseil/meta/type_traits
87 | - abseil/types/optional
88 | - abseil/container/compressed_tuple (1.20211102.0):
89 | - abseil/utility/utility
90 | - abseil/container/container_memory (1.20211102.0):
91 | - abseil/base/config
92 | - abseil/memory/memory
93 | - abseil/meta/type_traits
94 | - abseil/utility/utility
95 | - abseil/container/fixed_array (1.20211102.0):
96 | - abseil/algorithm/algorithm
97 | - abseil/base/config
98 | - abseil/base/core_headers
99 | - abseil/base/dynamic_annotations
100 | - abseil/base/throw_delegate
101 | - abseil/container/compressed_tuple
102 | - abseil/memory/memory
103 | - abseil/container/flat_hash_map (1.20211102.0):
104 | - abseil/algorithm/container
105 | - abseil/container/container_memory
106 | - abseil/container/hash_function_defaults
107 | - abseil/container/raw_hash_map
108 | - abseil/memory/memory
109 | - abseil/container/hash_function_defaults (1.20211102.0):
110 | - abseil/base/config
111 | - abseil/hash/hash
112 | - abseil/strings/cord
113 | - abseil/strings/strings
114 | - abseil/container/hash_policy_traits (1.20211102.0):
115 | - abseil/meta/type_traits
116 | - abseil/container/hashtable_debug_hooks (1.20211102.0):
117 | - abseil/base/config
118 | - abseil/container/hashtablez_sampler (1.20211102.0):
119 | - abseil/base/base
120 | - abseil/base/core_headers
121 | - abseil/container/have_sse
122 | - abseil/debugging/stacktrace
123 | - abseil/memory/memory
124 | - abseil/profiling/exponential_biased
125 | - abseil/profiling/sample_recorder
126 | - abseil/synchronization/synchronization
127 | - abseil/utility/utility
128 | - abseil/container/have_sse (1.20211102.0)
129 | - abseil/container/inlined_vector (1.20211102.0):
130 | - abseil/algorithm/algorithm
131 | - abseil/base/core_headers
132 | - abseil/base/throw_delegate
133 | - abseil/container/inlined_vector_internal
134 | - abseil/memory/memory
135 | - abseil/container/inlined_vector_internal (1.20211102.0):
136 | - abseil/base/core_headers
137 | - abseil/container/compressed_tuple
138 | - abseil/memory/memory
139 | - abseil/meta/type_traits
140 | - abseil/types/span
141 | - abseil/container/layout (1.20211102.0):
142 | - abseil/base/config
143 | - abseil/base/core_headers
144 | - abseil/meta/type_traits
145 | - abseil/strings/strings
146 | - abseil/types/span
147 | - abseil/utility/utility
148 | - abseil/container/raw_hash_map (1.20211102.0):
149 | - abseil/base/throw_delegate
150 | - abseil/container/container_memory
151 | - abseil/container/raw_hash_set
152 | - abseil/container/raw_hash_set (1.20211102.0):
153 | - abseil/base/config
154 | - abseil/base/core_headers
155 | - abseil/base/endian
156 | - abseil/container/common
157 | - abseil/container/compressed_tuple
158 | - abseil/container/container_memory
159 | - abseil/container/hash_policy_traits
160 | - abseil/container/hashtable_debug_hooks
161 | - abseil/container/hashtablez_sampler
162 | - abseil/container/have_sse
163 | - abseil/memory/memory
164 | - abseil/meta/type_traits
165 | - abseil/numeric/bits
166 | - abseil/utility/utility
167 | - abseil/debugging/debugging_internal (1.20211102.0):
168 | - abseil/base/config
169 | - abseil/base/core_headers
170 | - abseil/base/dynamic_annotations
171 | - abseil/base/errno_saver
172 | - abseil/base/raw_logging_internal
173 | - abseil/debugging/demangle_internal (1.20211102.0):
174 | - abseil/base/base
175 | - abseil/base/config
176 | - abseil/base/core_headers
177 | - abseil/debugging/stacktrace (1.20211102.0):
178 | - abseil/base/config
179 | - abseil/base/core_headers
180 | - abseil/debugging/debugging_internal
181 | - abseil/debugging/symbolize (1.20211102.0):
182 | - abseil/base/base
183 | - abseil/base/config
184 | - abseil/base/core_headers
185 | - abseil/base/dynamic_annotations
186 | - abseil/base/malloc_internal
187 | - abseil/base/raw_logging_internal
188 | - abseil/debugging/debugging_internal
189 | - abseil/debugging/demangle_internal
190 | - abseil/strings/strings
191 | - abseil/functional/bind_front (1.20211102.0):
192 | - abseil/base/base_internal
193 | - abseil/container/compressed_tuple
194 | - abseil/meta/type_traits
195 | - abseil/utility/utility
196 | - abseil/functional/function_ref (1.20211102.0):
197 | - abseil/base/base_internal
198 | - abseil/base/core_headers
199 | - abseil/meta/type_traits
200 | - abseil/hash/city (1.20211102.0):
201 | - abseil/base/config
202 | - abseil/base/core_headers
203 | - abseil/base/endian
204 | - abseil/hash/hash (1.20211102.0):
205 | - abseil/base/config
206 | - abseil/base/core_headers
207 | - abseil/base/endian
208 | - abseil/container/fixed_array
209 | - abseil/hash/city
210 | - abseil/hash/low_level_hash
211 | - abseil/meta/type_traits
212 | - abseil/numeric/int128
213 | - abseil/strings/strings
214 | - abseil/types/optional
215 | - abseil/types/variant
216 | - abseil/utility/utility
217 | - abseil/hash/low_level_hash (1.20211102.0):
218 | - abseil/base/config
219 | - abseil/base/endian
220 | - abseil/numeric/bits
221 | - abseil/numeric/int128
222 | - abseil/memory (1.20211102.0):
223 | - abseil/memory/memory (= 1.20211102.0)
224 | - abseil/memory/memory (1.20211102.0):
225 | - abseil/base/core_headers
226 | - abseil/meta/type_traits
227 | - abseil/meta (1.20211102.0):
228 | - abseil/meta/type_traits (= 1.20211102.0)
229 | - abseil/meta/type_traits (1.20211102.0):
230 | - abseil/base/config
231 | - abseil/numeric/bits (1.20211102.0):
232 | - abseil/base/config
233 | - abseil/base/core_headers
234 | - abseil/numeric/int128 (1.20211102.0):
235 | - abseil/base/config
236 | - abseil/base/core_headers
237 | - abseil/numeric/bits
238 | - abseil/numeric/representation (1.20211102.0):
239 | - abseil/base/config
240 | - abseil/profiling/exponential_biased (1.20211102.0):
241 | - abseil/base/config
242 | - abseil/base/core_headers
243 | - abseil/profiling/sample_recorder (1.20211102.0):
244 | - abseil/base/config
245 | - abseil/base/core_headers
246 | - abseil/synchronization/synchronization
247 | - abseil/time/time
248 | - abseil/random/distributions (1.20211102.0):
249 | - abseil/base/base_internal
250 | - abseil/base/config
251 | - abseil/base/core_headers
252 | - abseil/meta/type_traits
253 | - abseil/numeric/bits
254 | - abseil/random/internal/distribution_caller
255 | - abseil/random/internal/fast_uniform_bits
256 | - abseil/random/internal/fastmath
257 | - abseil/random/internal/generate_real
258 | - abseil/random/internal/iostream_state_saver
259 | - abseil/random/internal/traits
260 | - abseil/random/internal/uniform_helper
261 | - abseil/random/internal/wide_multiply
262 | - abseil/strings/strings
263 | - abseil/random/internal/distribution_caller (1.20211102.0):
264 | - abseil/base/config
265 | - abseil/base/fast_type_id
266 | - abseil/utility/utility
267 | - abseil/random/internal/fast_uniform_bits (1.20211102.0):
268 | - abseil/base/config
269 | - abseil/meta/type_traits
270 | - abseil/random/internal/fastmath (1.20211102.0):
271 | - abseil/numeric/bits
272 | - abseil/random/internal/generate_real (1.20211102.0):
273 | - abseil/meta/type_traits
274 | - abseil/numeric/bits
275 | - abseil/random/internal/fastmath
276 | - abseil/random/internal/traits
277 | - abseil/random/internal/iostream_state_saver (1.20211102.0):
278 | - abseil/meta/type_traits
279 | - abseil/numeric/int128
280 | - abseil/random/internal/nonsecure_base (1.20211102.0):
281 | - abseil/base/core_headers
282 | - abseil/meta/type_traits
283 | - abseil/random/internal/pool_urbg
284 | - abseil/random/internal/salted_seed_seq
285 | - abseil/random/internal/seed_material
286 | - abseil/types/optional
287 | - abseil/types/span
288 | - abseil/random/internal/pcg_engine (1.20211102.0):
289 | - abseil/base/config
290 | - abseil/meta/type_traits
291 | - abseil/numeric/bits
292 | - abseil/numeric/int128
293 | - abseil/random/internal/fastmath
294 | - abseil/random/internal/iostream_state_saver
295 | - abseil/random/internal/platform (1.20211102.0):
296 | - abseil/base/config
297 | - abseil/random/internal/pool_urbg (1.20211102.0):
298 | - abseil/base/base
299 | - abseil/base/config
300 | - abseil/base/core_headers
301 | - abseil/base/endian
302 | - abseil/base/raw_logging_internal
303 | - abseil/random/internal/randen
304 | - abseil/random/internal/seed_material
305 | - abseil/random/internal/traits
306 | - abseil/random/seed_gen_exception
307 | - abseil/types/span
308 | - abseil/random/internal/randen (1.20211102.0):
309 | - abseil/base/raw_logging_internal
310 | - abseil/random/internal/platform
311 | - abseil/random/internal/randen_hwaes
312 | - abseil/random/internal/randen_slow
313 | - abseil/random/internal/randen_engine (1.20211102.0):
314 | - abseil/base/endian
315 | - abseil/meta/type_traits
316 | - abseil/random/internal/iostream_state_saver
317 | - abseil/random/internal/randen
318 | - abseil/random/internal/randen_hwaes (1.20211102.0):
319 | - abseil/base/config
320 | - abseil/random/internal/platform
321 | - abseil/random/internal/randen_hwaes_impl
322 | - abseil/random/internal/randen_hwaes_impl (1.20211102.0):
323 | - abseil/base/config
324 | - abseil/base/core_headers
325 | - abseil/numeric/int128
326 | - abseil/random/internal/platform
327 | - abseil/random/internal/randen_slow (1.20211102.0):
328 | - abseil/base/config
329 | - abseil/base/core_headers
330 | - abseil/base/endian
331 | - abseil/numeric/int128
332 | - abseil/random/internal/platform
333 | - abseil/random/internal/salted_seed_seq (1.20211102.0):
334 | - abseil/container/inlined_vector
335 | - abseil/meta/type_traits
336 | - abseil/random/internal/seed_material
337 | - abseil/types/optional
338 | - abseil/types/span
339 | - abseil/random/internal/seed_material (1.20211102.0):
340 | - abseil/base/core_headers
341 | - abseil/base/dynamic_annotations
342 | - abseil/base/raw_logging_internal
343 | - abseil/random/internal/fast_uniform_bits
344 | - abseil/strings/strings
345 | - abseil/types/optional
346 | - abseil/types/span
347 | - abseil/random/internal/traits (1.20211102.0):
348 | - abseil/base/config
349 | - abseil/random/internal/uniform_helper (1.20211102.0):
350 | - abseil/base/config
351 | - abseil/meta/type_traits
352 | - abseil/random/internal/traits
353 | - abseil/random/internal/wide_multiply (1.20211102.0):
354 | - abseil/base/config
355 | - abseil/numeric/bits
356 | - abseil/numeric/int128
357 | - abseil/random/internal/traits
358 | - abseil/random/random (1.20211102.0):
359 | - abseil/random/distributions
360 | - abseil/random/internal/nonsecure_base
361 | - abseil/random/internal/pcg_engine
362 | - abseil/random/internal/pool_urbg
363 | - abseil/random/internal/randen_engine
364 | - abseil/random/seed_sequences
365 | - abseil/random/seed_gen_exception (1.20211102.0):
366 | - abseil/base/config
367 | - abseil/random/seed_sequences (1.20211102.0):
368 | - abseil/container/inlined_vector
369 | - abseil/random/internal/nonsecure_base
370 | - abseil/random/internal/pool_urbg
371 | - abseil/random/internal/salted_seed_seq
372 | - abseil/random/internal/seed_material
373 | - abseil/random/seed_gen_exception
374 | - abseil/types/span
375 | - abseil/status/status (1.20211102.0):
376 | - abseil/base/atomic_hook
377 | - abseil/base/config
378 | - abseil/base/core_headers
379 | - abseil/base/raw_logging_internal
380 | - abseil/container/inlined_vector
381 | - abseil/debugging/stacktrace
382 | - abseil/debugging/symbolize
383 | - abseil/functional/function_ref
384 | - abseil/strings/cord
385 | - abseil/strings/str_format
386 | - abseil/strings/strings
387 | - abseil/types/optional
388 | - abseil/status/statusor (1.20211102.0):
389 | - abseil/base/base
390 | - abseil/base/core_headers
391 | - abseil/base/raw_logging_internal
392 | - abseil/meta/type_traits
393 | - abseil/status/status
394 | - abseil/strings/strings
395 | - abseil/types/variant
396 | - abseil/utility/utility
397 | - abseil/strings/cord (1.20211102.0):
398 | - abseil/base/base
399 | - abseil/base/config
400 | - abseil/base/core_headers
401 | - abseil/base/endian
402 | - abseil/base/raw_logging_internal
403 | - abseil/container/fixed_array
404 | - abseil/container/inlined_vector
405 | - abseil/functional/function_ref
406 | - abseil/meta/type_traits
407 | - abseil/strings/cord_internal
408 | - abseil/strings/cordz_functions
409 | - abseil/strings/cordz_info
410 | - abseil/strings/cordz_statistics
411 | - abseil/strings/cordz_update_scope
412 | - abseil/strings/cordz_update_tracker
413 | - abseil/strings/internal
414 | - abseil/strings/str_format
415 | - abseil/strings/strings
416 | - abseil/types/optional
417 | - abseil/strings/cord_internal (1.20211102.0):
418 | - abseil/base/base_internal
419 | - abseil/base/config
420 | - abseil/base/core_headers
421 | - abseil/base/endian
422 | - abseil/base/raw_logging_internal
423 | - abseil/base/throw_delegate
424 | - abseil/container/compressed_tuple
425 | - abseil/container/inlined_vector
426 | - abseil/container/layout
427 | - abseil/functional/function_ref
428 | - abseil/meta/type_traits
429 | - abseil/strings/strings
430 | - abseil/types/span
431 | - abseil/strings/cordz_functions (1.20211102.0):
432 | - abseil/base/config
433 | - abseil/base/core_headers
434 | - abseil/base/raw_logging_internal
435 | - abseil/profiling/exponential_biased
436 | - abseil/strings/cordz_handle (1.20211102.0):
437 | - abseil/base/base
438 | - abseil/base/config
439 | - abseil/base/raw_logging_internal
440 | - abseil/synchronization/synchronization
441 | - abseil/strings/cordz_info (1.20211102.0):
442 | - abseil/base/base
443 | - abseil/base/config
444 | - abseil/base/core_headers
445 | - abseil/base/raw_logging_internal
446 | - abseil/container/inlined_vector
447 | - abseil/debugging/stacktrace
448 | - abseil/strings/cord_internal
449 | - abseil/strings/cordz_functions
450 | - abseil/strings/cordz_handle
451 | - abseil/strings/cordz_statistics
452 | - abseil/strings/cordz_update_tracker
453 | - abseil/synchronization/synchronization
454 | - abseil/types/span
455 | - abseil/strings/cordz_statistics (1.20211102.0):
456 | - abseil/base/config
457 | - abseil/strings/cordz_update_tracker
458 | - abseil/strings/cordz_update_scope (1.20211102.0):
459 | - abseil/base/config
460 | - abseil/base/core_headers
461 | - abseil/strings/cord_internal
462 | - abseil/strings/cordz_info
463 | - abseil/strings/cordz_update_tracker
464 | - abseil/strings/cordz_update_tracker (1.20211102.0):
465 | - abseil/base/config
466 | - abseil/strings/internal (1.20211102.0):
467 | - abseil/base/config
468 | - abseil/base/core_headers
469 | - abseil/base/endian
470 | - abseil/base/raw_logging_internal
471 | - abseil/meta/type_traits
472 | - abseil/strings/str_format (1.20211102.0):
473 | - abseil/strings/str_format_internal
474 | - abseil/strings/str_format_internal (1.20211102.0):
475 | - abseil/base/config
476 | - abseil/base/core_headers
477 | - abseil/functional/function_ref
478 | - abseil/meta/type_traits
479 | - abseil/numeric/bits
480 | - abseil/numeric/int128
481 | - abseil/numeric/representation
482 | - abseil/strings/strings
483 | - abseil/types/optional
484 | - abseil/types/span
485 | - abseil/strings/strings (1.20211102.0):
486 | - abseil/base/base
487 | - abseil/base/config
488 | - abseil/base/core_headers
489 | - abseil/base/endian
490 | - abseil/base/raw_logging_internal
491 | - abseil/base/throw_delegate
492 | - abseil/memory/memory
493 | - abseil/meta/type_traits
494 | - abseil/numeric/bits
495 | - abseil/numeric/int128
496 | - abseil/strings/internal
497 | - abseil/synchronization/graphcycles_internal (1.20211102.0):
498 | - abseil/base/base
499 | - abseil/base/base_internal
500 | - abseil/base/config
501 | - abseil/base/core_headers
502 | - abseil/base/malloc_internal
503 | - abseil/base/raw_logging_internal
504 | - abseil/synchronization/kernel_timeout_internal (1.20211102.0):
505 | - abseil/base/core_headers
506 | - abseil/base/raw_logging_internal
507 | - abseil/time/time
508 | - abseil/synchronization/synchronization (1.20211102.0):
509 | - abseil/base/atomic_hook
510 | - abseil/base/base
511 | - abseil/base/base_internal
512 | - abseil/base/config
513 | - abseil/base/core_headers
514 | - abseil/base/dynamic_annotations
515 | - abseil/base/malloc_internal
516 | - abseil/base/raw_logging_internal
517 | - abseil/debugging/stacktrace
518 | - abseil/debugging/symbolize
519 | - abseil/synchronization/graphcycles_internal
520 | - abseil/synchronization/kernel_timeout_internal
521 | - abseil/time/time
522 | - abseil/time (1.20211102.0):
523 | - abseil/time/internal (= 1.20211102.0)
524 | - abseil/time/time (= 1.20211102.0)
525 | - abseil/time/internal (1.20211102.0):
526 | - abseil/time/internal/cctz (= 1.20211102.0)
527 | - abseil/time/internal/cctz (1.20211102.0):
528 | - abseil/time/internal/cctz/civil_time (= 1.20211102.0)
529 | - abseil/time/internal/cctz/time_zone (= 1.20211102.0)
530 | - abseil/time/internal/cctz/civil_time (1.20211102.0):
531 | - abseil/base/config
532 | - abseil/time/internal/cctz/time_zone (1.20211102.0):
533 | - abseil/base/config
534 | - abseil/time/internal/cctz/civil_time
535 | - abseil/time/time (1.20211102.0):
536 | - abseil/base/base
537 | - abseil/base/core_headers
538 | - abseil/base/raw_logging_internal
539 | - abseil/numeric/int128
540 | - abseil/strings/strings
541 | - abseil/time/internal/cctz/civil_time
542 | - abseil/time/internal/cctz/time_zone
543 | - abseil/types (1.20211102.0):
544 | - abseil/types/any (= 1.20211102.0)
545 | - abseil/types/bad_any_cast (= 1.20211102.0)
546 | - abseil/types/bad_any_cast_impl (= 1.20211102.0)
547 | - abseil/types/bad_optional_access (= 1.20211102.0)
548 | - abseil/types/bad_variant_access (= 1.20211102.0)
549 | - abseil/types/compare (= 1.20211102.0)
550 | - abseil/types/optional (= 1.20211102.0)
551 | - abseil/types/span (= 1.20211102.0)
552 | - abseil/types/variant (= 1.20211102.0)
553 | - abseil/types/any (1.20211102.0):
554 | - abseil/base/config
555 | - abseil/base/core_headers
556 | - abseil/base/fast_type_id
557 | - abseil/meta/type_traits
558 | - abseil/types/bad_any_cast
559 | - abseil/utility/utility
560 | - abseil/types/bad_any_cast (1.20211102.0):
561 | - abseil/base/config
562 | - abseil/types/bad_any_cast_impl
563 | - abseil/types/bad_any_cast_impl (1.20211102.0):
564 | - abseil/base/config
565 | - abseil/base/raw_logging_internal
566 | - abseil/types/bad_optional_access (1.20211102.0):
567 | - abseil/base/config
568 | - abseil/base/raw_logging_internal
569 | - abseil/types/bad_variant_access (1.20211102.0):
570 | - abseil/base/config
571 | - abseil/base/raw_logging_internal
572 | - abseil/types/compare (1.20211102.0):
573 | - abseil/base/core_headers
574 | - abseil/meta/type_traits
575 | - abseil/types/optional (1.20211102.0):
576 | - abseil/base/base_internal
577 | - abseil/base/config
578 | - abseil/base/core_headers
579 | - abseil/memory/memory
580 | - abseil/meta/type_traits
581 | - abseil/types/bad_optional_access
582 | - abseil/utility/utility
583 | - abseil/types/span (1.20211102.0):
584 | - abseil/algorithm/algorithm
585 | - abseil/base/core_headers
586 | - abseil/base/throw_delegate
587 | - abseil/meta/type_traits
588 | - abseil/types/variant (1.20211102.0):
589 | - abseil/base/base_internal
590 | - abseil/base/config
591 | - abseil/base/core_headers
592 | - abseil/meta/type_traits
593 | - abseil/types/bad_variant_access
594 | - abseil/utility/utility
595 | - abseil/utility/utility (1.20211102.0):
596 | - abseil/base/base_internal
597 | - abseil/base/config
598 | - abseil/meta/type_traits
599 | - AppAuth (1.6.0):
600 | - AppAuth/Core (= 1.6.0)
601 | - AppAuth/ExternalUserAgent (= 1.6.0)
602 | - AppAuth/Core (1.6.0)
603 | - AppAuth/ExternalUserAgent (1.6.0):
604 | - AppAuth/Core
605 | - BoringSSL-GRPC (0.0.24):
606 | - BoringSSL-GRPC/Implementation (= 0.0.24)
607 | - BoringSSL-GRPC/Interface (= 0.0.24)
608 | - BoringSSL-GRPC/Implementation (0.0.24):
609 | - BoringSSL-GRPC/Interface (= 0.0.24)
610 | - BoringSSL-GRPC/Interface (0.0.24)
611 | - cloud_firestore (4.4.3):
612 | - Firebase/Firestore (= 10.3.0)
613 | - firebase_core
614 | - Flutter
615 | - nanopb (< 2.30910.0, >= 2.30908.0)
616 | - Firebase/Auth (10.3.0):
617 | - Firebase/CoreOnly
618 | - FirebaseAuth (~> 10.3.0)
619 | - Firebase/CoreOnly (10.3.0):
620 | - FirebaseCore (= 10.3.0)
621 | - Firebase/Firestore (10.3.0):
622 | - Firebase/CoreOnly
623 | - FirebaseFirestore (~> 10.3.0)
624 | - firebase_auth (4.2.2):
625 | - Firebase/Auth (= 10.3.0)
626 | - firebase_core
627 | - Flutter
628 | - firebase_core (2.7.0):
629 | - Firebase/CoreOnly (= 10.3.0)
630 | - Flutter
631 | - FirebaseAuth (10.3.0):
632 | - FirebaseCore (~> 10.0)
633 | - GoogleUtilities/AppDelegateSwizzler (~> 7.8)
634 | - GoogleUtilities/Environment (~> 7.8)
635 | - GTMSessionFetcher/Core (< 4.0, >= 2.1)
636 | - FirebaseCore (10.3.0):
637 | - FirebaseCoreInternal (~> 10.0)
638 | - GoogleUtilities/Environment (~> 7.8)
639 | - GoogleUtilities/Logger (~> 7.8)
640 | - FirebaseCoreInternal (10.5.0):
641 | - "GoogleUtilities/NSData+zlib (~> 7.8)"
642 | - FirebaseFirestore (10.3.0):
643 | - abseil/algorithm (~> 1.20211102.0)
644 | - abseil/base (~> 1.20211102.0)
645 | - abseil/container/flat_hash_map (~> 1.20211102.0)
646 | - abseil/memory (~> 1.20211102.0)
647 | - abseil/meta (~> 1.20211102.0)
648 | - abseil/strings/strings (~> 1.20211102.0)
649 | - abseil/time (~> 1.20211102.0)
650 | - abseil/types (~> 1.20211102.0)
651 | - FirebaseCore (~> 10.0)
652 | - "gRPC-C++ (~> 1.44.0)"
653 | - leveldb-library (~> 1.22)
654 | - nanopb (< 2.30910.0, >= 2.30908.0)
655 | - Flutter (1.0.0)
656 | - google_sign_in_ios (0.0.1):
657 | - Flutter
658 | - GoogleSignIn (~> 6.2)
659 | - GoogleSignIn (6.2.4):
660 | - AppAuth (~> 1.5)
661 | - GTMAppAuth (~> 1.3)
662 | - GTMSessionFetcher/Core (< 3.0, >= 1.1)
663 | - GoogleUtilities/AppDelegateSwizzler (7.11.0):
664 | - GoogleUtilities/Environment
665 | - GoogleUtilities/Logger
666 | - GoogleUtilities/Network
667 | - GoogleUtilities/Environment (7.11.0):
668 | - PromisesObjC (< 3.0, >= 1.2)
669 | - GoogleUtilities/Logger (7.11.0):
670 | - GoogleUtilities/Environment
671 | - GoogleUtilities/Network (7.11.0):
672 | - GoogleUtilities/Logger
673 | - "GoogleUtilities/NSData+zlib"
674 | - GoogleUtilities/Reachability
675 | - "GoogleUtilities/NSData+zlib (7.11.0)"
676 | - GoogleUtilities/Reachability (7.11.0):
677 | - GoogleUtilities/Logger
678 | - "gRPC-C++ (1.44.0)":
679 | - "gRPC-C++/Implementation (= 1.44.0)"
680 | - "gRPC-C++/Interface (= 1.44.0)"
681 | - "gRPC-C++/Implementation (1.44.0)":
682 | - abseil/base/base (= 1.20211102.0)
683 | - abseil/base/core_headers (= 1.20211102.0)
684 | - abseil/container/flat_hash_map (= 1.20211102.0)
685 | - abseil/container/inlined_vector (= 1.20211102.0)
686 | - abseil/functional/bind_front (= 1.20211102.0)
687 | - abseil/hash/hash (= 1.20211102.0)
688 | - abseil/memory/memory (= 1.20211102.0)
689 | - abseil/random/random (= 1.20211102.0)
690 | - abseil/status/status (= 1.20211102.0)
691 | - abseil/status/statusor (= 1.20211102.0)
692 | - abseil/strings/cord (= 1.20211102.0)
693 | - abseil/strings/str_format (= 1.20211102.0)
694 | - abseil/strings/strings (= 1.20211102.0)
695 | - abseil/synchronization/synchronization (= 1.20211102.0)
696 | - abseil/time/time (= 1.20211102.0)
697 | - abseil/types/optional (= 1.20211102.0)
698 | - abseil/types/variant (= 1.20211102.0)
699 | - abseil/utility/utility (= 1.20211102.0)
700 | - "gRPC-C++/Interface (= 1.44.0)"
701 | - gRPC-Core (= 1.44.0)
702 | - "gRPC-C++/Interface (1.44.0)"
703 | - gRPC-Core (1.44.0):
704 | - gRPC-Core/Implementation (= 1.44.0)
705 | - gRPC-Core/Interface (= 1.44.0)
706 | - gRPC-Core/Implementation (1.44.0):
707 | - abseil/base/base (= 1.20211102.0)
708 | - abseil/base/core_headers (= 1.20211102.0)
709 | - abseil/container/flat_hash_map (= 1.20211102.0)
710 | - abseil/container/inlined_vector (= 1.20211102.0)
711 | - abseil/functional/bind_front (= 1.20211102.0)
712 | - abseil/hash/hash (= 1.20211102.0)
713 | - abseil/memory/memory (= 1.20211102.0)
714 | - abseil/random/random (= 1.20211102.0)
715 | - abseil/status/status (= 1.20211102.0)
716 | - abseil/status/statusor (= 1.20211102.0)
717 | - abseil/strings/cord (= 1.20211102.0)
718 | - abseil/strings/str_format (= 1.20211102.0)
719 | - abseil/strings/strings (= 1.20211102.0)
720 | - abseil/synchronization/synchronization (= 1.20211102.0)
721 | - abseil/time/time (= 1.20211102.0)
722 | - abseil/types/optional (= 1.20211102.0)
723 | - abseil/types/variant (= 1.20211102.0)
724 | - abseil/utility/utility (= 1.20211102.0)
725 | - BoringSSL-GRPC (= 0.0.24)
726 | - gRPC-Core/Interface (= 1.44.0)
727 | - Libuv-gRPC (= 0.0.10)
728 | - gRPC-Core/Interface (1.44.0)
729 | - GTMAppAuth (1.3.1):
730 | - AppAuth/Core (~> 1.6)
731 | - GTMSessionFetcher/Core (< 3.0, >= 1.5)
732 | - GTMSessionFetcher/Core (2.3.0)
733 | - leveldb-library (1.22.1)
734 | - Libuv-gRPC (0.0.10):
735 | - Libuv-gRPC/Implementation (= 0.0.10)
736 | - Libuv-gRPC/Interface (= 0.0.10)
737 | - Libuv-gRPC/Implementation (0.0.10):
738 | - Libuv-gRPC/Interface (= 0.0.10)
739 | - Libuv-gRPC/Interface (0.0.10)
740 | - nanopb (2.30909.0):
741 | - nanopb/decode (= 2.30909.0)
742 | - nanopb/encode (= 2.30909.0)
743 | - nanopb/decode (2.30909.0)
744 | - nanopb/encode (2.30909.0)
745 | - PromisesObjC (2.2.0)
746 |
747 | DEPENDENCIES:
748 | - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
749 | - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`)
750 | - firebase_core (from `.symlinks/plugins/firebase_core/ios`)
751 | - Flutter (from `Flutter`)
752 | - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/ios`)
753 |
754 | SPEC REPOS:
755 | trunk:
756 | - abseil
757 | - AppAuth
758 | - BoringSSL-GRPC
759 | - Firebase
760 | - FirebaseAuth
761 | - FirebaseCore
762 | - FirebaseCoreInternal
763 | - FirebaseFirestore
764 | - GoogleSignIn
765 | - GoogleUtilities
766 | - "gRPC-C++"
767 | - gRPC-Core
768 | - GTMAppAuth
769 | - GTMSessionFetcher
770 | - leveldb-library
771 | - Libuv-gRPC
772 | - nanopb
773 | - PromisesObjC
774 |
775 | EXTERNAL SOURCES:
776 | cloud_firestore:
777 | :path: ".symlinks/plugins/cloud_firestore/ios"
778 | firebase_auth:
779 | :path: ".symlinks/plugins/firebase_auth/ios"
780 | firebase_core:
781 | :path: ".symlinks/plugins/firebase_core/ios"
782 | Flutter:
783 | :path: Flutter
784 | google_sign_in_ios:
785 | :path: ".symlinks/plugins/google_sign_in_ios/ios"
786 |
787 | SPEC CHECKSUMS:
788 | abseil: ebe5b5529fb05d93a8bdb7951607be08b7fa71bc
789 | AppAuth: 8fca6b5563a5baef2c04bee27538025e4ceb2add
790 | BoringSSL-GRPC: 3175b25143e648463a56daeaaa499c6cb86dad33
791 | cloud_firestore: 94326bb743acbfe43c68f933dab8a094e84d5849
792 | Firebase: f92fc551ead69c94168d36c2b26188263860acd9
793 | firebase_auth: d1a0302ad8f1d642fc1cb53c43d25a951d70e190
794 | firebase_core: 128d8c43c3a453a4a67463314fc3761bedff860b
795 | FirebaseAuth: 0e415d29d846c1dce2fb641e46f35e9888d9bec6
796 | FirebaseCore: 988754646ab3bd4bdcb740f1bfe26b9f6c0d5f2a
797 | FirebaseCoreInternal: e463f41bb935cd049505bf7e9a5bdd7dcea90df6
798 | FirebaseFirestore: 244f71ff14ef44f39e00b44d356eac708ce03103
799 | Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
800 | google_sign_in_ios: 63e49658400eb806dd30054dc56f8baee3025508
801 | GoogleSignIn: 5651ce3a61e56ca864160e79b484cd9ed3f49b7a
802 | GoogleUtilities: c2bdc4cf2ce786c4d2e6b3bcfd599a25ca78f06f
803 | "gRPC-C++": 9675f953ace2b3de7c506039d77be1f2e77a8db2
804 | gRPC-Core: 943e491cb0d45598b0b0eb9e910c88080369290b
805 | GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd
806 | GTMSessionFetcher: 3a63d75eecd6aa32c2fc79f578064e1214dfdec2
807 | leveldb-library: 50c7b45cbd7bf543c81a468fe557a16ae3db8729
808 | Libuv-gRPC: 55e51798e14ef436ad9bc45d12d43b77b49df378
809 | nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431
810 | PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef
811 |
812 | PODFILE CHECKSUM: 7368163408c647b7eb699d0d788ba6718e18fb8d
813 |
814 | COCOAPODS: 1.11.3
815 |
--------------------------------------------------------------------------------
/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 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
12 | 57751ACFE8063AACFFA1C16C /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = FE56C885F6B595427D220874 /* GoogleService-Info.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 | BFD3022529A24EF4004F1F77 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = BFD3022429A24EF4004F1F77 /* GoogleService-Info.plist */; };
18 | F66BEA53107D231C57C4C09A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 01DBFEF519467E179B94467C /* Pods_Runner.framework */; };
19 | /* End PBXBuildFile section */
20 |
21 | /* Begin PBXCopyFilesBuildPhase section */
22 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
23 | isa = PBXCopyFilesBuildPhase;
24 | buildActionMask = 2147483647;
25 | dstPath = "";
26 | dstSubfolderSpec = 10;
27 | files = (
28 | );
29 | name = "Embed Frameworks";
30 | runOnlyForDeploymentPostprocessing = 0;
31 | };
32 | /* End PBXCopyFilesBuildPhase section */
33 |
34 | /* Begin PBXFileReference section */
35 | 01DBFEF519467E179B94467C /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
36 | 0AD9086B31B7F3139736B542 /* 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 = ""; };
37 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
38 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
39 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
40 | 473BCD61925883FE911E67C1 /* 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 = ""; };
41 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
42 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
43 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
44 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
45 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
46 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
47 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
48 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
49 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
50 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
51 | BFD3022429A24EF4004F1F77 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; };
52 | C5F19FB63EDB3CC460D82AFF /* 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 = ""; };
53 | FE56C885F6B595427D220874 /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; };
54 | /* End PBXFileReference section */
55 |
56 | /* Begin PBXFrameworksBuildPhase section */
57 | 97C146EB1CF9000F007C117D /* Frameworks */ = {
58 | isa = PBXFrameworksBuildPhase;
59 | buildActionMask = 2147483647;
60 | files = (
61 | F66BEA53107D231C57C4C09A /* Pods_Runner.framework in Frameworks */,
62 | );
63 | runOnlyForDeploymentPostprocessing = 0;
64 | };
65 | /* End PBXFrameworksBuildPhase section */
66 |
67 | /* Begin PBXGroup section */
68 | 4AD34C12D75DDF5B8E764311 /* Frameworks */ = {
69 | isa = PBXGroup;
70 | children = (
71 | 01DBFEF519467E179B94467C /* Pods_Runner.framework */,
72 | );
73 | name = Frameworks;
74 | sourceTree = "";
75 | };
76 | 9740EEB11CF90186004384FC /* Flutter */ = {
77 | isa = PBXGroup;
78 | children = (
79 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
80 | 9740EEB21CF90195004384FC /* Debug.xcconfig */,
81 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
82 | 9740EEB31CF90195004384FC /* Generated.xcconfig */,
83 | );
84 | name = Flutter;
85 | sourceTree = "";
86 | };
87 | 97C146E51CF9000F007C117D = {
88 | isa = PBXGroup;
89 | children = (
90 | 9740EEB11CF90186004384FC /* Flutter */,
91 | 97C146F01CF9000F007C117D /* Runner */,
92 | 97C146EF1CF9000F007C117D /* Products */,
93 | D95C075D4AD2FD1A8C7E41E3 /* Pods */,
94 | 4AD34C12D75DDF5B8E764311 /* Frameworks */,
95 | FE56C885F6B595427D220874 /* GoogleService-Info.plist */,
96 | );
97 | indentWidth = 5;
98 | sourceTree = "";
99 | };
100 | 97C146EF1CF9000F007C117D /* Products */ = {
101 | isa = PBXGroup;
102 | children = (
103 | 97C146EE1CF9000F007C117D /* Runner.app */,
104 | );
105 | name = Products;
106 | sourceTree = "";
107 | };
108 | 97C146F01CF9000F007C117D /* Runner */ = {
109 | isa = PBXGroup;
110 | children = (
111 | BFD3022429A24EF4004F1F77 /* GoogleService-Info.plist */,
112 | 97C146FA1CF9000F007C117D /* Main.storyboard */,
113 | 97C146FD1CF9000F007C117D /* Assets.xcassets */,
114 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
115 | 97C147021CF9000F007C117D /* Info.plist */,
116 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
117 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
118 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
119 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
120 | );
121 | path = Runner;
122 | sourceTree = "";
123 | };
124 | D95C075D4AD2FD1A8C7E41E3 /* Pods */ = {
125 | isa = PBXGroup;
126 | children = (
127 | 0AD9086B31B7F3139736B542 /* Pods-Runner.debug.xcconfig */,
128 | 473BCD61925883FE911E67C1 /* Pods-Runner.release.xcconfig */,
129 | C5F19FB63EDB3CC460D82AFF /* Pods-Runner.profile.xcconfig */,
130 | );
131 | path = Pods;
132 | sourceTree = "";
133 | };
134 | /* End PBXGroup section */
135 |
136 | /* Begin PBXNativeTarget section */
137 | 97C146ED1CF9000F007C117D /* Runner */ = {
138 | isa = PBXNativeTarget;
139 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
140 | buildPhases = (
141 | 13273A23A31E2C6DE590587E /* [CP] Check Pods Manifest.lock */,
142 | 9740EEB61CF901F6004384FC /* Run Script */,
143 | 97C146EA1CF9000F007C117D /* Sources */,
144 | 97C146EB1CF9000F007C117D /* Frameworks */,
145 | 97C146EC1CF9000F007C117D /* Resources */,
146 | 9705A1C41CF9048500538489 /* Embed Frameworks */,
147 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
148 | 6602626A5CFADD92C9EA3FC6 /* [CP] Embed Pods Frameworks */,
149 | );
150 | buildRules = (
151 | );
152 | dependencies = (
153 | );
154 | name = Runner;
155 | productName = Runner;
156 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
157 | productType = "com.apple.product-type.application";
158 | };
159 | /* End PBXNativeTarget section */
160 |
161 | /* Begin PBXProject section */
162 | 97C146E61CF9000F007C117D /* Project object */ = {
163 | isa = PBXProject;
164 | attributes = {
165 | LastUpgradeCheck = 1300;
166 | ORGANIZATIONNAME = "";
167 | TargetAttributes = {
168 | 97C146ED1CF9000F007C117D = {
169 | CreatedOnToolsVersion = 7.3.1;
170 | LastSwiftMigration = 1100;
171 | };
172 | };
173 | };
174 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
175 | compatibilityVersion = "Xcode 9.3";
176 | developmentRegion = en;
177 | hasScannedForEncodings = 0;
178 | knownRegions = (
179 | en,
180 | Base,
181 | );
182 | mainGroup = 97C146E51CF9000F007C117D;
183 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
184 | projectDirPath = "";
185 | projectRoot = "";
186 | targets = (
187 | 97C146ED1CF9000F007C117D /* Runner */,
188 | );
189 | };
190 | /* End PBXProject section */
191 |
192 | /* Begin PBXResourcesBuildPhase section */
193 | 97C146EC1CF9000F007C117D /* Resources */ = {
194 | isa = PBXResourcesBuildPhase;
195 | buildActionMask = 2147483647;
196 | files = (
197 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
198 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
199 | BFD3022529A24EF4004F1F77 /* GoogleService-Info.plist in Resources */,
200 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
201 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
202 | 57751ACFE8063AACFFA1C16C /* GoogleService-Info.plist in Resources */,
203 | );
204 | runOnlyForDeploymentPostprocessing = 0;
205 | };
206 | /* End PBXResourcesBuildPhase section */
207 |
208 | /* Begin PBXShellScriptBuildPhase section */
209 | 13273A23A31E2C6DE590587E /* [CP] Check Pods Manifest.lock */ = {
210 | isa = PBXShellScriptBuildPhase;
211 | buildActionMask = 2147483647;
212 | files = (
213 | );
214 | inputFileListPaths = (
215 | );
216 | inputPaths = (
217 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
218 | "${PODS_ROOT}/Manifest.lock",
219 | );
220 | name = "[CP] Check Pods Manifest.lock";
221 | outputFileListPaths = (
222 | );
223 | outputPaths = (
224 | "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
225 | );
226 | runOnlyForDeploymentPostprocessing = 0;
227 | shellPath = /bin/sh;
228 | 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";
229 | showEnvVarsInLog = 0;
230 | };
231 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
232 | isa = PBXShellScriptBuildPhase;
233 | alwaysOutOfDate = 1;
234 | buildActionMask = 2147483647;
235 | files = (
236 | );
237 | inputPaths = (
238 | );
239 | name = "Thin Binary";
240 | outputPaths = (
241 | );
242 | runOnlyForDeploymentPostprocessing = 0;
243 | shellPath = /bin/sh;
244 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
245 | };
246 | 6602626A5CFADD92C9EA3FC6 /* [CP] Embed Pods Frameworks */ = {
247 | isa = PBXShellScriptBuildPhase;
248 | buildActionMask = 2147483647;
249 | files = (
250 | );
251 | inputFileListPaths = (
252 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
253 | );
254 | name = "[CP] Embed Pods Frameworks";
255 | outputFileListPaths = (
256 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
257 | );
258 | runOnlyForDeploymentPostprocessing = 0;
259 | shellPath = /bin/sh;
260 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
261 | showEnvVarsInLog = 0;
262 | };
263 | 9740EEB61CF901F6004384FC /* Run Script */ = {
264 | isa = PBXShellScriptBuildPhase;
265 | alwaysOutOfDate = 1;
266 | buildActionMask = 2147483647;
267 | files = (
268 | );
269 | inputPaths = (
270 | );
271 | name = "Run Script";
272 | outputPaths = (
273 | );
274 | runOnlyForDeploymentPostprocessing = 0;
275 | shellPath = /bin/sh;
276 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
277 | };
278 | /* End PBXShellScriptBuildPhase section */
279 |
280 | /* Begin PBXSourcesBuildPhase section */
281 | 97C146EA1CF9000F007C117D /* Sources */ = {
282 | isa = PBXSourcesBuildPhase;
283 | buildActionMask = 2147483647;
284 | files = (
285 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
286 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
287 | );
288 | runOnlyForDeploymentPostprocessing = 0;
289 | };
290 | /* End PBXSourcesBuildPhase section */
291 |
292 | /* Begin PBXVariantGroup section */
293 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
294 | isa = PBXVariantGroup;
295 | children = (
296 | 97C146FB1CF9000F007C117D /* Base */,
297 | );
298 | name = Main.storyboard;
299 | sourceTree = "";
300 | };
301 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
302 | isa = PBXVariantGroup;
303 | children = (
304 | 97C147001CF9000F007C117D /* Base */,
305 | );
306 | name = LaunchScreen.storyboard;
307 | sourceTree = "";
308 | };
309 | /* End PBXVariantGroup section */
310 |
311 | /* Begin XCBuildConfiguration section */
312 | 249021D3217E4FDB00AE95B9 /* Profile */ = {
313 | isa = XCBuildConfiguration;
314 | buildSettings = {
315 | ALWAYS_SEARCH_USER_PATHS = NO;
316 | CLANG_ANALYZER_NONNULL = YES;
317 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
318 | CLANG_CXX_LIBRARY = "libc++";
319 | CLANG_ENABLE_MODULES = YES;
320 | CLANG_ENABLE_OBJC_ARC = YES;
321 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
322 | CLANG_WARN_BOOL_CONVERSION = YES;
323 | CLANG_WARN_COMMA = YES;
324 | CLANG_WARN_CONSTANT_CONVERSION = YES;
325 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
326 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
327 | CLANG_WARN_EMPTY_BODY = YES;
328 | CLANG_WARN_ENUM_CONVERSION = YES;
329 | CLANG_WARN_INFINITE_RECURSION = YES;
330 | CLANG_WARN_INT_CONVERSION = YES;
331 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
332 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
333 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
334 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
335 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
336 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
337 | CLANG_WARN_STRICT_PROTOTYPES = YES;
338 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
339 | CLANG_WARN_UNREACHABLE_CODE = YES;
340 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
341 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
342 | COPY_PHASE_STRIP = NO;
343 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
344 | ENABLE_NS_ASSERTIONS = NO;
345 | ENABLE_STRICT_OBJC_MSGSEND = YES;
346 | GCC_C_LANGUAGE_STANDARD = gnu99;
347 | GCC_NO_COMMON_BLOCKS = YES;
348 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
349 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
350 | GCC_WARN_UNDECLARED_SELECTOR = YES;
351 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
352 | GCC_WARN_UNUSED_FUNCTION = YES;
353 | GCC_WARN_UNUSED_VARIABLE = YES;
354 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
355 | MTL_ENABLE_DEBUG_INFO = NO;
356 | SDKROOT = iphoneos;
357 | SUPPORTED_PLATFORMS = iphoneos;
358 | TARGETED_DEVICE_FAMILY = "1,2";
359 | VALIDATE_PRODUCT = YES;
360 | };
361 | name = Profile;
362 | };
363 | 249021D4217E4FDB00AE95B9 /* Profile */ = {
364 | isa = XCBuildConfiguration;
365 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
366 | buildSettings = {
367 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
368 | CLANG_ENABLE_MODULES = YES;
369 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
370 | DEVELOPMENT_TEAM = R523566J54;
371 | ENABLE_BITCODE = NO;
372 | INFOPLIST_FILE = Runner/Info.plist;
373 | LD_RUNPATH_SEARCH_PATHS = (
374 | "$(inherited)",
375 | "@executable_path/Frameworks",
376 | );
377 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterNote;
378 | PRODUCT_NAME = "$(TARGET_NAME)";
379 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
380 | SWIFT_VERSION = 5.0;
381 | VERSIONING_SYSTEM = "apple-generic";
382 | };
383 | name = Profile;
384 | };
385 | 97C147031CF9000F007C117D /* Debug */ = {
386 | isa = XCBuildConfiguration;
387 | buildSettings = {
388 | ALWAYS_SEARCH_USER_PATHS = NO;
389 | CLANG_ANALYZER_NONNULL = YES;
390 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
391 | CLANG_CXX_LIBRARY = "libc++";
392 | CLANG_ENABLE_MODULES = YES;
393 | CLANG_ENABLE_OBJC_ARC = YES;
394 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
395 | CLANG_WARN_BOOL_CONVERSION = YES;
396 | CLANG_WARN_COMMA = YES;
397 | CLANG_WARN_CONSTANT_CONVERSION = YES;
398 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
399 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
400 | CLANG_WARN_EMPTY_BODY = YES;
401 | CLANG_WARN_ENUM_CONVERSION = YES;
402 | CLANG_WARN_INFINITE_RECURSION = YES;
403 | CLANG_WARN_INT_CONVERSION = YES;
404 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
405 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
406 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
407 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
408 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
409 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
410 | CLANG_WARN_STRICT_PROTOTYPES = YES;
411 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
412 | CLANG_WARN_UNREACHABLE_CODE = YES;
413 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
414 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
415 | COPY_PHASE_STRIP = NO;
416 | DEBUG_INFORMATION_FORMAT = dwarf;
417 | ENABLE_STRICT_OBJC_MSGSEND = YES;
418 | ENABLE_TESTABILITY = YES;
419 | GCC_C_LANGUAGE_STANDARD = gnu99;
420 | GCC_DYNAMIC_NO_PIC = NO;
421 | GCC_NO_COMMON_BLOCKS = YES;
422 | GCC_OPTIMIZATION_LEVEL = 0;
423 | GCC_PREPROCESSOR_DEFINITIONS = (
424 | "DEBUG=1",
425 | "$(inherited)",
426 | );
427 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
428 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
429 | GCC_WARN_UNDECLARED_SELECTOR = YES;
430 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
431 | GCC_WARN_UNUSED_FUNCTION = YES;
432 | GCC_WARN_UNUSED_VARIABLE = YES;
433 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
434 | MTL_ENABLE_DEBUG_INFO = YES;
435 | ONLY_ACTIVE_ARCH = YES;
436 | SDKROOT = iphoneos;
437 | TARGETED_DEVICE_FAMILY = "1,2";
438 | };
439 | name = Debug;
440 | };
441 | 97C147041CF9000F007C117D /* Release */ = {
442 | isa = XCBuildConfiguration;
443 | buildSettings = {
444 | ALWAYS_SEARCH_USER_PATHS = NO;
445 | CLANG_ANALYZER_NONNULL = YES;
446 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
447 | CLANG_CXX_LIBRARY = "libc++";
448 | CLANG_ENABLE_MODULES = YES;
449 | CLANG_ENABLE_OBJC_ARC = YES;
450 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
451 | CLANG_WARN_BOOL_CONVERSION = YES;
452 | CLANG_WARN_COMMA = YES;
453 | CLANG_WARN_CONSTANT_CONVERSION = YES;
454 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
455 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
456 | CLANG_WARN_EMPTY_BODY = YES;
457 | CLANG_WARN_ENUM_CONVERSION = YES;
458 | CLANG_WARN_INFINITE_RECURSION = YES;
459 | CLANG_WARN_INT_CONVERSION = YES;
460 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
461 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
462 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
463 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
464 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
465 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
466 | CLANG_WARN_STRICT_PROTOTYPES = YES;
467 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
468 | CLANG_WARN_UNREACHABLE_CODE = YES;
469 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
470 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
471 | COPY_PHASE_STRIP = NO;
472 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
473 | ENABLE_NS_ASSERTIONS = NO;
474 | ENABLE_STRICT_OBJC_MSGSEND = YES;
475 | GCC_C_LANGUAGE_STANDARD = gnu99;
476 | GCC_NO_COMMON_BLOCKS = YES;
477 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
478 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
479 | GCC_WARN_UNDECLARED_SELECTOR = YES;
480 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
481 | GCC_WARN_UNUSED_FUNCTION = YES;
482 | GCC_WARN_UNUSED_VARIABLE = YES;
483 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
484 | MTL_ENABLE_DEBUG_INFO = NO;
485 | SDKROOT = iphoneos;
486 | SUPPORTED_PLATFORMS = iphoneos;
487 | SWIFT_COMPILATION_MODE = wholemodule;
488 | SWIFT_OPTIMIZATION_LEVEL = "-O";
489 | TARGETED_DEVICE_FAMILY = "1,2";
490 | VALIDATE_PRODUCT = YES;
491 | };
492 | name = Release;
493 | };
494 | 97C147061CF9000F007C117D /* Debug */ = {
495 | isa = XCBuildConfiguration;
496 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
497 | buildSettings = {
498 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
499 | CLANG_ENABLE_MODULES = YES;
500 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
501 | DEVELOPMENT_TEAM = R523566J54;
502 | ENABLE_BITCODE = NO;
503 | INFOPLIST_FILE = Runner/Info.plist;
504 | LD_RUNPATH_SEARCH_PATHS = (
505 | "$(inherited)",
506 | "@executable_path/Frameworks",
507 | );
508 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterNote;
509 | PRODUCT_NAME = "$(TARGET_NAME)";
510 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
511 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
512 | SWIFT_VERSION = 5.0;
513 | VERSIONING_SYSTEM = "apple-generic";
514 | };
515 | name = Debug;
516 | };
517 | 97C147071CF9000F007C117D /* Release */ = {
518 | isa = XCBuildConfiguration;
519 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
520 | buildSettings = {
521 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
522 | CLANG_ENABLE_MODULES = YES;
523 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
524 | DEVELOPMENT_TEAM = R523566J54;
525 | ENABLE_BITCODE = NO;
526 | INFOPLIST_FILE = Runner/Info.plist;
527 | LD_RUNPATH_SEARCH_PATHS = (
528 | "$(inherited)",
529 | "@executable_path/Frameworks",
530 | );
531 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterNote;
532 | PRODUCT_NAME = "$(TARGET_NAME)";
533 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
534 | SWIFT_VERSION = 5.0;
535 | VERSIONING_SYSTEM = "apple-generic";
536 | };
537 | name = Release;
538 | };
539 | /* End XCBuildConfiguration section */
540 |
541 | /* Begin XCConfigurationList section */
542 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
543 | isa = XCConfigurationList;
544 | buildConfigurations = (
545 | 97C147031CF9000F007C117D /* Debug */,
546 | 97C147041CF9000F007C117D /* Release */,
547 | 249021D3217E4FDB00AE95B9 /* Profile */,
548 | );
549 | defaultConfigurationIsVisible = 0;
550 | defaultConfigurationName = Release;
551 | };
552 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
553 | isa = XCConfigurationList;
554 | buildConfigurations = (
555 | 97C147061CF9000F007C117D /* Debug */,
556 | 97C147071CF9000F007C117D /* Release */,
557 | 249021D4217E4FDB00AE95B9 /* Profile */,
558 | );
559 | defaultConfigurationIsVisible = 0;
560 | defaultConfigurationName = Release;
561 | };
562 | /* End XCConfigurationList section */
563 | };
564 | rootObject = 97C146E61CF9000F007C117D /* Project object */;
565 | }
566 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.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/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
37 |
38 |
39 |
40 |
41 |
42 |
52 |
54 |
60 |
61 |
62 |
63 |
69 |
71 |
77 |
78 |
79 |
80 |
82 |
83 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
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 |
--------------------------------------------------------------------------------
/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/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/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/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/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/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/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/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/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/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/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/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/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/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/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/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/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/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/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/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/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/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/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/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/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/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/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.
--------------------------------------------------------------------------------
/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/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/GoogleService-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CLIENT_ID
6 | 868884109886-badajmdp75k6f6tj73038e0qai436b5k.apps.googleusercontent.com
7 | REVERSED_CLIENT_ID
8 | com.googleusercontent.apps.868884109886-badajmdp75k6f6tj73038e0qai436b5k
9 | API_KEY
10 | AIzaSyDlzdkYosy6sf7uqOt1IxCbcXlwIoBeCOA
11 | GCM_SENDER_ID
12 | 868884109886
13 | PLIST_VERSION
14 | 1
15 | BUNDLE_ID
16 | com.example.flutterNote
17 | PROJECT_ID
18 | flutter-note-dbb3a
19 | STORAGE_BUCKET
20 | flutter-note-dbb3a.appspot.com
21 | IS_ADS_ENABLED
22 |
23 | IS_ANALYTICS_ENABLED
24 |
25 | IS_APPINVITE_ENABLED
26 |
27 | IS_GCM_ENABLED
28 |
29 | IS_SIGNIN_ENABLED
30 |
31 | GOOGLE_APP_ID
32 | 1:868884109886:ios:d1b9615093d9b95e904f6f
33 |
34 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | flutter_note
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | $(FLUTTER_BUILD_NAME)
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(FLUTTER_BUILD_NUMBER)
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UISupportedInterfaceOrientations
30 |
31 | UIInterfaceOrientationPortrait
32 | UIInterfaceOrientationLandscapeLeft
33 | UIInterfaceOrientationLandscapeRight
34 |
35 | UISupportedInterfaceOrientations~ipad
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationPortraitUpsideDown
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 | UIViewControllerBasedStatusBarAppearance
43 |
44 | CADisableMinimumFrameDurationOnPhone
45 |
46 | UIApplicationSupportsIndirectInputEvents
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/ios/firebase_app_id_file.json:
--------------------------------------------------------------------------------
1 | {
2 | "file_generated_by": "FlutterFire CLI",
3 | "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
4 | "GOOGLE_APP_ID": "1:868884109886:ios:d1b9615093d9b95e904f6f",
5 | "FIREBASE_PROJECT_ID": "flutter-note-dbb3a",
6 | "GCM_SENDER_ID": "868884109886"
7 | }
--------------------------------------------------------------------------------
/lib/controllers/authController.dart:
--------------------------------------------------------------------------------
1 | import 'package:firebase_auth/firebase_auth.dart';
2 | import 'package:flutter/material.dart';
3 | import 'package:flutter_note/controllers/userController.dart';
4 | import 'package:flutter_note/models/user.dart';
5 | import 'package:flutter_note/services/database.dart';
6 | import 'package:get/get.dart';
7 |
8 | class AuthController extends GetxController {
9 | FirebaseAuth _auth = FirebaseAuth.instance;
10 | Rx _firebaseUser;
11 | TextEditingController name = TextEditingController();
12 | TextEditingController email = TextEditingController();
13 | TextEditingController password = TextEditingController();
14 | String usersCollection = "users";
15 | Rx userModel = UserModel().obs;
16 | Rx axisCount = 2.obs;
17 |
18 | User get user => _firebaseUser.value;
19 |
20 | @override
21 | void onInit() {
22 | _firebaseUser = Rx(_auth.currentUser);
23 | _firebaseUser.bindStream(_auth.userChanges());
24 | super.onInit();
25 | }
26 |
27 | void createUser() async {
28 | try {
29 | await _auth
30 | .createUserWithEmailAndPassword(
31 | email: email.text.trim(), password: password.text.trim())
32 | .then((value) {
33 | UserModel _user = UserModel(
34 | id: value.user.uid,
35 | name: name.text,
36 | email: email.text,
37 | );
38 | Database().createNewUser(_user).then((value) {
39 | if (value) {
40 | Get.find().user = _user;
41 | Get.back();
42 | _clearControllers();
43 | }
44 | });
45 | });
46 | } catch (e) {
47 | Get.snackbar(
48 | 'Error creating account',
49 | e.message,
50 | snackPosition: SnackPosition.BOTTOM,
51 | );
52 | }
53 | }
54 |
55 | void login() async {
56 | try {
57 | print("IN logging in email ${email.text} password ${password.text}");
58 | UserCredential userCredential = await _auth.signInWithEmailAndPassword(
59 | email: email.text, password: password.text);
60 | // .then((value) async {
61 | Get.find().user =
62 | await Database().getUser(userCredential.user.uid);
63 | _clearControllers();
64 | } catch (e) {
65 | Get.snackbar(
66 | 'Error logging in',
67 | e.message,
68 | snackPosition: SnackPosition.BOTTOM,
69 | );
70 | }
71 | }
72 |
73 | void signout() async {
74 | try {
75 | await _auth.signOut();
76 | Get.find().user = UserModel();
77 | } catch (e) {
78 | Get.snackbar(
79 | 'Error signing out',
80 | e.message,
81 | snackPosition: SnackPosition.BOTTOM,
82 | );
83 | }
84 | }
85 |
86 | _clearControllers() {
87 | name.clear();
88 | email.clear();
89 | password.clear();
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/lib/controllers/noteController.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_note/controllers/authController.dart';
3 | import 'package:flutter_note/models/noteModel.dart';
4 | import 'package:flutter_note/services/database.dart';
5 | import 'package:get/get.dart';
6 |
7 | class NoteController extends GetxController {
8 | RxList noteList = RxList();
9 | Rx titleController = TextEditingController().obs;
10 | Rx bodyController = TextEditingController().obs;
11 |
12 | // ignore: invalid_use_of_protected_member
13 | List get notes => noteList.value;
14 |
15 | @override
16 | void onInit() {
17 | String uid = Get.find().user?.uid;
18 | print("NoteController onit :: $uid");
19 | noteList
20 | .bindStream(Database().noteStream(uid)); //stream coming from firebase
21 | super.onInit();
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/controllers/userController.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_note/models/user.dart';
2 | import 'package:get/get.dart';
3 |
4 | class UserController extends GetxController {
5 | Rx _userModel = UserModel().obs;
6 |
7 | UserModel get user => _userModel.value;
8 |
9 | set user(UserModel value) => this._userModel.value = value;
10 |
11 | void clear() {
12 | _userModel.value = UserModel();
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:firebase_core/firebase_core.dart';
2 | import 'package:flutter/material.dart';
3 | import 'package:flutter_note/controllers/authController.dart';
4 | import 'package:flutter_note/controllers/userController.dart';
5 | import 'package:flutter_note/utils/root.dart';
6 | import 'package:flutter_note/utils/theme.dart';
7 | import 'package:get/get.dart';
8 | import 'firebase_options.dart';
9 |
10 | void main() async {
11 | WidgetsFlutterBinding.ensureInitialized();
12 | await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform)
13 | .then((value) {
14 | Get.put(AuthController());
15 | Get.put(UserController());
16 | });
17 | runApp(MyApp());
18 | }
19 |
20 | class MyApp extends StatelessWidget {
21 | @override
22 | Widget build(BuildContext context) {
23 | return GetMaterialApp(
24 | debugShowCheckedModeBanner: false,
25 | title: 'Flutter Note',
26 | theme: Themes().lightTheme,
27 | darkTheme: Themes().dartTheme,
28 | themeMode: ThemeMode.system,
29 | home: Root(),
30 | );
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/lib/models/noteModel.dart:
--------------------------------------------------------------------------------
1 | import 'package:cloud_firestore/cloud_firestore.dart';
2 |
3 | class NoteModel {
4 | String id;
5 | String title;
6 | String body;
7 | Timestamp creationDate;
8 |
9 | NoteModel({this.id, this.title, this.body, this.creationDate});
10 |
11 | NoteModel.fromDocumentSnapshot(DocumentSnapshot documentSnapshot) {
12 | id = documentSnapshot["id"];
13 | title = documentSnapshot['title'];
14 | body = documentSnapshot["body"];
15 | creationDate = documentSnapshot["creationDate"];
16 | }
17 |
18 | NoteModel.fromJson(Map json) {
19 | id = json['id'];
20 | title = json['title'];
21 | body = json["body"];
22 | creationDate = json["creationDate"];
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/models/user.dart:
--------------------------------------------------------------------------------
1 | import 'package:cloud_firestore/cloud_firestore.dart';
2 |
3 | class UserModel {
4 | String id;
5 | String name;
6 | String email;
7 |
8 | UserModel({this.id, this.name, this.email});
9 |
10 | UserModel.fromDocumentSnapshot(DocumentSnapshot doc) {
11 | id = doc["id"];
12 | name = doc["name"];
13 | email = doc["email"];
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lib/screens/auth/login.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_note/controllers/authController.dart';
3 | import 'package:flutter_note/controllers/userController.dart';
4 | import 'package:flutter_note/screens/auth/signup.dart';
5 | import 'package:get/get.dart';
6 |
7 | class Login extends StatelessWidget {
8 | final _formKey = GlobalKey();
9 | final AuthController authController = Get.find();
10 | final UserController userController = Get.find();
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | return Scaffold(
15 | body: SafeArea(
16 | child: SingleChildScrollView(
17 | child: Container(
18 | child: Padding(
19 | padding: const EdgeInsets.symmetric(
20 | vertical: 100,
21 | horizontal: 40,
22 | ),
23 | child: Column(
24 | mainAxisAlignment: MainAxisAlignment.start,
25 | crossAxisAlignment: CrossAxisAlignment.stretch,
26 | children: [
27 | Text(
28 | 'Hello there,\nWelocome back',
29 | style: TextStyle(
30 | fontSize: 35,
31 | fontWeight: FontWeight.bold,
32 | ),
33 | ),
34 | SizedBox(height: 20),
35 | Padding(
36 | padding: const EdgeInsets.all(20.0),
37 | child: Form(
38 | key: _formKey,
39 | autovalidateMode: AutovalidateMode.onUserInteraction,
40 | child: Column(
41 | mainAxisAlignment: MainAxisAlignment.center,
42 | children: [
43 | TextFormField(
44 | controller: authController.email,
45 | validator: (value) {
46 | return RegExp(
47 | r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+")
48 | .hasMatch(value)
49 | ? null
50 | : "Please Enter Correct Email";
51 | },
52 | decoration: InputDecoration(
53 | enabledBorder: UnderlineInputBorder(
54 | borderSide: BorderSide(
55 | color: Theme.of(context).colorScheme.background,
56 | ),
57 | ),
58 | focusedBorder: UnderlineInputBorder(
59 | borderSide: BorderSide(
60 | color: Theme.of(context).colorScheme.secondary,
61 | ),
62 | ),
63 | prefixIcon: Icon(
64 | Icons.email,
65 | color: Colors.grey,
66 | ),
67 | hintText: "EMAIL"),
68 | ),
69 | SizedBox(
70 | height: 30,
71 | ),
72 | TextFormField(
73 | controller: authController.password,
74 | validator: (value) {
75 | if (value == null || value.isEmpty) {
76 | return 'Enter a password!';
77 | } else if (value.length < 6) {
78 | return "Please provide password of 5+ character ";
79 | }
80 | return null;
81 | },
82 | decoration: InputDecoration(
83 | prefixIcon: Icon(
84 | Icons.security,
85 | color: Colors.grey,
86 | ),
87 | enabledBorder: UnderlineInputBorder(
88 | borderSide: BorderSide(
89 | color: Theme.of(context).colorScheme.background,
90 | ),
91 | ),
92 | focusedBorder: UnderlineInputBorder(
93 | borderSide: BorderSide(
94 | color: Theme.of(context).colorScheme.secondary,
95 | ),
96 | ),
97 | hintText: "PASSWORD"),
98 | obscureText: true,
99 | ),
100 | ],
101 | ),
102 | ),
103 | ),
104 | SizedBox(
105 | height: 40,
106 | ),
107 | ElevatedButton(
108 | style: ButtonStyle(
109 | backgroundColor: MaterialStateProperty.all(
110 | Colors.tealAccent.shade700,
111 | ),
112 | padding: MaterialStateProperty.all(
113 | EdgeInsets.symmetric(horizontal: 30, vertical: 10),
114 | ),
115 | shape: MaterialStateProperty.all(
116 | RoundedRectangleBorder(
117 | borderRadius: BorderRadius.circular(20)),
118 | ),
119 | minimumSize: MaterialStateProperty.all(
120 | Size(
121 | 250,
122 | 50,
123 | ),
124 | ),
125 | ),
126 | child: Text(
127 | "SIGN IN",
128 | style: TextStyle(
129 | fontSize: 18,
130 | fontWeight: FontWeight.bold,
131 | color: Colors.white,
132 | ),
133 | ),
134 | onPressed: () {
135 | if (_formKey.currentState.validate()) {
136 | authController.login();
137 | }
138 | },
139 | ),
140 | SizedBox(
141 | height: 30,
142 | ),
143 | Row(
144 | mainAxisAlignment: MainAxisAlignment.center,
145 | children: [
146 | Text(
147 | "New here? ",
148 | style: TextStyle(
149 | // color: Colors.grey.shade900,
150 | fontSize: 16,
151 | ),
152 | ),
153 | GestureDetector(
154 | onTap: () {
155 | Get.to(() => SignUp());
156 | },
157 | child: Text(
158 | "Sign up instead",
159 | style: TextStyle(
160 | fontSize: 16,
161 | fontWeight: FontWeight.bold,
162 | ),
163 | ),
164 | ),
165 | ],
166 | ),
167 | ],
168 | ),
169 | ),
170 | ),
171 | ),
172 | ),
173 | );
174 | }
175 | }
176 |
--------------------------------------------------------------------------------
/lib/screens/auth/signup.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_note/controllers/authController.dart';
3 | import 'package:flutter_note/controllers/userController.dart';
4 | import 'package:get/get.dart';
5 |
6 | class SignUp extends StatelessWidget {
7 | final _formKey = GlobalKey();
8 | final AuthController authController = Get.find();
9 | final UserController userController = Get.find();
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return Scaffold(
14 | body: SafeArea(
15 | child: SingleChildScrollView(
16 | child: Container(
17 | child: Padding(
18 | padding: const EdgeInsets.symmetric(
19 | vertical: 100,
20 | horizontal: 40,
21 | ),
22 | child: Column(
23 | mainAxisAlignment: MainAxisAlignment.start,
24 | crossAxisAlignment: CrossAxisAlignment.stretch,
25 | children: [
26 | Text(
27 | 'Get Started!',
28 | style: TextStyle(
29 | fontSize: 35,
30 | fontWeight: FontWeight.bold,
31 | ),
32 | ),
33 | SizedBox(
34 | height: 20,
35 | ),
36 | Padding(
37 | padding: const EdgeInsets.all(20.0),
38 | child: Form(
39 | key: _formKey,
40 | autovalidateMode: AutovalidateMode.onUserInteraction,
41 | child: Column(
42 | children: [
43 | TextFormField(
44 | decoration: InputDecoration(
45 | hintText: "NAME",
46 | enabledBorder: UnderlineInputBorder(
47 | borderSide: BorderSide(
48 | color: Theme.of(context).colorScheme.background,
49 | ),
50 | ),
51 | focusedBorder: UnderlineInputBorder(
52 | borderSide: BorderSide(
53 | color:
54 | Theme.of(context).colorScheme.secondary,
55 | ),
56 | ),
57 | ),
58 | controller: authController.name,
59 | validator: (value) {
60 | if (value == null || value.isEmpty) {
61 | return 'Enter a username!';
62 | } else if (value.length < 6) {
63 | return "Please provide a username of 5+ character";
64 | }
65 | return null;
66 | },
67 | ),
68 | SizedBox(
69 | height: 30,
70 | ),
71 | TextFormField(
72 | validator: (value) {
73 | return RegExp(
74 | r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+")
75 | .hasMatch(value)
76 | ? null
77 | : "Please Enter Correct Email";
78 | },
79 | decoration: InputDecoration(
80 | hintText: "EMAIL",
81 | enabledBorder: UnderlineInputBorder(
82 | borderSide: BorderSide(
83 | color: Theme.of(context).colorScheme.background,
84 | ),
85 | ),
86 | focusedBorder: UnderlineInputBorder(
87 | borderSide: BorderSide(
88 | color:
89 | Theme.of(context).colorScheme.secondary,
90 | ),
91 | ),
92 | ),
93 | controller: authController.email,
94 | ),
95 | SizedBox(
96 | height: 30,
97 | ),
98 | TextFormField(
99 | validator: (value) {
100 | if (value == null || value.isEmpty) {
101 | return 'Enter a password!';
102 | } else if (value.length < 6) {
103 | return "Please provide password of 5+ character ";
104 | }
105 | return null;
106 | },
107 | decoration: InputDecoration(
108 | hintText: "PASSWORD",
109 | enabledBorder: UnderlineInputBorder(
110 | borderSide: BorderSide(
111 | color: Theme.of(context).colorScheme.background,
112 | ),
113 | ),
114 | focusedBorder: UnderlineInputBorder(
115 | borderSide: BorderSide(
116 | color:
117 | Theme.of(context).colorScheme.secondary,
118 | ),
119 | ),
120 | ),
121 | obscureText: true,
122 | controller: authController.password,
123 | ),
124 | ],
125 | ),
126 | ),
127 | ),
128 | SizedBox(
129 | height: 40,
130 | ),
131 | ElevatedButton(
132 | style: ButtonStyle(
133 | backgroundColor: MaterialStateProperty.all(
134 | Colors.tealAccent.shade700,
135 | ),
136 | padding: MaterialStateProperty.all(
137 | EdgeInsets.symmetric(horizontal: 30, vertical: 10),
138 | ),
139 | shape: MaterialStateProperty.all(
140 | RoundedRectangleBorder(
141 | borderRadius: BorderRadius.circular(20)),
142 | ),
143 | minimumSize: MaterialStateProperty.all(
144 | Size(
145 | 250,
146 | 50,
147 | ),
148 | ),
149 | ),
150 | child: Text(
151 | "SIGN UP",
152 | style: TextStyle(
153 | fontSize: 18,
154 | fontWeight: FontWeight.bold,
155 | color: Colors.white,
156 | ),
157 | ),
158 | onPressed: () {
159 | if (_formKey.currentState.validate()) {
160 | authController.createUser();
161 | }
162 | },
163 | ),
164 | SizedBox(
165 | height: 30,
166 | ),
167 | Row(
168 | mainAxisAlignment: MainAxisAlignment.center,
169 | children: [
170 | Text(
171 | "Already a member? ",
172 | style: TextStyle(
173 | // color: Colors.grey.shade900,
174 | fontSize: 16,
175 | ),
176 | ),
177 | GestureDetector(
178 | onTap: () {
179 | Get.back();
180 | },
181 | child: Text(
182 | "Sign in",
183 | style: TextStyle(
184 | fontSize: 16,
185 | fontWeight: FontWeight.bold,
186 | ),
187 | ),
188 | ),
189 | ],
190 | ),
191 | ],
192 | ),
193 | ),
194 | ),
195 | ),
196 | ),
197 | );
198 | }
199 | }
200 |
--------------------------------------------------------------------------------
/lib/screens/auth/widgets/CustomTextField.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class CustomTextField extends StatelessWidget {
4 | CustomTextField({
5 | this.hintText,
6 | this.iconData,
7 | this.textEditingController,
8 | this.validator,
9 | this.obscureText,
10 | });
11 |
12 | final String hintText;
13 | final IconData iconData;
14 | final TextEditingController textEditingController;
15 | final Function validator;
16 | final bool obscureText;
17 |
18 | @override
19 | Widget build(BuildContext context) {
20 | return Container(
21 | padding: EdgeInsets.only(
22 | top: 10,
23 | bottom: 20,
24 | ),
25 | child: TextFormField(
26 | obscureText: obscureText,
27 | controller: textEditingController,
28 | validator: validator,
29 | style: TextStyle(color: Colors.white),
30 | decoration: InputDecoration(
31 | prefixIcon: Icon(
32 | iconData,
33 | color: Colors.grey,
34 | ),
35 | filled: true,
36 | hintText: hintText,
37 | hintStyle: TextStyle(
38 | color: Colors.grey,
39 | ),
40 | errorBorder: OutlineInputBorder(
41 | borderRadius: BorderRadius.all(Radius.circular(20)),
42 | borderSide: BorderSide(
43 | color: Colors.red,
44 | width: 2,
45 | ),
46 | ),
47 | focusedErrorBorder: OutlineInputBorder(
48 | borderRadius: BorderRadius.all(Radius.circular(20)),
49 | borderSide: BorderSide(
50 | color: Colors.red,
51 | width: 2,
52 | ),
53 | ),
54 | focusedBorder: OutlineInputBorder(
55 | borderRadius: BorderRadius.all(Radius.circular(20)),
56 | borderSide: BorderSide(
57 | color: Colors.greenAccent,
58 | width: 2,
59 | ),
60 | ),
61 | enabledBorder: OutlineInputBorder(
62 | borderRadius: BorderRadius.all(Radius.circular(20)),
63 | borderSide: BorderSide(
64 | color: Colors.grey.shade800,
65 | width: 2,
66 | ),
67 | ),
68 | ),
69 | ),
70 | );
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/lib/screens/home/add_note.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_note/controllers/authController.dart';
3 | import 'package:flutter_note/controllers/userController.dart';
4 | import 'package:flutter_note/screens/widgets/custom_icon_btn.dart';
5 | import 'package:flutter_note/services/database.dart';
6 | import 'package:get/get.dart';
7 |
8 | class AddNotePage extends StatelessWidget {
9 | final UserController userController = Get.find();
10 | final AuthController authController = Get.find();
11 | final TextEditingController titleController = TextEditingController();
12 | final TextEditingController bodyController = TextEditingController();
13 | @override
14 | Widget build(BuildContext context) {
15 | final Size size = MediaQuery.of(context).size;
16 | return Scaffold(
17 | body: SafeArea(
18 | child: Container(
19 | height: size.height,
20 | padding: EdgeInsets.all(
21 | 16.0,
22 | ),
23 | child: Column(children: [
24 | Row(
25 | mainAxisAlignment: MainAxisAlignment.start,
26 | children: [
27 | CustomIconBtn(
28 | color: Theme.of(context).colorScheme.background,
29 | onPressed: () {
30 | Get.back();
31 | },
32 | icon: Icon(
33 | Icons.arrow_back_ios_outlined,
34 | ),
35 | ),
36 | SizedBox(
37 | width: MediaQuery.of(context).size.width / 4,
38 | ),
39 | Text(
40 | "Notes",
41 | style: TextStyle(
42 | fontSize: 24,
43 | fontWeight: FontWeight.bold,
44 | ),
45 | ),
46 | ],
47 | ),
48 | SizedBox(
49 | height: 20,
50 | ),
51 | Expanded(
52 | child: SingleChildScrollView(
53 | child: Column(
54 | children: [
55 | TextFormField(
56 | maxLines: null,
57 | autofocus: true,
58 | controller: titleController,
59 | keyboardType: TextInputType.multiline,
60 | textCapitalization: TextCapitalization.sentences,
61 | decoration: InputDecoration.collapsed(
62 | hintText: "Title",
63 | ),
64 | style: TextStyle(
65 | fontSize: 26.0,
66 | fontWeight: FontWeight.w500,
67 | ),
68 | ),
69 | SizedBox(
70 | height: 20,
71 | ),
72 | TextFormField(
73 | controller: bodyController,
74 | keyboardType: TextInputType.multiline,
75 | maxLines: null,
76 | textCapitalization: TextCapitalization.sentences,
77 | decoration: InputDecoration.collapsed(
78 | hintText: "Type something...",
79 | ),
80 | style: TextStyle(
81 | fontSize: 20.0,
82 | ),
83 | ),
84 | ],
85 | ),
86 | ),
87 | ),
88 | ]),
89 | ),
90 | ),
91 | floatingActionButton: FloatingActionButton.extended(
92 | onPressed: () {
93 | if (titleController.text.length == 0 &&
94 | bodyController.text.length == 0) {
95 | showEmptyTitleDialog(context);
96 | } else {
97 | Database().addNote(authController.user.uid, titleController.text,
98 | bodyController.text);
99 | Get.back();
100 | }
101 | },
102 | label: Text("Save"),
103 | icon: Icon(Icons.save),
104 | ),
105 | );
106 | }
107 | }
108 |
109 | void showEmptyTitleDialog(BuildContext context) {
110 | print("in dialog ");
111 | showDialog(
112 | context: context,
113 | builder: (BuildContext context) {
114 | return AlertDialog(
115 | backgroundColor: Theme.of(context).colorScheme.background,
116 | shape: RoundedRectangleBorder(
117 | borderRadius: BorderRadius.all(
118 | Radius.circular(10.0),
119 | ),
120 | ),
121 | title: Text(
122 | "Notes is empty!",
123 | style: Theme.of(context).textTheme.titleLarge,
124 | ),
125 | content: Text(
126 | 'The content of the note cannot be empty to be saved.',
127 | style: Theme.of(context).textTheme.titleMedium,
128 | ),
129 | actions: [
130 | TextButton(
131 | child: Text(
132 | "Okay",
133 | style: Theme.of(context).textTheme.titleMedium,
134 | ),
135 | onPressed: () {
136 | Get.back();
137 | },
138 | ),
139 | ],
140 | );
141 | },
142 | );
143 | }
144 |
--------------------------------------------------------------------------------
/lib/screens/home/home.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_note/controllers/authController.dart';
3 | import 'package:flutter_note/controllers/noteController.dart';
4 | import 'package:flutter_note/screens/home/add_note.dart';
5 | import 'package:flutter_note/screens/home/note_list.dart';
6 | import 'package:flutter_note/screens/settings/setting.dart';
7 | import 'package:flutter_note/screens/widgets/custom_icon_btn.dart';
8 | import 'package:get/get.dart';
9 |
10 | class HomePage extends GetWidget {
11 | final AuthController authController = Get.find();
12 | @override
13 | Widget build(BuildContext context) {
14 | return Scaffold(
15 | body: SafeArea(
16 | child: Padding(
17 | padding: EdgeInsets.symmetric(
18 | vertical: 10,
19 | horizontal: 16,
20 | ),
21 | child: Obx(() => Column(
22 | children: [
23 | Container(
24 | child: Row(
25 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
26 | children: [
27 | CustomIconBtn(
28 | color: Theme.of(context).colorScheme.background,
29 | onPressed: () {
30 | authController.axisCount.value =
31 | authController.axisCount.value == 2 ? 4 : 2;
32 | },
33 | icon: Icon(authController.axisCount.value == 2
34 | ? Icons.list
35 | : Icons.grid_on),
36 | ),
37 | Text(
38 | "Notes",
39 | style: TextStyle(
40 | fontSize: 24,
41 | fontWeight: FontWeight.bold,
42 | ),
43 | ),
44 | CustomIconBtn(
45 | color: Theme.of(context).colorScheme.background,
46 | onPressed: () {
47 | Get.to(() => Setting());
48 | },
49 | icon: Icon(
50 | Icons.settings,
51 | ),
52 | ),
53 | ],
54 | ),
55 | ),
56 | SizedBox(
57 | height: 20,
58 | ),
59 | GetX(
60 | init: Get.put(NoteController()),
61 | builder: (NoteController noteController) {
62 | if (noteController != null &&
63 | noteController.notes != null) {
64 | return NoteList();
65 | } else {
66 | return Text("No notes, create some ");
67 | }
68 | }),
69 | ],
70 | )),
71 | ),
72 | ),
73 | floatingActionButton: FloatingActionButton(
74 | tooltip: "Add Note",
75 | onPressed: () {
76 | Get.to(() => AddNotePage());
77 | },
78 | child: Icon(
79 | Icons.note_add,
80 | size: 30,
81 | )),
82 | );
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/lib/screens/home/note_list.dart:
--------------------------------------------------------------------------------
1 | import 'dart:math';
2 |
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_note/controllers/authController.dart';
5 | import 'package:flutter_note/controllers/noteController.dart';
6 | import 'package:flutter_note/screens/home/show_note.dart';
7 | import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
8 | import 'package:get/get.dart';
9 | import 'package:intl/intl.dart';
10 |
11 | class NoteList extends StatelessWidget {
12 | final AuthController authController = Get.find();
13 | final NoteController noteController = Get.find();
14 | final lightColors = [
15 | Colors.amber.shade300,
16 | Colors.lightGreen.shade300,
17 | Colors.lightBlue.shade300,
18 | Colors.orange.shade300,
19 | Colors.pinkAccent.shade100,
20 | Colors.tealAccent.shade100,
21 | Colors.purpleAccent,
22 | Colors.greenAccent.shade400,
23 | Colors.cyanAccent,
24 | ];
25 |
26 | @override
27 | Widget build(BuildContext context) {
28 | return Expanded(
29 | child: StaggeredGridView.countBuilder(
30 | itemCount: noteController.notes.length,
31 | staggeredTileBuilder: (index) =>
32 | StaggeredTile.fit(authController.axisCount.value),
33 | crossAxisCount: 4,
34 | mainAxisSpacing: 10,
35 | crossAxisSpacing: 10,
36 | itemBuilder: (context, index) {
37 | var formattedDate = DateFormat.yMMMd()
38 | .format(noteController.notes[index].creationDate.toDate());
39 | Random random = new Random();
40 | Color bg = lightColors[random.nextInt(8)];
41 | return GestureDetector(
42 | onTap: () {
43 | Get.to(() => ShowNote(
44 | index: index, noteData: noteController.notes[index]));
45 | },
46 | child: Container(
47 | padding: EdgeInsets.only(
48 | bottom: 10,
49 | left: 10,
50 | right: 10,
51 | ),
52 | decoration: BoxDecoration(
53 | color: bg,
54 | shape: BoxShape.rectangle,
55 | borderRadius: BorderRadius.circular(10),
56 | ),
57 | child: Column(
58 | children: [
59 | ListTile(
60 | contentPadding: EdgeInsets.only(
61 | top: 5,
62 | right: 8,
63 | left: 8,
64 | bottom: 0,
65 | ),
66 | title: Padding(
67 | padding: EdgeInsets.symmetric(
68 | vertical: 8,
69 | ),
70 | child: Text(
71 | noteController.notes[index].title,
72 | maxLines: 1,
73 | overflow: TextOverflow.ellipsis,
74 | style: TextStyle(
75 | color: Colors.black,
76 | fontSize: 18,
77 | fontWeight: FontWeight.w500,
78 | ),
79 | ),
80 | ),
81 | subtitle: Text(
82 | noteController.notes[index].body,
83 | maxLines: 10,
84 | overflow: TextOverflow.ellipsis,
85 | style: TextStyle(
86 | fontSize: 14,
87 | color: Colors.black,
88 | ),
89 | ),
90 | ),
91 | Row(
92 | mainAxisAlignment: MainAxisAlignment.end,
93 | children: [
94 | Text(
95 | formattedDate,
96 | style: TextStyle(
97 | color: Colors.black,
98 | ),
99 | ),
100 | ],
101 | ),
102 | ],
103 | ),
104 | ),
105 | );
106 | },
107 | ),
108 | );
109 | }
110 | }
111 |
--------------------------------------------------------------------------------
/lib/screens/home/show_note.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_note/controllers/authController.dart';
3 | import 'package:flutter_note/models/noteModel.dart';
4 | import 'package:flutter_note/screens/widgets/custom_icon_btn.dart';
5 | import 'package:flutter_note/services/database.dart';
6 | import 'package:get/get.dart';
7 | import 'package:intl/intl.dart';
8 |
9 | class ShowNote extends StatelessWidget {
10 | final NoteModel noteData;
11 | final int index;
12 | ShowNote({this.noteData, this.index});
13 | final AuthController authController = Get.find();
14 | final TextEditingController titleController = TextEditingController();
15 | final TextEditingController bodyController = TextEditingController();
16 |
17 | @override
18 | Widget build(BuildContext context) {
19 | titleController.text = noteData.title;
20 | bodyController.text = noteData.body;
21 | var formattedDate =
22 | DateFormat.yMMMd().format(noteData.creationDate.toDate());
23 | var time = DateFormat.jm().format(noteData.creationDate.toDate());
24 | return Scaffold(
25 | body: SafeArea(
26 | child: Container(
27 | padding: EdgeInsets.all(
28 | 16.0,
29 | ),
30 | child: Column(
31 | mainAxisAlignment: MainAxisAlignment.start,
32 | children: [
33 | Row(
34 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
35 | children: [
36 | CustomIconBtn(
37 | color: Theme.of(context).colorScheme.background,
38 | onPressed: () {
39 | Get.back();
40 | },
41 | icon: Icon(
42 | Icons.arrow_back_ios_outlined,
43 | ),
44 | ),
45 | CustomIconBtn(
46 | color: Theme.of(context).colorScheme.background,
47 | onPressed: () {
48 | showDeleteDialog(context, noteData);
49 | },
50 | icon: Icon(
51 | Icons.delete,
52 | ),
53 | ),
54 | ],
55 | ),
56 | SizedBox(
57 | height: 20,
58 | ),
59 | Expanded(
60 | child: SingleChildScrollView(
61 | child: Column(
62 | children: [
63 | Text("$formattedDate at $time"),
64 | SizedBox(
65 | height: 10,
66 | ),
67 | TextFormField(
68 | controller: titleController,
69 | maxLines: null,
70 | decoration: InputDecoration.collapsed(
71 | hintText: "Title",
72 | ),
73 | style: TextStyle(
74 | fontSize: 26.0,
75 | fontWeight: FontWeight.w500,
76 | ),
77 | ),
78 | SizedBox(
79 | height: 20,
80 | ),
81 | TextFormField(
82 | autofocus: true,
83 | controller: bodyController,
84 | keyboardType: TextInputType.multiline,
85 | maxLines: null,
86 | decoration: InputDecoration.collapsed(
87 | hintText: "Type something...",
88 | ),
89 | style: TextStyle(
90 | fontSize: 20.0,
91 | ),
92 | ),
93 | ],
94 | ),
95 | ),
96 | ),
97 | ],
98 | ),
99 | ),
100 | ),
101 | floatingActionButton: FloatingActionButton.extended(
102 | onPressed: () {
103 | if (titleController.text != noteData.title ||
104 | bodyController.text != noteData.body) {
105 | Database().updateNote(authController.user.uid,
106 | titleController.text, bodyController.text, noteData.id);
107 | Get.back();
108 | titleController.clear();
109 | bodyController.clear();
110 | } else {
111 | showSameContentDialog(context);
112 | }
113 | },
114 | label: Text("Save"),
115 | icon: Icon(Icons.save),
116 | ));
117 | }
118 | }
119 |
120 | void showDeleteDialog(BuildContext context, noteData) {
121 | final AuthController authController = Get.find();
122 | showDialog(
123 | context: context,
124 | builder: (BuildContext context) {
125 | return AlertDialog(
126 | shape: RoundedRectangleBorder(
127 | borderRadius: BorderRadius.all(Radius.circular(10.0))),
128 | title: Text(
129 | "Delete Note?",
130 | style: Theme.of(context).textTheme.titleLarge,
131 | ),
132 | content: Text("Are you sure you want to delete this note?",
133 | style: Theme.of(context).textTheme.titleMedium),
134 | actions: [
135 | TextButton(
136 | child: Text(
137 | "Yes",
138 | style: Theme.of(context).textTheme.titleMedium,
139 | ),
140 | onPressed: () {
141 | Get.back();
142 | Database().delete(authController.user.uid, noteData.id);
143 | Get.back(closeOverlays: true);
144 | },
145 | ),
146 | TextButton(
147 | child: Text(
148 | "No",
149 | style: Theme.of(context).textTheme.titleMedium,
150 | ),
151 | onPressed: () {
152 | Navigator.of(context).pop();
153 | },
154 | ),
155 | ],
156 | );
157 | },
158 | );
159 | }
160 |
161 | void showSameContentDialog(BuildContext context) {
162 | showDialog(
163 | context: context,
164 | builder: (BuildContext context) {
165 | return AlertDialog(
166 | shape: RoundedRectangleBorder(
167 | borderRadius: BorderRadius.all(Radius.circular(10.0))),
168 | title: Text(
169 | "No change in content!",
170 | style: Theme.of(context).textTheme.titleLarge,
171 | ),
172 | content: Text("There is no change in content.",
173 | style: Theme.of(context).textTheme.titleMedium),
174 | actions: [
175 | TextButton(
176 | child: Text(
177 | "Okay",
178 | style: Theme.of(context).textTheme.titleMedium,
179 | ),
180 | onPressed: () {
181 | Get.back();
182 | },
183 | ),
184 | ],
185 | );
186 | },
187 | );
188 | }
189 |
--------------------------------------------------------------------------------
/lib/screens/settings/account.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_note/controllers/authController.dart';
3 | import 'package:flutter_note/controllers/userController.dart';
4 | import 'package:flutter_note/screens/widgets/custom_icon_btn.dart';
5 | import 'package:get/get.dart';
6 |
7 | class Account extends StatelessWidget {
8 | final UserController userController = Get.find();
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return Scaffold(
13 | body: SafeArea(
14 | child: Padding(
15 | padding: EdgeInsets.symmetric(
16 | vertical: 10,
17 | horizontal: 16,
18 | ),
19 | child: Column(
20 | crossAxisAlignment: CrossAxisAlignment.start,
21 | children: [
22 | Container(
23 | child: Row(
24 | mainAxisAlignment: MainAxisAlignment.start,
25 | children: [
26 | CustomIconBtn(
27 | icon: Icon(
28 | Icons.arrow_back_ios,
29 | ),
30 | color: Theme.of(context).colorScheme.background,
31 | onPressed: () {
32 | Get.back();
33 | },
34 | ),
35 | SizedBox(
36 | width: MediaQuery.of(context).size.width / 4,
37 | ),
38 | Text(
39 | "Account",
40 | style: TextStyle(
41 | fontSize: 24,
42 | fontWeight: FontWeight.bold,
43 | ),
44 | ),
45 | ],
46 | ),
47 | ),
48 | SizedBox(
49 | height: 20,
50 | ),
51 | Container(
52 | padding: EdgeInsets.all(10),
53 | child: RichText(
54 | text: TextSpan(
55 | children: [
56 | TextSpan(
57 | text: "Hi, ${userController.user.name} !\n",
58 | style: TextStyle(
59 | color: Get.isDarkMode ? Colors.white : Colors.black,
60 | fontSize: 18,
61 | ),
62 | ),
63 | WidgetSpan(
64 | child: Icon(
65 | Icons.email,
66 | size: 14,
67 | ),
68 | alignment: PlaceholderAlignment.middle),
69 | TextSpan(
70 | text: " ${userController.user.email}\n",
71 | style: TextStyle(
72 | color: Get.isDarkMode ? Colors.white : Colors.black,
73 | fontSize: 16,
74 | ),
75 | ),
76 | ],
77 | ),
78 | ),
79 | ),
80 | ListTile(
81 | contentPadding: EdgeInsets.symmetric(
82 | horizontal: 15,
83 | ),
84 | onTap: () {
85 | showSignOutDialog(context);
86 | },
87 | title: Text("Logout"),
88 | leading: Icon(
89 | Icons.power_settings_new_outlined,
90 | color: Theme.of(context).iconTheme.color,
91 | ),
92 | ),
93 | ],
94 | ),
95 | ),
96 | ),
97 | );
98 | }
99 | }
100 |
101 | void showSignOutDialog(BuildContext context) async {
102 | final AuthController authController = Get.find();
103 | print("in dialog ");
104 | await showDialog(
105 | context: context,
106 | builder: (BuildContext context) {
107 | return AlertDialog(
108 | contentPadding: EdgeInsets.all(20),
109 | actionsPadding: EdgeInsets.only(right: 60),
110 | backgroundColor: Theme.of(context).colorScheme.background,
111 | shape: RoundedRectangleBorder(
112 | borderRadius: BorderRadius.all(
113 | Radius.circular(20.0),
114 | ),
115 | ),
116 | title: Text(
117 | "Are you sure you want to log out?",
118 | style: TextStyle(
119 | color: Theme.of(context).colorScheme.onSurface,
120 | fontSize: 20,
121 | ),
122 | textAlign: TextAlign.center,
123 | ),
124 | content: Text(
125 | 'Your notes are already saved so when logging back your noteswill be there.',
126 | style: Theme.of(context).textTheme.bodyLarge,
127 | textAlign: TextAlign.center,
128 | ),
129 | actions: [
130 | ElevatedButton(
131 | child: Text("Log Out",
132 | style: TextStyle(
133 | color: Theme.of(context).colorScheme.onSurface,
134 | fontSize: 18,
135 | fontWeight: FontWeight.bold,
136 | )),
137 | onPressed: () {
138 | Get.back();
139 | authController.signout();
140 | Get.close(2);
141 | },
142 | style: ElevatedButton.styleFrom(
143 | backgroundColor: Theme.of(context).colorScheme.background,
144 | ),
145 | ),
146 | TextButton(
147 | child: Text("Cancel",
148 | style: TextStyle(
149 | color:Theme.of(context).colorScheme.onSurface,
150 | fontSize: 18,
151 | fontWeight: FontWeight.bold,
152 | )),
153 | onPressed: () {
154 | Navigator.of(context).pop();
155 | },
156 | ),
157 | ],
158 | );
159 | },
160 | );
161 | }
162 |
--------------------------------------------------------------------------------
/lib/screens/settings/dark_mode.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_note/screens/settings/widgets/list_tile.dart';
3 | import 'package:flutter_note/screens/widgets/custom_icon_btn.dart';
4 | import 'package:get/get.dart';
5 |
6 | class DarkMode extends StatelessWidget {
7 | @override
8 | Widget build(BuildContext context) {
9 | return Scaffold(
10 | body: SafeArea(
11 | child: Padding(
12 | padding: EdgeInsets.symmetric(
13 | vertical: 10,
14 | horizontal: 16,
15 | ),
16 | child: Column(
17 | children: [
18 | Container(
19 | child: Row(
20 | mainAxisAlignment: MainAxisAlignment.start,
21 | children: [
22 | CustomIconBtn(
23 | icon: Icon(
24 | Icons.arrow_back_ios,
25 | ),
26 | color: Theme.of(context).colorScheme.background,
27 | onPressed: () {
28 | Get.back();
29 | },
30 | ),
31 | SizedBox(
32 | width: MediaQuery.of(context).size.width / 5,
33 | ),
34 | Text(
35 | "Appearnace",
36 | style: TextStyle(
37 | fontSize: 24,
38 | fontWeight: FontWeight.bold,
39 | ),
40 | ),
41 | ],
42 | ),
43 | ),
44 | SizedBox(
45 | height: 20,
46 | ),
47 | ListTileSetting(
48 | onTap: () {
49 | Get.changeThemeMode(ThemeMode.system);
50 | },
51 | title: "Use device setting",
52 | iconData: Icons.settings_brightness_outlined,
53 | subtitle: Text(
54 | "Auttomatically swtich between Light and Dark themes when your system does",
55 | )),
56 | ListTileSetting(
57 | onTap: () {
58 | Get.changeThemeMode(ThemeMode.light);
59 | },
60 | title: "Light Mode",
61 | iconData: Icons.brightness_5,
62 | subtitle: null,
63 | ),
64 | ListTileSetting(
65 | iconData: Icons.brightness_4_outlined,
66 | onTap: () {
67 | Get.changeThemeMode(ThemeMode.dark);
68 | },
69 | title: "Dark Mode",
70 | subtitle: null,
71 | ),
72 | ],
73 | ),
74 | ),
75 | ),
76 | );
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/lib/screens/settings/setting.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_note/controllers/authController.dart';
3 | import 'package:flutter_note/screens/settings/account.dart';
4 | import 'package:flutter_note/screens/settings/dark_mode.dart';
5 | import 'package:flutter_note/screens/settings/widgets/list_tile.dart';
6 | import 'package:flutter_note/screens/widgets/custom_icon_btn.dart';
7 | import 'package:get/get.dart';
8 |
9 | class Setting extends StatelessWidget {
10 | final AuthController authController = Get.find();
11 | @override
12 | Widget build(BuildContext context) {
13 | return Scaffold(
14 | body: SafeArea(
15 | child: Padding(
16 | padding: EdgeInsets.symmetric(
17 | vertical: 10,
18 | horizontal: 16,
19 | ),
20 | child: Column(
21 | children: [
22 | Container(
23 | child: Row(
24 | mainAxisAlignment: MainAxisAlignment.start,
25 | children: [
26 | CustomIconBtn(
27 | icon: Icon(
28 | Icons.arrow_back_ios,
29 | ),
30 | color: Theme.of(context).colorScheme.background,
31 | onPressed: () {
32 | Get.back();
33 | },
34 | ),
35 | SizedBox(
36 | width: MediaQuery.of(context).size.width / 4,
37 | ),
38 | Text(
39 | "Settings",
40 | style: TextStyle(
41 | fontSize: 24,
42 | fontWeight: FontWeight.bold,
43 | ),
44 | ),
45 | ],
46 | ),
47 | ),
48 | SizedBox(
49 | height: 20,
50 | ),
51 | ListTileSetting(
52 | onTap: () {
53 | Get.to(() => Account());
54 | },
55 | title: "Account",
56 | iconData: Icons.person,
57 | subtitle: null,
58 | ),
59 | ListTileSetting(
60 | onTap: () {
61 | Get.to(() => DarkMode());
62 | },
63 | title: "Dark Mode",
64 | iconData: Icons.nights_stay,
65 | subtitle: null,
66 | ),
67 | ],
68 | ),
69 | ),
70 | ),
71 | );
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/lib/screens/settings/widgets/list_tile.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class ListTileSetting extends StatelessWidget {
4 | final String title;
5 | final Function onTap;
6 | final IconData iconData;
7 | final Widget subtitle;
8 |
9 | ListTileSetting({this.title, this.iconData, this.onTap, this.subtitle});
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return Column(
14 | children: [
15 | ListTile(
16 | contentPadding: EdgeInsets.symmetric(
17 | horizontal: 12,
18 | ),
19 | onTap: onTap,
20 | leading: Icon(
21 | iconData,
22 | color: Theme.of(context).iconTheme.color,
23 | ),
24 | title: Text(title),
25 | trailing: Icon(
26 | Icons.arrow_forward_ios,
27 | color: Theme.of(context).iconTheme.color,
28 | ),
29 | subtitle: subtitle,
30 | ),
31 | Divider(
32 | indent: 60,
33 | thickness: 2,
34 | ),
35 | ],
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/screens/widgets/custom_icon_btn.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class CustomIconBtn extends StatelessWidget {
4 | final Color color;
5 | final Function onPressed;
6 | final Widget icon;
7 | CustomIconBtn({this.color, this.onPressed, this.icon});
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | return Container(
12 | decoration: BoxDecoration(
13 | color: color,
14 | shape: BoxShape.rectangle,
15 | borderRadius: BorderRadius.circular(10)),
16 | child: IconButton(
17 | onPressed: onPressed,
18 | icon: icon,
19 | ),
20 | );
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/lib/services/database.dart:
--------------------------------------------------------------------------------
1 | import 'package:cloud_firestore/cloud_firestore.dart';
2 | import 'package:flutter_note/models/noteModel.dart';
3 | import 'package:flutter_note/models/user.dart';
4 | import 'package:uuid/uuid.dart';
5 |
6 | class Database {
7 | final FirebaseFirestore _firestore = FirebaseFirestore.instance;
8 | final String userCollection = "users";
9 | final String noteCollection = "notes";
10 |
11 | Future createNewUser(UserModel user) async {
12 | try {
13 | await _firestore
14 | .collection(userCollection)
15 | .doc(user.id)
16 | .set({"id": user.id, "name": user.name, "email": user.email});
17 | return true;
18 | } catch (e) {
19 | print(e);
20 | return true;
21 | }
22 | }
23 |
24 | Future getUser(String uid) async {
25 | try {
26 | DocumentSnapshot doc =
27 | await _firestore.collection(userCollection).doc(uid).get();
28 | return UserModel.fromDocumentSnapshot(doc);
29 | } catch (e) {
30 | print(e);
31 | rethrow;
32 | }
33 | }
34 |
35 | Future addNote(String uid, String title, String body) async {
36 | try {
37 | var uuid = Uuid().v4();
38 | await _firestore
39 | .collection(userCollection)
40 | .doc(uid)
41 | .collection(noteCollection)
42 | .doc(uuid)
43 | .set({
44 | "id": uuid,
45 | "title": title,
46 | "body": body,
47 | "creationDate": Timestamp.now(),
48 | });
49 | } catch (e) {
50 | print(e.message);
51 | }
52 | }
53 |
54 | Future updateNote(
55 | String uid, String title, String body, String id) async {
56 | try {
57 | await _firestore
58 | .collection(userCollection)
59 | .doc(uid)
60 | .collection(noteCollection)
61 | .doc(id)
62 | .update({
63 | "title": title,
64 | "body": body,
65 | "creationDate": Timestamp.now(),
66 | });
67 | } catch (e) {
68 | print(e.message);
69 | }
70 | }
71 |
72 | Future delete(String uid, String id) async {
73 | try {
74 | await _firestore
75 | .collection(userCollection)
76 | .doc(uid)
77 | .collection(noteCollection)
78 | .doc(id)
79 | .delete();
80 | } catch (e) {
81 | print(e.message);
82 | }
83 | }
84 |
85 | Stream> noteStream(String uid) {
86 | return _firestore
87 | .collection(userCollection)
88 | .doc(uid)
89 | .collection(noteCollection)
90 | .orderBy("creationDate", descending: true)
91 | .snapshots()
92 | .map((QuerySnapshot query) {
93 | List retVal = [];
94 | query.docs.forEach((element) {
95 | retVal.add(NoteModel.fromDocumentSnapshot(element));
96 | });
97 | return retVal;
98 | });
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/lib/utils/root.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_note/controllers/authController.dart';
3 | import 'package:flutter_note/screens/auth/login.dart';
4 | import 'package:flutter_note/screens/home/home.dart';
5 | import 'package:get/get.dart';
6 |
7 | class Root extends StatelessWidget {
8 | final AuthController authController = Get.find();
9 | @override
10 | Widget build(BuildContext context) {
11 | return Obx(
12 | () {
13 | if (authController != null && authController.user?.uid != null) {
14 | return HomePage();
15 | } else {
16 | return Login();
17 | }
18 | },
19 | );
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/utils/theme.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class Themes {
4 | final lightTheme = ThemeData.light().copyWith(
5 | colorScheme: ColorScheme.light(
6 | background: Colors.grey.shade300,
7 | secondary: Colors.tealAccent.shade700,
8 | ),
9 | primaryColor: Colors.orange,
10 | iconTheme: IconThemeData(
11 | color: Colors.black,
12 | ),
13 | buttonTheme: ButtonThemeData(
14 | buttonColor: Colors.black,
15 | ),
16 | floatingActionButtonTheme: FloatingActionButtonThemeData(
17 | // foregroundColor: Colors.black,
18 | // backgroundColor: Colors.grey.shade300,
19 | ),
20 | );
21 |
22 | final dartTheme = ThemeData.dark().copyWith(
23 | colorScheme: ColorScheme.dark(
24 | background: Colors.grey.shade800,
25 | secondary: Colors.tealAccent,
26 | ),
27 | buttonTheme: ButtonThemeData(
28 | buttonColor: Colors.white,
29 | ),
30 | primaryColor: Colors.orange,
31 | iconTheme: IconThemeData(
32 | color: Colors.white,
33 | ),
34 | floatingActionButtonTheme: FloatingActionButtonThemeData(
35 | // foregroundColor: Colors.white,
36 | // backgroundColor: Colors.teal.shade500,
37 | ),
38 | );
39 | }
40 |
--------------------------------------------------------------------------------
/pubspec.lock:
--------------------------------------------------------------------------------
1 | # Generated by pub
2 | # See https://dart.dev/tools/pub/glossary#lockfile
3 | packages:
4 | _flutterfire_internals:
5 | dependency: transitive
6 | description:
7 | name: _flutterfire_internals
8 | sha256: "64fcb0dbca4386356386c085142fa6e79c00a3326ceaa778a2d25f5d9ba61441"
9 | url: "https://pub.dev"
10 | source: hosted
11 | version: "1.0.16"
12 | archive:
13 | dependency: transitive
14 | description:
15 | name: archive
16 | sha256: d6347d54a2d8028e0437e3c099f66fdb8ae02c4720c1e7534c9f24c10351f85d
17 | url: "https://pub.dev"
18 | source: hosted
19 | version: "3.3.6"
20 | args:
21 | dependency: transitive
22 | description:
23 | name: args
24 | sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440"
25 | url: "https://pub.dev"
26 | source: hosted
27 | version: "2.4.0"
28 | async:
29 | dependency: transitive
30 | description:
31 | name: async
32 | sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
33 | url: "https://pub.dev"
34 | source: hosted
35 | version: "2.10.0"
36 | boolean_selector:
37 | dependency: transitive
38 | description:
39 | name: boolean_selector
40 | sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
41 | url: "https://pub.dev"
42 | source: hosted
43 | version: "2.1.1"
44 | characters:
45 | dependency: transitive
46 | description:
47 | name: characters
48 | sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
49 | url: "https://pub.dev"
50 | source: hosted
51 | version: "1.2.1"
52 | clock:
53 | dependency: transitive
54 | description:
55 | name: clock
56 | sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
57 | url: "https://pub.dev"
58 | source: hosted
59 | version: "1.1.1"
60 | cloud_firestore:
61 | dependency: "direct main"
62 | description:
63 | name: cloud_firestore
64 | sha256: "65f148d9f5b4f389320abb45847120cf5e46094c1a8cbc64934ffc1e29688596"
65 | url: "https://pub.dev"
66 | source: hosted
67 | version: "4.4.3"
68 | cloud_firestore_platform_interface:
69 | dependency: transitive
70 | description:
71 | name: cloud_firestore_platform_interface
72 | sha256: "43ccae09f7e0c82752e69c251c6dc5efcdff4ddcfc09564175a28657bbd74188"
73 | url: "https://pub.dev"
74 | source: hosted
75 | version: "5.11.3"
76 | cloud_firestore_web:
77 | dependency: transitive
78 | description:
79 | name: cloud_firestore_web
80 | sha256: e054c007217e28e07179bbae0564c2a4f6338a60bddb0c139e4834e953f4b95c
81 | url: "https://pub.dev"
82 | source: hosted
83 | version: "3.3.3"
84 | collection:
85 | dependency: transitive
86 | description:
87 | name: collection
88 | sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
89 | url: "https://pub.dev"
90 | source: hosted
91 | version: "1.17.0"
92 | convert:
93 | dependency: transitive
94 | description:
95 | name: convert
96 | sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
97 | url: "https://pub.dev"
98 | source: hosted
99 | version: "3.1.1"
100 | crypto:
101 | dependency: transitive
102 | description:
103 | name: crypto
104 | sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
105 | url: "https://pub.dev"
106 | source: hosted
107 | version: "3.0.2"
108 | cupertino_icons:
109 | dependency: "direct main"
110 | description:
111 | name: cupertino_icons
112 | sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be
113 | url: "https://pub.dev"
114 | source: hosted
115 | version: "1.0.5"
116 | fake_async:
117 | dependency: transitive
118 | description:
119 | name: fake_async
120 | sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
121 | url: "https://pub.dev"
122 | source: hosted
123 | version: "1.3.1"
124 | firebase_auth:
125 | dependency: "direct main"
126 | description:
127 | name: firebase_auth
128 | sha256: e946a21254784116d32e497e09b851b4d03a3c65880e80d6939a720dfce88aed
129 | url: "https://pub.dev"
130 | source: hosted
131 | version: "4.2.2"
132 | firebase_auth_platform_interface:
133 | dependency: transitive
134 | description:
135 | name: firebase_auth_platform_interface
136 | sha256: c645fec50b0391aa878288f58fa4fe9762c271380c457aedf5c7c9b718604f68
137 | url: "https://pub.dev"
138 | source: hosted
139 | version: "6.11.11"
140 | firebase_auth_web:
141 | dependency: transitive
142 | description:
143 | name: firebase_auth_web
144 | sha256: bf8f3093c141abd0a624e0244864154d9db694682ba0cc1fcfdf60ecb6f7f2e3
145 | url: "https://pub.dev"
146 | source: hosted
147 | version: "5.2.2"
148 | firebase_core:
149 | dependency: "direct main"
150 | description:
151 | name: firebase_core
152 | sha256: fe30ac230f12f8836bb97e6e09197340d3c584526825b1746ea362a82e1e43f7
153 | url: "https://pub.dev"
154 | source: hosted
155 | version: "2.7.0"
156 | firebase_core_platform_interface:
157 | dependency: transitive
158 | description:
159 | name: firebase_core_platform_interface
160 | sha256: "5615b30c36f55b2777d0533771deda7e5730e769e5d3cb7fda79e9bed86cfa55"
161 | url: "https://pub.dev"
162 | source: hosted
163 | version: "4.5.3"
164 | firebase_core_web:
165 | dependency: transitive
166 | description:
167 | name: firebase_core_web
168 | sha256: "291fbcace608aca6c860652e1358ef89752be8cc3ef227f8bbcd1e62775b833a"
169 | url: "https://pub.dev"
170 | source: hosted
171 | version: "2.2.1"
172 | flutter:
173 | dependency: "direct main"
174 | description: flutter
175 | source: sdk
176 | version: "0.0.0"
177 | flutter_launcher_icons:
178 | dependency: "direct dev"
179 | description:
180 | name: flutter_launcher_icons
181 | sha256: "559c600f056e7c704bd843723c21e01b5fba47e8824bd02422165bcc02a5de1d"
182 | url: "https://pub.dev"
183 | source: hosted
184 | version: "0.9.3"
185 | flutter_staggered_grid_view:
186 | dependency: "direct main"
187 | description:
188 | name: flutter_staggered_grid_view
189 | sha256: f0b6d8c0fa7b4b444985cdde68492c0138a4fb6fc57a641b24cb234b7ee0f5c4
190 | url: "https://pub.dev"
191 | source: hosted
192 | version: "0.4.1"
193 | flutter_test:
194 | dependency: "direct dev"
195 | description: flutter
196 | source: sdk
197 | version: "0.0.0"
198 | flutter_web_plugins:
199 | dependency: transitive
200 | description: flutter
201 | source: sdk
202 | version: "0.0.0"
203 | get:
204 | dependency: "direct main"
205 | description:
206 | name: get
207 | sha256: "2ba20a47c8f1f233bed775ba2dd0d3ac97b4cf32fc17731b3dfc672b06b0e92a"
208 | url: "https://pub.dev"
209 | source: hosted
210 | version: "4.6.5"
211 | google_identity_services_web:
212 | dependency: transitive
213 | description:
214 | name: google_identity_services_web
215 | sha256: "5d9af2f1fa192f2629a266d038ee9307b0abe729a4f1b454dd21b414f5e7d381"
216 | url: "https://pub.dev"
217 | source: hosted
218 | version: "0.2.0"
219 | google_sign_in:
220 | dependency: "direct main"
221 | description:
222 | name: google_sign_in
223 | sha256: "71c5311a19a2406498028a54fcac81351827297fa8cf5abbf51b7e0fa1bc64f5"
224 | url: "https://pub.dev"
225 | source: hosted
226 | version: "6.0.1"
227 | google_sign_in_android:
228 | dependency: transitive
229 | description:
230 | name: google_sign_in_android
231 | sha256: f27bd56527c567594167bd0a46f7ceb93122ed064d2eee612413d6af0bb2e2e5
232 | url: "https://pub.dev"
233 | source: hosted
234 | version: "6.1.7"
235 | google_sign_in_ios:
236 | dependency: transitive
237 | description:
238 | name: google_sign_in_ios
239 | sha256: eca3433737cfe8b231127d43a3e6527e07d5f8e4a0c00ce593aaaf7bc92bb135
240 | url: "https://pub.dev"
241 | source: hosted
242 | version: "5.5.2"
243 | google_sign_in_platform_interface:
244 | dependency: transitive
245 | description:
246 | name: google_sign_in_platform_interface
247 | sha256: fece762f0d2dd762ebde43ad70662a209ff6ee034111976549c392f7763d9264
248 | url: "https://pub.dev"
249 | source: hosted
250 | version: "2.3.1"
251 | google_sign_in_web:
252 | dependency: transitive
253 | description:
254 | name: google_sign_in_web
255 | sha256: "824b42c0a0b01c062bf3b1d555432d84c8b1dd0c5bbf0773514e574f02be9f95"
256 | url: "https://pub.dev"
257 | source: hosted
258 | version: "0.11.0+1"
259 | http:
260 | dependency: transitive
261 | description:
262 | name: http
263 | sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482"
264 | url: "https://pub.dev"
265 | source: hosted
266 | version: "0.13.5"
267 | http_parser:
268 | dependency: transitive
269 | description:
270 | name: http_parser
271 | sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
272 | url: "https://pub.dev"
273 | source: hosted
274 | version: "4.0.2"
275 | image:
276 | dependency: transitive
277 | description:
278 | name: image
279 | sha256: "8e9d133755c3e84c73288363e6343157c383a0c6c56fc51afcc5d4d7180306d6"
280 | url: "https://pub.dev"
281 | source: hosted
282 | version: "3.3.0"
283 | intl:
284 | dependency: "direct main"
285 | description:
286 | name: intl
287 | sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6
288 | url: "https://pub.dev"
289 | source: hosted
290 | version: "0.18.0"
291 | js:
292 | dependency: transitive
293 | description:
294 | name: js
295 | sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
296 | url: "https://pub.dev"
297 | source: hosted
298 | version: "0.6.5"
299 | matcher:
300 | dependency: transitive
301 | description:
302 | name: matcher
303 | sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
304 | url: "https://pub.dev"
305 | source: hosted
306 | version: "0.12.13"
307 | material_color_utilities:
308 | dependency: transitive
309 | description:
310 | name: material_color_utilities
311 | sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
312 | url: "https://pub.dev"
313 | source: hosted
314 | version: "0.2.0"
315 | meta:
316 | dependency: transitive
317 | description:
318 | name: meta
319 | sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
320 | url: "https://pub.dev"
321 | source: hosted
322 | version: "1.8.0"
323 | path:
324 | dependency: transitive
325 | description:
326 | name: path
327 | sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
328 | url: "https://pub.dev"
329 | source: hosted
330 | version: "1.8.2"
331 | petitparser:
332 | dependency: transitive
333 | description:
334 | name: petitparser
335 | sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4"
336 | url: "https://pub.dev"
337 | source: hosted
338 | version: "5.1.0"
339 | plugin_platform_interface:
340 | dependency: transitive
341 | description:
342 | name: plugin_platform_interface
343 | sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc"
344 | url: "https://pub.dev"
345 | source: hosted
346 | version: "2.1.4"
347 | pointycastle:
348 | dependency: transitive
349 | description:
350 | name: pointycastle
351 | sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346
352 | url: "https://pub.dev"
353 | source: hosted
354 | version: "3.6.2"
355 | quiver:
356 | dependency: transitive
357 | description:
358 | name: quiver
359 | sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47
360 | url: "https://pub.dev"
361 | source: hosted
362 | version: "3.2.1"
363 | sky_engine:
364 | dependency: transitive
365 | description: flutter
366 | source: sdk
367 | version: "0.0.99"
368 | source_span:
369 | dependency: transitive
370 | description:
371 | name: source_span
372 | sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
373 | url: "https://pub.dev"
374 | source: hosted
375 | version: "1.9.1"
376 | stack_trace:
377 | dependency: transitive
378 | description:
379 | name: stack_trace
380 | sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
381 | url: "https://pub.dev"
382 | source: hosted
383 | version: "1.11.0"
384 | stream_channel:
385 | dependency: transitive
386 | description:
387 | name: stream_channel
388 | sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
389 | url: "https://pub.dev"
390 | source: hosted
391 | version: "2.1.1"
392 | string_scanner:
393 | dependency: transitive
394 | description:
395 | name: string_scanner
396 | sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
397 | url: "https://pub.dev"
398 | source: hosted
399 | version: "1.2.0"
400 | term_glyph:
401 | dependency: transitive
402 | description:
403 | name: term_glyph
404 | sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
405 | url: "https://pub.dev"
406 | source: hosted
407 | version: "1.2.1"
408 | test_api:
409 | dependency: transitive
410 | description:
411 | name: test_api
412 | sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
413 | url: "https://pub.dev"
414 | source: hosted
415 | version: "0.4.16"
416 | typed_data:
417 | dependency: transitive
418 | description:
419 | name: typed_data
420 | sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
421 | url: "https://pub.dev"
422 | source: hosted
423 | version: "1.3.1"
424 | uuid:
425 | dependency: "direct main"
426 | description:
427 | name: uuid
428 | sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313"
429 | url: "https://pub.dev"
430 | source: hosted
431 | version: "3.0.7"
432 | vector_math:
433 | dependency: transitive
434 | description:
435 | name: vector_math
436 | sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
437 | url: "https://pub.dev"
438 | source: hosted
439 | version: "2.1.4"
440 | xml:
441 | dependency: transitive
442 | description:
443 | name: xml
444 | sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5"
445 | url: "https://pub.dev"
446 | source: hosted
447 | version: "6.2.2"
448 | yaml:
449 | dependency: transitive
450 | description:
451 | name: yaml
452 | sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370"
453 | url: "https://pub.dev"
454 | source: hosted
455 | version: "3.1.1"
456 | sdks:
457 | dart: ">=2.18.0 <3.0.0"
458 | flutter: ">=3.0.0"
459 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: flutter_note
2 | description: A new Flutter project.
3 |
4 | # The following line prevents the package from being accidentally published to
5 | # pub.dev using `pub publish`. This is preferred for private packages.
6 | publish_to: "none" # Remove this line if you wish to publish to pub.dev
7 |
8 | # The following defines the version and build number for your application.
9 | # A version number is three numbers separated by dots, like 1.2.43
10 | # followed by an optional build number separated by a +.
11 | # Both the version and the builder number may be overridden in flutter
12 | # build by specifying --build-name and --build-number, respectively.
13 | # In Android, build-name is used as versionName while build-number used as versionCode.
14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning
15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
16 | # Read more about iOS versioning at
17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
18 | version: 1.0.0+1
19 |
20 | environment:
21 | sdk: ">=2.7.0 <3.0.0"
22 |
23 | dependencies:
24 | flutter:
25 | sdk: flutter
26 |
27 | # The following adds the Cupertino Icons font to your application.
28 | # Use with the CupertinoIcons class for iOS style icons.
29 | cupertino_icons:
30 | get:
31 | firebase_core: ^2.7.0
32 | firebase_auth:
33 | google_sign_in:
34 | cloud_firestore:
35 | intl:
36 | flutter_staggered_grid_view: ^0.4.0
37 | uuid:
38 |
39 | dev_dependencies:
40 | flutter_test:
41 | sdk: flutter
42 |
43 | flutter_launcher_icons: ^0.9.0
44 |
45 | flutter_icons:
46 | android: true
47 | ios: true
48 | image_path: "assets/images/logo/logo.png"
49 | # For information on the generic Dart part of this file, see the
50 | # following page: https://dart.dev/tools/pub/pubspec
51 |
52 | # The following section is specific to Flutter.
53 | flutter:
54 | # The following line ensures that the Material Icons font is
55 | # included with your application, so that you can use the icons in
56 | # the material Icons class.
57 | uses-material-design: true
58 |
59 | # To add assets to your application, add an assets section, like this:
60 | # assets:
61 | # - images/a_dot_burr.jpeg
62 | # - images/a_dot_ham.jpeg
63 |
64 | # An image asset can refer to one or more resolution-specific "variants", see
65 | # https://flutter.dev/assets-and-images/#resolution-aware.
66 |
67 | # For details regarding adding assets from package dependencies, see
68 | # https://flutter.dev/assets-and-images/#from-packages
69 |
70 | # To add custom fonts to your application, add a fonts section here,
71 | # in this "flutter" section. Each entry in this list should have a
72 | # "family" key with the font family name, and a "fonts" key with a
73 | # list giving the asset and other descriptors for the font. For
74 | # example:
75 | # fonts:
76 | # - family: Schyler
77 | # fonts:
78 | # - asset: fonts/Schyler-Regular.ttf
79 | # - asset: fonts/Schyler-Italic.ttf
80 | # style: italic
81 | # - family: Trajan Pro
82 | # fonts:
83 | # - asset: fonts/TrajanPro.ttf
84 | # - asset: fonts/TrajanPro_Bold.ttf
85 | # weight: 700
86 | #
87 | # For details regarding fonts from package dependencies,
88 | # see https://flutter.dev/custom-fonts/#from-packages
89 |
--------------------------------------------------------------------------------
/test/widget_test.dart:
--------------------------------------------------------------------------------
1 | // This is a basic Flutter widget test.
2 | //
3 | // To perform an interaction with a widget in your test, use the WidgetTester
4 | // utility that Flutter provides. For example, you can send tap and scroll
5 | // gestures. You can also use WidgetTester to find child widgets in the widget
6 | // tree, read text, and verify that the values of widget properties are correct.
7 |
8 | import 'package:flutter/material.dart';
9 | import 'package:flutter_note/main.dart';
10 | import 'package:flutter_test/flutter_test.dart';
11 |
12 | void main() {
13 | testWidgets('Counter increments smoke test', (WidgetTester tester) async {
14 | // Build our app and trigger a frame.
15 | await tester.pumpWidget(MyApp());
16 |
17 | // Verify that our counter starts at 0.
18 | expect(find.text('0'), findsOneWidget);
19 | expect(find.text('1'), findsNothing);
20 |
21 | // Tap the '+' icon and trigger a frame.
22 | await tester.tap(find.byIcon(Icons.add));
23 | await tester.pump();
24 |
25 | // Verify that our counter has incremented.
26 | expect(find.text('0'), findsNothing);
27 | expect(find.text('1'), findsOneWidget);
28 | });
29 | }
30 |
--------------------------------------------------------------------------------
/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/web/favicon.png
--------------------------------------------------------------------------------
/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tentamdin/flutter-note/b1abcd462b8c4b277c537de4489195ffed553b9f/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | flutter_note
30 |
31 |
32 |
33 |
36 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/web/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flutter_note",
3 | "short_name": "flutter_note",
4 | "start_url": ".",
5 | "display": "standalone",
6 | "background_color": "#0175C2",
7 | "theme_color": "#0175C2",
8 | "description": "A new Flutter project.",
9 | "orientation": "portrait-primary",
10 | "prefer_related_applications": false,
11 | "icons": [
12 | {
13 | "src": "icons/Icon-192.png",
14 | "sizes": "192x192",
15 | "type": "image/png"
16 | },
17 | {
18 | "src": "icons/Icon-512.png",
19 | "sizes": "512x512",
20 | "type": "image/png"
21 | }
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------