├── image-search-app
├── ios
│ ├── Flutter
│ │ ├── Debug.xcconfig
│ │ ├── Release.xcconfig
│ │ └── AppFrameworkInfo.plist
│ ├── Runner
│ │ ├── Runner-Bridging-Header.h
│ │ ├── Assets.xcassets
│ │ │ ├── LaunchImage.imageset
│ │ │ │ ├── LaunchImage.png
│ │ │ │ ├── LaunchImage@2x.png
│ │ │ │ ├── LaunchImage@3x.png
│ │ │ │ ├── README.md
│ │ │ │ └── Contents.json
│ │ │ └── AppIcon.appiconset
│ │ │ │ ├── Icon-App-20x20@1x.png
│ │ │ │ ├── Icon-App-20x20@2x.png
│ │ │ │ ├── Icon-App-20x20@3x.png
│ │ │ │ ├── Icon-App-29x29@1x.png
│ │ │ │ ├── Icon-App-29x29@2x.png
│ │ │ │ ├── Icon-App-29x29@3x.png
│ │ │ │ ├── Icon-App-40x40@1x.png
│ │ │ │ ├── Icon-App-40x40@2x.png
│ │ │ │ ├── Icon-App-40x40@3x.png
│ │ │ │ ├── Icon-App-60x60@2x.png
│ │ │ │ ├── Icon-App-60x60@3x.png
│ │ │ │ ├── Icon-App-76x76@1x.png
│ │ │ │ ├── Icon-App-76x76@2x.png
│ │ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ │ ├── Icon-App-83.5x83.5@2x.png
│ │ │ │ └── Contents.json
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── Main.storyboard
│ │ │ └── LaunchScreen.storyboard
│ │ └── Info.plist
│ ├── Runner.xcodeproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ ├── xcshareddata
│ │ │ └── xcschemes
│ │ │ │ └── Runner.xcscheme
│ │ └── project.pbxproj
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── RunnerTests
│ │ └── RunnerTests.swift
│ └── .gitignore
├── build
│ ├── b6b68957fc5ed9202596a46ebc5bde9b
│ │ ├── _composite.stamp
│ │ ├── gen_localizations.stamp
│ │ └── gen_dart_plugin_registrant.stamp
│ └── unit_test_assets
│ │ ├── AssetManifest.json
│ │ ├── NOTICES.Z
│ │ ├── fonts
│ │ └── MaterialIcons-Regular.otf
│ │ ├── packages
│ │ └── cupertino_icons
│ │ │ └── assets
│ │ │ └── CupertinoIcons.ttf
│ │ └── FontManifest.json
├── android
│ ├── app
│ │ ├── src
│ │ │ ├── main
│ │ │ │ ├── res
│ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── drawable
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── drawable-v21
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── values
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── values-night
│ │ │ │ │ │ └── styles.xml
│ │ │ │ ├── kotlin
│ │ │ │ │ └── com
│ │ │ │ │ │ └── example
│ │ │ │ │ │ └── image_search
│ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ └── AndroidManifest.xml
│ │ │ ├── debug
│ │ │ │ └── AndroidManifest.xml
│ │ │ └── profile
│ │ │ │ └── AndroidManifest.xml
│ │ └── build.gradle.kts
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ ├── .gitignore
│ ├── build.gradle.kts
│ └── settings.gradle.kts
├── lib
│ ├── domain
│ │ ├── repository
│ │ │ └── photo_api_repository.dart
│ │ ├── model
│ │ │ └── photo.dart
│ │ └── use_case
│ │ │ └── get_photos_use_case.dart
│ ├── data
│ │ ├── data_source
│ │ │ ├── result.dart
│ │ │ └── pixabay_api.dart
│ │ └── repository
│ │ │ └── photo_api_repository_impl.dart
│ ├── presentation
│ │ └── home
│ │ │ ├── home_ui_event.dart
│ │ │ ├── home_state.dart
│ │ │ ├── components
│ │ │ └── photo_widget.dart
│ │ │ ├── home_view_model.dart
│ │ │ └── home_screen.dart
│ ├── main.dart
│ └── di
│ │ └── provider_setup.dart
├── .gitignore
├── .metadata
├── analysis_options.yaml
├── test
│ ├── ui
│ │ └── home_view_model_test.dart
│ └── data
│ │ └── pixabay_api_test.dart
├── pubspec.yaml
└── README.md
├── note_app
├── ios
│ ├── Runner
│ │ ├── Runner-Bridging-Header.h
│ │ ├── Assets.xcassets
│ │ │ ├── LaunchImage.imageset
│ │ │ │ ├── LaunchImage.png
│ │ │ │ ├── LaunchImage@2x.png
│ │ │ │ ├── LaunchImage@3x.png
│ │ │ │ ├── README.md
│ │ │ │ └── Contents.json
│ │ │ └── AppIcon.appiconset
│ │ │ │ ├── Icon-App-20x20@1x.png
│ │ │ │ ├── Icon-App-20x20@2x.png
│ │ │ │ ├── Icon-App-20x20@3x.png
│ │ │ │ ├── Icon-App-29x29@1x.png
│ │ │ │ ├── Icon-App-29x29@2x.png
│ │ │ │ ├── Icon-App-29x29@3x.png
│ │ │ │ ├── Icon-App-40x40@1x.png
│ │ │ │ ├── Icon-App-40x40@2x.png
│ │ │ │ ├── Icon-App-40x40@3x.png
│ │ │ │ ├── Icon-App-60x60@2x.png
│ │ │ │ ├── Icon-App-60x60@3x.png
│ │ │ │ ├── Icon-App-76x76@1x.png
│ │ │ │ ├── Icon-App-76x76@2x.png
│ │ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ │ ├── Icon-App-83.5x83.5@2x.png
│ │ │ │ └── Contents.json
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── Main.storyboard
│ │ │ └── LaunchScreen.storyboard
│ │ └── Info.plist
│ ├── Flutter
│ │ ├── Debug.xcconfig
│ │ ├── Release.xcconfig
│ │ └── AppFrameworkInfo.plist
│ ├── Runner.xcodeproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── RunnerTests
│ │ └── RunnerTests.swift
│ ├── .gitignore
│ └── Podfile
├── android
│ ├── app
│ │ ├── src
│ │ │ ├── main
│ │ │ │ ├── res
│ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── drawable
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── drawable-v21
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── values
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── values-night
│ │ │ │ │ │ └── styles.xml
│ │ │ │ ├── kotlin
│ │ │ │ │ └── com
│ │ │ │ │ │ └── example
│ │ │ │ │ │ └── flutter_note_app
│ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ └── AndroidManifest.xml
│ │ │ ├── debug
│ │ │ │ └── AndroidManifest.xml
│ │ │ └── profile
│ │ │ │ └── AndroidManifest.xml
│ │ └── build.gradle.kts
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ ├── .gitignore
│ ├── build.gradle.kts
│ └── settings.gradle.kts
├── lib
│ ├── domain
│ │ ├── util
│ │ │ ├── order_type.dart
│ │ │ └── note_order.dart
│ │ ├── repository
│ │ │ └── note_repository.dart
│ │ ├── use_case
│ │ │ ├── add_note_use_case.dart
│ │ │ ├── get_note_use_case.dart
│ │ │ ├── update_note_use_case.dart
│ │ │ ├── delete_note_use_case.dart
│ │ │ ├── use_cases.dart
│ │ │ └── get_notes_use_case.dart
│ │ └── model
│ │ │ └── note.dart
│ ├── ui
│ │ └── colors.dart
│ ├── presentation
│ │ ├── add_edit_note
│ │ │ ├── add_edit_note_ui_event.dart
│ │ │ ├── add_edit_note_event.dart
│ │ │ ├── add_edit_note_view_model.dart
│ │ │ └── add_edit_note_screen.dart
│ │ └── notes
│ │ │ ├── notes_state.dart
│ │ │ ├── notes_event.dart
│ │ │ ├── components
│ │ │ ├── note_item.dart
│ │ │ └── order_section.dart
│ │ │ ├── notes_view_model.dart
│ │ │ └── notes_screen.dart
│ ├── data
│ │ ├── repository
│ │ │ └── note_repository_impl.dart
│ │ └── data_source
│ │ │ └── note_db_helper.dart
│ ├── main.dart
│ └── di
│ │ └── provider_setup.dart
├── .gitignore
├── test
│ ├── data
│ │ └── data_source
│ │ │ └── note_db_helper_test.dart
│ └── domain
│ │ └── use_case
│ │ └── get_notes_use_case_test.dart
├── .metadata
├── analysis_options.yaml
├── pubspec.yaml
└── README.md
├── .metadata
├── .gitignore
└── .github
└── workflows
└── main.yml
/image-search-app/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/image-search-app/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/note_app/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/image-search-app/build/b6b68957fc5ed9202596a46ebc5bde9b/_composite.stamp:
--------------------------------------------------------------------------------
1 | {"inputs":[],"outputs":[]}
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/image-search-app/build/b6b68957fc5ed9202596a46ebc5bde9b/gen_localizations.stamp:
--------------------------------------------------------------------------------
1 | {"inputs":[],"outputs":[]}
--------------------------------------------------------------------------------
/image-search-app/build/b6b68957fc5ed9202596a46ebc5bde9b/gen_dart_plugin_registrant.stamp:
--------------------------------------------------------------------------------
1 | {"inputs":[],"outputs":[]}
--------------------------------------------------------------------------------
/note_app/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/note_app/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/image-search-app/build/unit_test_assets/AssetManifest.json:
--------------------------------------------------------------------------------
1 | {"packages/cupertino_icons/assets/CupertinoIcons.ttf":["packages/cupertino_icons/assets/CupertinoIcons.ttf"]}
--------------------------------------------------------------------------------
/image-search-app/build/unit_test_assets/NOTICES.Z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/build/unit_test_assets/NOTICES.Z
--------------------------------------------------------------------------------
/note_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/note_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/note_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/note_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/note_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/note_app/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/image-search-app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/image-search-app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/image-search-app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/image-search-app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/image-search-app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/image-search-app/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/image-search-app/build/unit_test_assets/fonts/MaterialIcons-Regular.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/build/unit_test_assets/fonts/MaterialIcons-Regular.otf
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/image-search-app/android/app/src/main/kotlin/com/example/image_search/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.image_search
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity : FlutterActivity()
6 |
--------------------------------------------------------------------------------
/note_app/android/app/src/main/kotlin/com/example/flutter_note_app/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.flutter_note_app
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity : FlutterActivity()
6 |
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/note_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/note_app/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/note_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/image-search-app/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/image-search-app/build/unit_test_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/junsuk5/flutter-clean-architecture-course/HEAD/image-search-app/build/unit_test_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf
--------------------------------------------------------------------------------
/image-search-app/build/unit_test_assets/FontManifest.json:
--------------------------------------------------------------------------------
1 | [{"family":"MaterialIcons","fonts":[{"asset":"fonts/MaterialIcons-Regular.otf"}]},{"family":"packages/cupertino_icons/CupertinoIcons","fonts":[{"asset":"packages/cupertino_icons/assets/CupertinoIcons.ttf"}]}]
--------------------------------------------------------------------------------
/note_app/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
6 |
--------------------------------------------------------------------------------
/image-search-app/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
6 |
--------------------------------------------------------------------------------
/image-search-app/lib/domain/repository/photo_api_repository.dart:
--------------------------------------------------------------------------------
1 |
2 | import 'package:image_search/data/data_source/result.dart';
3 | import 'package:image_search/domain/model/photo.dart';
4 |
5 | abstract class PhotoApiRepository {
6 | Future>> fetch(String query);
7 | }
--------------------------------------------------------------------------------
/image-search-app/lib/data/data_source/result.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'result.freezed.dart';
4 |
5 | @freezed
6 | sealed class Result with _$Result {
7 | const factory Result.success(T data) = Success;
8 | const factory Result.error(String e) = Error;
9 | }
--------------------------------------------------------------------------------
/note_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/image-search-app/lib/presentation/home/home_ui_event.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'home_ui_event.freezed.dart';
4 |
5 | @freezed
6 | sealed class HomeUiEvent with _$HomeUiEvent {
7 | const factory HomeUiEvent.showSnackBar(String message) = ShowSnackBar;
8 | }
9 |
10 |
--------------------------------------------------------------------------------
/note_app/lib/domain/util/order_type.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'order_type.freezed.dart';
4 |
5 | @freezed
6 | sealed class OrderType with _$OrderType {
7 | const factory OrderType.ascending() = Ascending;
8 | const factory OrderType.descending() = Descending;
9 | }
10 |
--------------------------------------------------------------------------------
/image-search-app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/note_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/image-search-app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/note_app/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 | .cxx/
9 |
10 | # Remember to never publicly share your keystore.
11 | # See https://flutter.dev/to/reference-keystore
12 | key.properties
13 | **/*.keystore
14 | **/*.jks
15 |
--------------------------------------------------------------------------------
/note_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/note_app/lib/ui/colors.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | const roseBud = Color(0xFFFFAB91);
4 | const primrose = Color(0xFFE7ED9B);
5 | const wisteria = Color(0xFFCF94DA);
6 | const skyBlue = Color(0xFF81DEEA);
7 | const illusion = Color(0xFFF48FB1);
8 |
9 | const darkGray = Color(0xFF202020);
10 | const lightBlue = Color(0xFFD7E8DE);
11 |
--------------------------------------------------------------------------------
/image-search-app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/note_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/image-search-app/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 | .cxx/
9 |
10 | # Remember to never publicly share your keystore.
11 | # See https://flutter.dev/to/reference-keystore
12 | key.properties
13 | **/*.keystore
14 | **/*.jks
15 |
--------------------------------------------------------------------------------
/.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: 18116933e77adc82f80866c928266a5b4f1ed645
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/image-search-app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/note_app/ios/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/image-search-app/ios/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/note_app/lib/domain/repository/note_repository.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_note_app/domain/model/note.dart';
2 |
3 | abstract class NoteRepository {
4 | Future> getNotes();
5 |
6 | Future getNoteById(int id);
7 |
8 | Future insertNote(Note note);
9 |
10 | Future updateNote(Note note);
11 |
12 | Future deleteNote(Note note);
13 | }
14 |
--------------------------------------------------------------------------------
/note_app/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.
--------------------------------------------------------------------------------
/image-search-app/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.
--------------------------------------------------------------------------------
/note_app/lib/domain/use_case/add_note_use_case.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_note_app/domain/model/note.dart';
2 | import 'package:flutter_note_app/domain/repository/note_repository.dart';
3 |
4 | class AddNoteUseCase {
5 | final NoteRepository _repository;
6 |
7 | AddNoteUseCase(this._repository);
8 |
9 | Future call(Note note) async {
10 | await _repository.insertNote(note);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/note_app/lib/domain/use_case/get_note_use_case.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_note_app/domain/model/note.dart';
2 | import 'package:flutter_note_app/domain/repository/note_repository.dart';
3 |
4 | class GetNoteUseCase {
5 | final NoteRepository _repository;
6 |
7 | GetNoteUseCase(this._repository);
8 |
9 | Future call(int id) async {
10 | return await _repository.getNoteById(id);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/note_app/lib/domain/use_case/update_note_use_case.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_note_app/domain/model/note.dart';
2 | import 'package:flutter_note_app/domain/repository/note_repository.dart';
3 |
4 | class UpdateNoteUseCase {
5 | final NoteRepository repository;
6 |
7 | UpdateNoteUseCase(this.repository);
8 |
9 | Future call(Note note) async {
10 | await repository.updateNote(note);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/note_app/lib/presentation/add_edit_note/add_edit_note_ui_event.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'add_edit_note_ui_event.freezed.dart';
4 |
5 | @freezed
6 | sealed class AddEditNoteUiEvent with _$AddEditNoteUiEvent {
7 | const factory AddEditNoteUiEvent.savedNote() = SavedNote;
8 | const factory AddEditNoteUiEvent.showSnackBar(String message) = ShowSnackBar;
9 | }
10 |
--------------------------------------------------------------------------------
/note_app/lib/domain/use_case/delete_note_use_case.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_note_app/domain/model/note.dart';
2 | import 'package:flutter_note_app/domain/repository/note_repository.dart';
3 |
4 | class DeleteNoteUseCase {
5 | final NoteRepository _repository;
6 |
7 | DeleteNoteUseCase(this._repository);
8 |
9 | Future call(Note note) async {
10 | await _repository.deleteNote(note);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/note_app/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/note_app/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/image-search-app/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/image-search-app/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/image-search-app/lib/domain/model/photo.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'photo.freezed.dart';
4 |
5 | part 'photo.g.dart';
6 |
7 | @freezed
8 | abstract class Photo with _$Photo {
9 | factory Photo({
10 | required int id,
11 | required String tags,
12 | required String previewURL,
13 | }) = _Photo;
14 |
15 | factory Photo.fromJson(Map json) => _$PhotoFromJson(json);
16 | }
--------------------------------------------------------------------------------
/note_app/lib/presentation/add_edit_note/add_edit_note_event.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'add_edit_note_event.freezed.dart';
4 |
5 | @freezed
6 | sealed class AddEditNoteEvent with _$AddEditNoteEvent {
7 | const factory AddEditNoteEvent.changeColor(int color) = ChangeColor;
8 | const factory AddEditNoteEvent.saveNote(
9 | int? id,
10 | String title,
11 | String content,
12 | ) = SaveNote;
13 | }
14 |
--------------------------------------------------------------------------------
/note_app/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 |
--------------------------------------------------------------------------------
/note_app/lib/domain/model/note.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'note.freezed.dart';
4 |
5 | part 'note.g.dart';
6 |
7 | @freezed
8 | abstract class Note with _$Note {
9 | factory Note({
10 | required String title,
11 | required String content,
12 | required int color,
13 | required int timestamp,
14 | int? id,
15 | }) = _Note;
16 |
17 | factory Note.fromJson(Map json) => _$NoteFromJson(json);
18 | }
19 |
--------------------------------------------------------------------------------
/image-search-app/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 |
--------------------------------------------------------------------------------
/note_app/lib/domain/util/note_order.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_note_app/domain/util/order_type.dart';
2 | import 'package:freezed_annotation/freezed_annotation.dart';
3 |
4 | part 'note_order.freezed.dart';
5 |
6 | @freezed
7 | sealed class NoteOrder with _$NoteOrder {
8 | const factory NoteOrder.title(OrderType orderType) = NoteOrderTitle;
9 | const factory NoteOrder.date(OrderType orderType) = NoteOrderDate;
10 | const factory NoteOrder.color(OrderType orderType) = NoteOrderColor;
11 | }
12 |
--------------------------------------------------------------------------------
/image-search-app/lib/presentation/home/home_state.dart:
--------------------------------------------------------------------------------
1 | import 'package:image_search/domain/model/photo.dart';
2 | import 'package:freezed_annotation/freezed_annotation.dart';
3 |
4 | part 'home_state.freezed.dart';
5 |
6 | part 'home_state.g.dart';
7 |
8 | @freezed
9 | abstract class HomeState with _$HomeState {
10 | factory HomeState(
11 | List photos,
12 | bool isLoading,
13 | ) = _HomeState;
14 |
15 | factory HomeState.fromJson(Map json) => _$HomeStateFromJson(json);
16 | }
--------------------------------------------------------------------------------
/note_app/lib/presentation/notes/notes_state.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_note_app/domain/model/note.dart';
2 | import 'package:flutter_note_app/domain/util/note_order.dart';
3 | import 'package:freezed_annotation/freezed_annotation.dart';
4 |
5 | part 'notes_state.freezed.dart';
6 |
7 | @freezed
8 | abstract class NotesState with _$NotesState {
9 | factory NotesState({
10 | required List notes,
11 | required NoteOrder noteOrder,
12 | required bool isOrderSectionVisible,
13 | }) = _NotesState;
14 | }
15 |
--------------------------------------------------------------------------------
/note_app/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/image-search-app/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/note_app/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/image-search-app/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/note_app/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 |
--------------------------------------------------------------------------------
/image-search-app/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 |
--------------------------------------------------------------------------------
/note_app/android/build.gradle.kts:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | }
6 | }
7 |
8 | val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get()
9 | rootProject.layout.buildDirectory.value(newBuildDir)
10 |
11 | subprojects {
12 | val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
13 | project.layout.buildDirectory.value(newSubprojectBuildDir)
14 | }
15 | subprojects {
16 | project.evaluationDependsOn(":app")
17 | }
18 |
19 | tasks.register("clean") {
20 | delete(rootProject.layout.buildDirectory)
21 | }
22 |
--------------------------------------------------------------------------------
/image-search-app/android/build.gradle.kts:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | }
6 | }
7 |
8 | val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get()
9 | rootProject.layout.buildDirectory.value(newBuildDir)
10 |
11 | subprojects {
12 | val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
13 | project.layout.buildDirectory.value(newSubprojectBuildDir)
14 | }
15 | subprojects {
16 | project.evaluationDependsOn(":app")
17 | }
18 |
19 | tasks.register("clean") {
20 | delete(rootProject.layout.buildDirectory)
21 | }
22 |
--------------------------------------------------------------------------------
/note_app/lib/presentation/notes/notes_event.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_note_app/domain/model/note.dart';
2 | import 'package:flutter_note_app/domain/util/note_order.dart';
3 | import 'package:freezed_annotation/freezed_annotation.dart';
4 |
5 | part 'notes_event.freezed.dart';
6 |
7 | @freezed
8 | sealed class NotesEvent with _$NotesEvent {
9 | const factory NotesEvent.loadNotes() = LoadNotes;
10 | const factory NotesEvent.deleteNote(Note note) = DeleteNote;
11 | const factory NotesEvent.restoreNote() = RestoreNote;
12 | const factory NotesEvent.changeOrder(NoteOrder noteOrder) = ChangeOrder;
13 | const factory NotesEvent.toggleOrderSection() = ToggleOrderSection;
14 | }
15 |
--------------------------------------------------------------------------------
/image-search-app/lib/presentation/home/components/photo_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:image_search/domain/model/photo.dart';
3 |
4 | class PhotoWidget extends StatelessWidget {
5 | final Photo photo;
6 |
7 | const PhotoWidget({
8 | super.key,
9 | required this.photo,
10 | });
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | return Container(
15 | decoration: BoxDecoration(
16 | borderRadius: const BorderRadius.all(Radius.circular(16.0)),
17 | image: DecorationImage(
18 | fit: BoxFit.cover,
19 | image: NetworkImage(photo.previewURL),
20 | ),
21 | ),
22 | );
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/note_app/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/image-search-app/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/image-search-app/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:image_search/di/provider_setup.dart';
3 | import 'package:image_search/presentation/home/home_screen.dart';
4 | import 'package:provider/provider.dart';
5 |
6 | void main() {
7 | runApp(
8 | MultiProvider(
9 | providers: globalProviders,
10 | child: const MyApp(),
11 | ),
12 | );
13 | }
14 |
15 | class MyApp extends StatelessWidget {
16 | const MyApp({super.key});
17 |
18 | // This widget is the root of your application.
19 | @override
20 | Widget build(BuildContext context) {
21 | return MaterialApp(
22 | title: 'Flutter Demo',
23 | theme: ThemeData(
24 | primarySwatch: Colors.blue,
25 | ),
26 | home: const HomeScreen(),
27 | );
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/image-search-app/lib/data/repository/photo_api_repository_impl.dart:
--------------------------------------------------------------------------------
1 | import 'package:image_search/data/data_source/pixabay_api.dart';
2 | import 'package:image_search/data/data_source/result.dart';
3 | import 'package:image_search/domain/model/photo.dart';
4 | import 'package:image_search/domain/repository/photo_api_repository.dart';
5 |
6 | class PhotoApiRepositoryImpl implements PhotoApiRepository {
7 | PixabayApi api;
8 |
9 | PhotoApiRepositoryImpl(this.api);
10 |
11 | @override
12 | Future>> fetch(String query) async {
13 | final Result result = await api.fetch(query);
14 |
15 | return switch (result) {
16 | Success(:final data) => Result.success(data.map((e) => Photo.fromJson(e)).toList()),
17 | Error(:final e) => Result.error(e),
18 | };
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/note_app/lib/domain/use_case/use_cases.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_note_app/domain/use_case/add_note_use_case.dart';
2 | import 'package:flutter_note_app/domain/use_case/delete_note_use_case.dart';
3 | import 'package:flutter_note_app/domain/use_case/get_note_use_case.dart';
4 | import 'package:flutter_note_app/domain/use_case/get_notes_use_case.dart';
5 | import 'package:flutter_note_app/domain/use_case/update_note_use_case.dart';
6 |
7 | class UseCases {
8 | final AddNoteUseCase addNote;
9 | final DeleteNoteUseCase deleteNote;
10 | final GetNoteUseCase getNote;
11 | final GetNotesUseCase getNotes;
12 | final UpdateNoteUseCase updateNote;
13 |
14 | UseCases({
15 | required this.addNote,
16 | required this.deleteNote,
17 | required this.getNote,
18 | required this.getNotes,
19 | required this.updateNote,
20 | });
21 | }
22 |
--------------------------------------------------------------------------------
/image-search-app/lib/data/data_source/pixabay_api.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:http/http.dart' as http;
4 | import 'package:image_search/data/data_source/result.dart';
5 |
6 | class PixabayApi {
7 | final http.Client client;
8 |
9 | PixabayApi(this.client);
10 |
11 | static const baseUrl = 'https://pixabay.com/api/';
12 | static const key = '10711147-dc41758b93b263957026bdadb';
13 |
14 | Future> fetch(String query) async {
15 | try {
16 | final response = await client
17 | .get(Uri.parse('$baseUrl?key=$key&q=$query&image_type=photo'));
18 | Map jsonResponse = jsonDecode(response.body);
19 | Iterable hits = jsonResponse['hits'];
20 | return Result.success(hits);
21 | } catch (e) {
22 | return const Result.error('네트워크 에러');
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/note_app/android/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | val flutterSdkPath = run {
3 | val properties = java.util.Properties()
4 | file("local.properties").inputStream().use { properties.load(it) }
5 | val flutterSdkPath = properties.getProperty("flutter.sdk")
6 | require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
7 | flutterSdkPath
8 | }
9 |
10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
11 |
12 | repositories {
13 | google()
14 | mavenCentral()
15 | gradlePluginPortal()
16 | }
17 | }
18 |
19 | plugins {
20 | id("dev.flutter.flutter-plugin-loader") version "1.0.0"
21 | id("com.android.application") version "8.7.3" apply false
22 | id("org.jetbrains.kotlin.android") version "2.1.0" apply false
23 | }
24 |
25 | include(":app")
26 |
--------------------------------------------------------------------------------
/image-search-app/android/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | val flutterSdkPath = run {
3 | val properties = java.util.Properties()
4 | file("local.properties").inputStream().use { properties.load(it) }
5 | val flutterSdkPath = properties.getProperty("flutter.sdk")
6 | require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
7 | flutterSdkPath
8 | }
9 |
10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
11 |
12 | repositories {
13 | google()
14 | mavenCentral()
15 | gradlePluginPortal()
16 | }
17 | }
18 |
19 | plugins {
20 | id("dev.flutter.flutter-plugin-loader") version "1.0.0"
21 | id("com.android.application") version "8.7.3" apply false
22 | id("org.jetbrains.kotlin.android") version "2.1.0" apply false
23 | }
24 |
25 | include(":app")
26 |
--------------------------------------------------------------------------------
/note_app/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 | 9.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/image-search-app/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 | 9.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/image-search-app/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .build/
9 | .buildlog/
10 | .history
11 | .svn/
12 | .swiftpm/
13 | migrate_working_dir/
14 |
15 | # IntelliJ related
16 | *.iml
17 | *.ipr
18 | *.iws
19 | .idea/
20 |
21 | # The .vscode folder contains launch configuration and tasks you configure in
22 | # VS Code which you may wish to be included in version control, so this line
23 | # is commented out by default.
24 | #.vscode/
25 |
26 | # Flutter/Dart/Pub related
27 | **/doc/api/
28 | **/ios/Flutter/.last_build_id
29 | .dart_tool/
30 | .flutter-plugins
31 | .flutter-plugins-dependencies
32 | .pub-cache/
33 | .pub/
34 | /build/
35 |
36 | # Symbolication related
37 | app.*.symbols
38 |
39 | # Obfuscation related
40 | app.*.map.json
41 |
42 | # Android Studio will place build artifacts here
43 | /android/app/debug
44 | /android/app/profile
45 | /android/app/release
46 |
--------------------------------------------------------------------------------
/note_app/.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 | .claude
--------------------------------------------------------------------------------
/note_app/lib/data/repository/note_repository_impl.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_note_app/data/data_source/note_db_helper.dart';
2 | import 'package:flutter_note_app/domain/model/note.dart';
3 | import 'package:flutter_note_app/domain/repository/note_repository.dart';
4 |
5 | class NoteRepositoryImpl implements NoteRepository {
6 | final NoteDbHelper _db;
7 |
8 | NoteRepositoryImpl(this._db);
9 |
10 | @override
11 | Future deleteNote(Note note) async {
12 | await _db.deleteNote(note);
13 | }
14 |
15 | @override
16 | Future getNoteById(int id) async {
17 | return await _db.getNoteById(id);
18 | }
19 |
20 | @override
21 | Future> getNotes() async {
22 | return await _db.getNotes();
23 | }
24 |
25 | @override
26 | Future insertNote(Note note) async {
27 | await _db.insertNote(note);
28 | }
29 |
30 | @override
31 | Future updateNote(Note note) async {
32 | await _db.updateNote(note);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/image-search-app/lib/domain/use_case/get_photos_use_case.dart:
--------------------------------------------------------------------------------
1 | import 'dart:math';
2 |
3 | import 'package:image_search/data/data_source/result.dart';
4 | import 'package:image_search/domain/model/photo.dart';
5 | import 'package:image_search/domain/repository/photo_api_repository.dart';
6 |
7 | class GetPhotosUseCase {
8 | // 캡슐화
9 | final PhotoApiRepository _repository;
10 |
11 | GetPhotosUseCase(this._repository);
12 |
13 | Future>> call(String query) async {
14 | final result = await _repository.fetch(query);
15 |
16 | return switch (result) {
17 | // Success(:final data) => Result.success(data.sublist(0, min(3, data.length))),
18 | // Error(:final e) => Result.error(e),
19 | // 위 코드와 아래 코드는 동일함. 편한거 쓰면 됨
20 | //
21 | Success>() => Result.success(
22 | result.data.sublist(0, min(3, result.data.length)),
23 | ),
24 | Error>() => Result.error(result.e),
25 | };
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/.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 | .idea/
49 | *.g.dart
50 | *.mocks.dart
51 | *.freezed.dart
--------------------------------------------------------------------------------
/note_app/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/note_app/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/image-search-app/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/image-search-app/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | # This is a basic workflow to help you get started with Actions
2 |
3 | name: CI
4 |
5 | # Controls when the workflow will run
6 | on:
7 | # Triggers the workflow on push or pull request events but only for the "master" branch
8 | push:
9 | branches: [ "master" ]
10 | pull_request:
11 | branches: [ "master" ]
12 |
13 | # Allows you to run this workflow manually from the Actions tab
14 | workflow_dispatch:
15 |
16 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
17 | jobs:
18 | # This workflow contains a single job called "build"
19 | build:
20 | # The type of runner that the job will run on
21 | runs-on: ubuntu-latest
22 |
23 | # Steps represent a sequence of tasks that will be executed as part of the job
24 | steps:
25 | - uses: actions/checkout@v3
26 | - uses: actions/setup-java@v2
27 | with:
28 | distribution: 'zulu'
29 | java-version: '11'
30 | - uses: subosito/flutter-action@v2
31 | with:
32 | channel: 'stable'
33 | - run: flutter pub get
34 | - run: flutter test
35 | # - run: flutter build apk
36 | # - run: flutter build appbundle
37 |
38 |
--------------------------------------------------------------------------------
/note_app/lib/data/data_source/note_db_helper.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_note_app/domain/model/note.dart';
2 | import 'package:sqflite/sqflite.dart';
3 |
4 | class NoteDbHelper {
5 | final Database _db;
6 |
7 | NoteDbHelper(this._db);
8 |
9 | Future getNoteById(int id) async {
10 | // SELECT * FROM note WHERE id = 1
11 | final List