├── 2_flutter ├── linux │ ├── .gitignore │ ├── main.cc │ ├── flutter │ │ ├── generated_plugin_registrant.cc │ │ ├── generated_plugin_registrant.h │ │ └── generated_plugins.cmake │ └── my_application.h ├── 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 │ │ └── AppDelegate.swift │ ├── Runner.xcodeproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ └── IDEWorkspaceChecks.plist │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ └── IDEWorkspaceChecks.plist │ └── .gitignore ├── macos │ ├── Flutter │ │ ├── Flutter-Debug.xcconfig │ │ ├── Flutter-Release.xcconfig │ │ └── GeneratedPluginRegistrant.swift │ ├── Runner │ │ ├── Configs │ │ │ ├── Debug.xcconfig │ │ │ ├── Release.xcconfig │ │ │ ├── Warnings.xcconfig │ │ │ └── AppInfo.xcconfig │ │ ├── Assets.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ ├── app_icon_128.png │ │ │ │ ├── app_icon_16.png │ │ │ │ ├── app_icon_256.png │ │ │ │ ├── app_icon_32.png │ │ │ │ ├── app_icon_512.png │ │ │ │ ├── app_icon_64.png │ │ │ │ └── app_icon_1024.png │ │ ├── AppDelegate.swift │ │ ├── Release.entitlements │ │ ├── DebugProfile.entitlements │ │ └── MainFlutterWindow.swift │ ├── .gitignore │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── Runner.xcodeproj │ │ └── project.xcworkspace │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── android │ ├── gradle.properties │ ├── 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 │ │ │ └── kotlin │ │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── basics │ │ │ │ └── MainActivity.kt │ │ │ │ └── flutterbasics │ │ │ │ └── MainActivity.kt │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── .gitignore │ ├── settings.gradle │ └── build.gradle ├── assets │ └── max.jpeg ├── web │ ├── favicon.png │ ├── icons │ │ ├── Icon-192.png │ │ ├── Icon-512.png │ │ ├── Icon-maskable-192.png │ │ └── Icon-maskable-512.png │ └── manifest.json ├── windows │ ├── runner │ │ ├── resources │ │ │ └── app_icon.ico │ │ ├── resource.h │ │ ├── utils.h │ │ ├── runner.exe.manifest │ │ └── flutter_window.h │ ├── flutter │ │ ├── generated_plugin_registrant.cc │ │ ├── generated_plugin_registrant.h │ │ └── generated_plugins.cmake │ └── .gitignore ├── lib │ ├── application │ │ └── theme_service.dart │ ├── presentation │ │ ├── widget_examples │ │ │ └── widgets │ │ │ │ ├── first_column_child.dart │ │ │ │ ├── media_query_example.dart │ │ │ │ ├── max_berktold.dart │ │ │ │ ├── hello_world.dart │ │ │ │ ├── max_steffen.dart │ │ │ │ ├── layout_builder_example.dart │ │ │ │ └── row_expanded_example.dart │ │ ├── theme_animation │ │ │ └── widgets │ │ │ │ ├── sun_shine.dart │ │ │ │ ├── star.dart │ │ │ │ ├── moon.dart │ │ │ │ └── sun.dart │ │ ├── navigation_example_screens │ │ │ ├── screen_two.dart │ │ │ └── screen_one.dart │ │ └── list │ │ │ ├── list_screen.dart │ │ │ └── widgets │ │ │ └── list_item.dart │ └── theme.dart ├── README.md ├── .gitignore └── .metadata ├── 3_advicer ├── linux │ ├── .gitignore │ ├── main.cc │ ├── flutter │ │ ├── generated_plugin_registrant.cc │ │ ├── generated_plugin_registrant.h │ │ └── generated_plugins.cmake │ └── my_application.h ├── lib │ ├── 2_application │ │ ├── core │ │ │ ├── widgets │ │ │ │ └── .gitkeep │ │ │ └── services │ │ │ │ └── theme_service.dart │ │ └── pages │ │ │ └── advice │ │ │ ├── bloc │ │ │ ├── advicer_event.dart │ │ │ ├── advicer_state.dart │ │ │ └── advicer_bloc.dart │ │ │ ├── cubit │ │ │ └── advicer_state.dart │ │ │ └── widgets │ │ │ ├── error_message.dart │ │ │ ├── advice_field.dart │ │ │ └── custom_button.dart │ ├── 0_data │ │ ├── exceptions │ │ │ └── exceptions.dart │ │ ├── models │ │ │ └── advice_model.dart │ │ └── repositories │ │ │ └── advice_repo_impl.dart │ ├── 1_domain │ │ ├── repositories │ │ │ └── advice_repo.dart │ │ ├── entities │ │ │ └── advice_entity.dart │ │ ├── failures │ │ │ └── failures.dart │ │ └── usecases │ │ │ └── advice_usecases.dart │ └── main.dart ├── 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 │ │ └── AppDelegate.swift │ ├── Flutter │ │ ├── Debug.xcconfig │ │ ├── Release.xcconfig │ │ └── AppFrameworkInfo.plist │ ├── Runner.xcodeproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ └── IDEWorkspaceChecks.plist │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ └── IDEWorkspaceChecks.plist │ ├── Podfile.lock │ └── .gitignore ├── android │ ├── gradle.properties │ ├── 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 │ │ │ └── kotlin │ │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── advicer │ │ │ │ └── MainActivity.kt │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── .gitignore │ ├── settings.gradle │ └── build.gradle ├── macos │ ├── Runner │ │ ├── Configs │ │ │ ├── Debug.xcconfig │ │ │ ├── Release.xcconfig │ │ │ ├── Warnings.xcconfig │ │ │ └── AppInfo.xcconfig │ │ ├── Assets.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ ├── app_icon_128.png │ │ │ │ ├── app_icon_16.png │ │ │ │ ├── app_icon_256.png │ │ │ │ ├── app_icon_32.png │ │ │ │ ├── app_icon_512.png │ │ │ │ ├── app_icon_64.png │ │ │ │ └── app_icon_1024.png │ │ ├── AppDelegate.swift │ │ ├── Release.entitlements │ │ ├── DebugProfile.entitlements │ │ └── MainFlutterWindow.swift │ ├── .gitignore │ ├── Flutter │ │ ├── Flutter-Debug.xcconfig │ │ ├── Flutter-Release.xcconfig │ │ └── GeneratedPluginRegistrant.swift │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── Runner.xcodeproj │ │ └── project.xcworkspace │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── web │ ├── favicon.png │ ├── icons │ │ ├── Icon-192.png │ │ ├── Icon-512.png │ │ ├── Icon-maskable-192.png │ │ └── Icon-maskable-512.png │ └── manifest.json ├── windows │ ├── runner │ │ ├── resources │ │ │ └── app_icon.ico │ │ ├── resource.h │ │ ├── utils.h │ │ ├── runner.exe.manifest │ │ └── flutter_window.h │ ├── flutter │ │ ├── generated_plugin_registrant.cc │ │ ├── generated_plugin_registrant.h │ │ └── generated_plugins.cmake │ └── .gitignore ├── test │ └── 2_application │ │ └── pages │ │ └── advice │ │ ├── widgets │ │ └── goldens │ │ │ ├── custom_button_disabled.png │ │ │ └── custom_button_enabled.png │ │ └── bloc │ │ └── advicer_bloc_test.dart ├── README.md ├── .gitignore ├── pubspec.yaml └── .metadata ├── .fvm ├── flutter_sdk └── fvm_config.json ├── 5_todo_app ├── linux │ ├── .gitignore │ ├── main.cc │ ├── flutter │ │ ├── generated_plugin_registrant.h │ │ ├── generated_plugin_registrant.cc │ │ └── generated_plugins.cmake │ └── my_application.h ├── 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 │ │ └── AppDelegate.swift │ ├── Flutter │ │ ├── Debug.xcconfig │ │ ├── Release.xcconfig │ │ └── AppFrameworkInfo.plist │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ └── IDEWorkspaceChecks.plist │ ├── Runner.xcodeproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ └── IDEWorkspaceChecks.plist │ └── .gitignore ├── android │ ├── gradle.properties │ ├── 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 │ │ │ ├── kotlin │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── todo_app │ │ │ │ │ └── MainActivity.kt │ │ │ └── java │ │ │ │ └── io │ │ │ │ └── flutter │ │ │ │ └── app │ │ │ │ └── FlutterMultiDexApplication.java │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── .gitignore │ ├── settings.gradle │ └── build.gradle ├── macos │ ├── Runner │ │ ├── Configs │ │ │ ├── Debug.xcconfig │ │ │ ├── Release.xcconfig │ │ │ ├── Warnings.xcconfig │ │ │ └── AppInfo.xcconfig │ │ ├── Assets.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ ├── app_icon_16.png │ │ │ │ ├── app_icon_32.png │ │ │ │ ├── app_icon_64.png │ │ │ │ ├── app_icon_1024.png │ │ │ │ ├── app_icon_128.png │ │ │ │ ├── app_icon_256.png │ │ │ │ └── app_icon_512.png │ │ ├── AppDelegate.swift │ │ ├── Release.entitlements │ │ ├── DebugProfile.entitlements │ │ └── MainFlutterWindow.swift │ ├── .gitignore │ ├── Flutter │ │ ├── Flutter-Debug.xcconfig │ │ └── Flutter-Release.xcconfig │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── Runner.xcodeproj │ │ └── project.xcworkspace │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── web │ ├── favicon.png │ ├── icons │ │ ├── Icon-192.png │ │ ├── Icon-512.png │ │ ├── Icon-maskable-192.png │ │ └── Icon-maskable-512.png │ └── manifest.json ├── test │ └── goldens │ │ ├── ci │ │ ├── home_page_large.png │ │ ├── home_page_medium.png │ │ └── home_page_small.png │ │ └── macos │ │ ├── home_page_large.png │ │ ├── home_page_small.png │ │ └── home_page_medium.png ├── windows │ ├── runner │ │ ├── resources │ │ │ └── app_icon.ico │ │ ├── resource.h │ │ ├── utils.h │ │ ├── runner.exe.manifest │ │ └── flutter_window.h │ ├── .gitignore │ └── flutter │ │ ├── generated_plugin_registrant.h │ │ ├── generated_plugins.cmake │ │ └── generated_plugin_registrant.cc ├── firebase.json ├── lib │ ├── 2_application │ │ ├── app │ │ │ ├── cubit │ │ │ │ ├── auth_cubit_state.dart │ │ │ │ └── auth_cubit.dart │ │ │ └── basic_app.dart │ │ ├── core │ │ │ ├── page_config.dart │ │ │ └── form_value.dart │ │ ├── pages │ │ │ ├── overview │ │ │ │ ├── view_states │ │ │ │ │ ├── todo_overview_loading.dart │ │ │ │ │ └── todo_overview_error.dart │ │ │ │ └── bloc │ │ │ │ │ └── todo_overview_cubit_state.dart │ │ │ ├── detail │ │ │ │ ├── view_states │ │ │ │ │ ├── todo_detail_loading.dart │ │ │ │ │ └── todo_detail_error.dart │ │ │ │ └── bloc │ │ │ │ │ └── todo_detail_cubit_state.dart │ │ │ ├── home │ │ │ │ └── bloc │ │ │ │ │ ├── navigation_todo_cubit_state.dart │ │ │ │ │ └── navigation_todo_cubit.dart │ │ │ ├── create_todo_entry │ │ │ │ └── bloc │ │ │ │ │ └── create_todo_entry_page_state.dart │ │ │ ├── dashboard │ │ │ │ └── dashboard_page.dart │ │ │ ├── create_todo_collection │ │ │ │ └── bloc │ │ │ │ │ └── create_todo_collection_page_state.dart │ │ │ └── settings │ │ │ │ └── settings_page.dart │ │ └── components │ │ │ └── todo_entry_item │ │ │ ├── view_states │ │ │ ├── todo_entry_item_error.dart │ │ │ ├── todo_entry_item_loading.dart │ │ │ └── todo_entry_item_loaded.dart │ │ │ └── bloc │ │ │ └── todo_entry_item_cubit_state.dart │ ├── 1_domain │ │ ├── entities │ │ │ ├── todo_color.dart │ │ │ ├── todo_collection.dart │ │ │ └── todo_entry.dart │ │ ├── failures │ │ │ └── failures.dart │ │ ├── use_cases │ │ │ ├── create_todo_collection.dart │ │ │ ├── create_todo_entry.dart │ │ │ ├── load_todo_collections.dart │ │ │ ├── load_todo_entry.dart │ │ │ ├── update_todo_entry.dart │ │ │ └── load_todo_entry_ids_for_collection.dart │ │ └── repositories │ │ │ └── todo_repository.dart │ ├── main_mock.dart │ └── 0_data │ │ ├── exceptions │ │ └── exceptions.dart │ │ ├── models │ │ ├── todo_entry_model.g.dart │ │ ├── todo_entry_model.dart │ │ ├── todo_collection_model.dart │ │ └── todo_collection_model.g.dart │ │ └── data_sources │ │ ├── mapper │ │ ├── todo_entry_mapper.dart │ │ └── todo_collection_mapper.dart │ │ └── interfaces │ │ └── todo_local_data_source_interface.dart ├── README.md ├── assets │ └── translations │ │ ├── en.json │ │ └── de.json ├── .gitignore └── .metadata ├── .fvmrc ├── 1_dart ├── 01_hello_world.dart ├── 04_arithmetic_operators.dart ├── 08_while_loop.dart ├── 09_do_while.dart ├── 12_methods.dart ├── 02_variables.dart ├── 07_switch_case.dart ├── 10_for_loop.dart ├── 06_if_case.dart ├── 13_methods_return.dart ├── 17_constructors.dart ├── 05_list_maps.dart ├── 11_for_each.dart ├── 14_obejct_oriented_programming.dart ├── 16_getter_setter_visibility.dart └── 03_data_types.dart ├── .vscode └── settings.json ├── .idea ├── codeStyles │ ├── codeStyleConfig.xml │ └── Project.xml ├── vcs.xml ├── .gitignore └── modules.xml ├── gitignore └── .gitignore /2_flutter/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /3_advicer/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /.fvm/flutter_sdk: -------------------------------------------------------------------------------- 1 | /Users/msteffen/fvm/versions/3.27.3 -------------------------------------------------------------------------------- /3_advicer/lib/2_application/core/widgets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /5_todo_app/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /.fvm/fvm_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "flutterSdkVersion": "3.27.3" 3 | } -------------------------------------------------------------------------------- /.fvmrc: -------------------------------------------------------------------------------- 1 | { 2 | "flutter": "3.27.3", 3 | "flavors": {} 4 | } -------------------------------------------------------------------------------- /2_flutter/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /2_flutter/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /1_dart/01_hello_world.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | print('Hello World!'); 3 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "dart.flutterSdkPath": ".fvm/versions/3.27.3" 3 | } -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /2_flutter/macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "ephemeral/Flutter-Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /2_flutter/macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "ephemeral/Flutter-Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /2_flutter/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /2_flutter/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /3_advicer/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /3_advicer/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /5_todo_app/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /1_dart/04_arithmetic_operators.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | double number = (42 - 4 + 2 * 2) / 2; 3 | print('result: $number'); 4 | } 5 | -------------------------------------------------------------------------------- /2_flutter/assets/max.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/assets/max.jpeg -------------------------------------------------------------------------------- /2_flutter/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /2_flutter/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/web/favicon.png -------------------------------------------------------------------------------- /3_advicer/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /3_advicer/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/web/favicon.png -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /5_todo_app/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/web/favicon.png -------------------------------------------------------------------------------- /2_flutter/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /3_advicer/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /2_flutter/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/web/icons/Icon-192.png -------------------------------------------------------------------------------- /2_flutter/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/web/icons/Icon-512.png -------------------------------------------------------------------------------- /3_advicer/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/web/icons/Icon-192.png -------------------------------------------------------------------------------- /3_advicer/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/web/icons/Icon-512.png -------------------------------------------------------------------------------- /5_todo_app/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /3_advicer/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /3_advicer/lib/0_data/exceptions/exceptions.dart: -------------------------------------------------------------------------------- 1 | class ServerException implements Exception {} 2 | 3 | class CacheExceptions implements Exception {} 4 | -------------------------------------------------------------------------------- /5_todo_app/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /5_todo_app/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/web/icons/Icon-192.png -------------------------------------------------------------------------------- /5_todo_app/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/web/icons/Icon-512.png -------------------------------------------------------------------------------- /3_advicer/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /5_todo_app/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /2_flutter/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /2_flutter/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /3_advicer/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /3_advicer/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /5_todo_app/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /5_todo_app/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /1_dart/08_while_loop.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | int number = 1; 3 | 4 | while (number < 100) { 5 | print('current $number.'); 6 | number += 2; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /1_dart/09_do_while.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | int number = 1; 3 | do { 4 | print(number); 5 | number++; 6 | print(number); 7 | } while (number < 6); 8 | } 9 | -------------------------------------------------------------------------------- /2_flutter/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /3_advicer/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /5_todo_app/test/goldens/ci/home_page_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/test/goldens/ci/home_page_large.png -------------------------------------------------------------------------------- /5_todo_app/test/goldens/ci/home_page_medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/test/goldens/ci/home_page_medium.png -------------------------------------------------------------------------------- /5_todo_app/test/goldens/ci/home_page_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/test/goldens/ci/home_page_small.png -------------------------------------------------------------------------------- /3_advicer/macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /3_advicer/macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /5_todo_app/macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /5_todo_app/test/goldens/macos/home_page_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/test/goldens/macos/home_page_large.png -------------------------------------------------------------------------------- /5_todo_app/test/goldens/macos/home_page_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/test/goldens/macos/home_page_small.png -------------------------------------------------------------------------------- /5_todo_app/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /5_todo_app/firebase.json: -------------------------------------------------------------------------------- 1 | {"flutter":{"platforms":{"dart":{"lib/firebase_options.dart":{"projectId":"todo-app-58ccb","configurations":{"web":"1:682595318529:web:516468ed94c10fb93a7900"}}}}}} -------------------------------------------------------------------------------- /5_todo_app/macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /5_todo_app/test/goldens/macos/home_page_medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/test/goldens/macos/home_page_medium.png -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /2_flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /2_flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /3_advicer/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /3_advicer/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /2_flutter/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /2_flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /3_advicer/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /3_advicer/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /5_todo_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /5_todo_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /5_todo_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /2_flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /3_advicer/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /5_todo_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /5_todo_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /2_flutter/android/app/src/main/kotlin/com/example/basics/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.basics 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /3_advicer/android/app/src/main/kotlin/com/example/advicer/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.advicer 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | -------------------------------------------------------------------------------- /2_flutter/linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /3_advicer/linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /5_todo_app/android/app/src/main/kotlin/com/example/todo_app/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package dev.max_steffen.todo 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /5_todo_app/linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /2_flutter/android/app/src/main/kotlin/com/example/flutterbasics/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.flutterbasics 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2_flutter/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /2_flutter/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /3_advicer/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /5_todo_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/2_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/5_todo_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /2_flutter/macos/Flutter/GeneratedPluginRegistrant.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | import FlutterMacOS 6 | import Foundation 7 | 8 | 9 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { 10 | } 11 | -------------------------------------------------------------------------------- /3_advicer/macos/Flutter/GeneratedPluginRegistrant.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | import FlutterMacOS 6 | import Foundation 7 | 8 | 9 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { 10 | } 11 | -------------------------------------------------------------------------------- /3_advicer/test/2_application/pages/advice/widgets/goldens/custom_button_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/test/2_application/pages/advice/widgets/goldens/custom_button_disabled.png -------------------------------------------------------------------------------- /3_advicer/test/2_application/pages/advice/widgets/goldens/custom_button_enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenSphereSoftware/FlutterMadeEasy_ZeroToMastery/HEAD/3_advicer/test/2_application/pages/advice/widgets/goldens/custom_button_enabled.png -------------------------------------------------------------------------------- /1_dart/12_methods.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | print("before"); 3 | pow(4); 4 | print("after"); 5 | pow(60); 6 | pow(40); 7 | pow(2); 8 | } 9 | 10 | void pow(int x) { 11 | int y = x * x; 12 | print('result of method: ${y}'); 13 | } 14 | -------------------------------------------------------------------------------- /2_flutter/linux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void fl_register_plugins(FlPluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /3_advicer/linux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void fl_register_plugins(FlPluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /2_flutter/windows/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void RegisterPlugins(flutter::PluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /3_advicer/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-7.4-all.zip 6 | -------------------------------------------------------------------------------- /3_advicer/windows/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void RegisterPlugins(flutter::PluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /1_dart/02_variables.dart: -------------------------------------------------------------------------------- 1 | void main(){ 2 | 3 | int outputInt = 2; // initialization 4 | 5 | print('outputInt: $outputInt.'); 6 | 7 | late int lateOutputInt; // declaration 8 | lateOutputInt = 42; // allocation 9 | print('lateOutputInt: $lateOutputInt'); 10 | } -------------------------------------------------------------------------------- /5_todo_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-7.5-all.zip 6 | -------------------------------------------------------------------------------- /2_flutter/lib/application/theme_service.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ThemeService extends ChangeNotifier { 4 | bool isDarkModeOn = false; 5 | 6 | void toggleTheme() { 7 | isDarkModeOn = !isDarkModeOn; 8 | notifyListeners(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /3_advicer/lib/2_application/pages/advice/bloc/advicer_event.dart: -------------------------------------------------------------------------------- 1 | part of 'advicer_bloc.dart'; 2 | 3 | @immutable 4 | abstract class AdvicerEvent extends Equatable { 5 | @override 6 | List get props => []; 7 | } 8 | 9 | class AdviceRequestedEvent extends AdvicerEvent {} 10 | -------------------------------------------------------------------------------- /2_flutter/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /3_advicer/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /2_flutter/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-7.4-all.zip 7 | -------------------------------------------------------------------------------- /3_advicer/lib/2_application/core/services/theme_service.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ThemeService extends ChangeNotifier { 4 | bool isDarkModeOn = false; 5 | 6 | void toggleTheme() { 7 | isDarkModeOn = !isDarkModeOn; 8 | notifyListeners(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /2_flutter/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /3_advicer/lib/1_domain/repositories/advice_repo.dart: -------------------------------------------------------------------------------- 1 | import 'package:advicer/1_domain/entities/advice_entity.dart'; 2 | import 'package:dartz/dartz.dart'; 3 | 4 | import '../failures/failures.dart'; 5 | 6 | abstract class AdviceRepo { 7 | Future> getAdviceFromDatasource(); 8 | } 9 | -------------------------------------------------------------------------------- /3_advicer/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2_flutter/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /3_advicer/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /3_advicer/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /5_todo_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /5_todo_app/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /2_flutter/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2_flutter/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /3_advicer/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /3_advicer/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /5_todo_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /5_todo_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /1_dart/07_switch_case.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | final String name = "Tom"; 3 | 4 | switch (name) { 5 | case "Hans": 6 | print("My name is Hans!"); 7 | break; 8 | case "Peter": 9 | print("My name is Peter!"); 10 | break; 11 | default: 12 | print("I don not know my name?!"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /2_flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /3_advicer/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /3_advicer/lib/1_domain/entities/advice_entity.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | 3 | class AdviceEntity extends Equatable { 4 | final String advice; 5 | final int id; 6 | 7 | const AdviceEntity({required this.advice, required this.id}); 8 | 9 | @override 10 | List get props => [advice, id]; 11 | } 12 | -------------------------------------------------------------------------------- /5_todo_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2_flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /3_advicer/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2_flutter/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /3_advicer/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /5_todo_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /5_todo_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/app/cubit/auth_cubit_state.dart: -------------------------------------------------------------------------------- 1 | part of 'auth_cubit.dart'; 2 | 3 | @immutable 4 | abstract class AuthCubitState {} 5 | 6 | class AuthCubitInitial extends AuthCubitState { 7 | final bool isLoggedIn; 8 | final String? userId; 9 | 10 | AuthCubitInitial({ 11 | required this.isLoggedIn, 12 | this.userId, 13 | }); 14 | } 15 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/core/page_config.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class PageConfig { 4 | final IconData icon; 5 | final String name; 6 | final Widget child; 7 | 8 | const PageConfig({ 9 | required this.icon, 10 | required this.name, 11 | Widget? child, 12 | }) : child = child ?? const Placeholder(); 13 | } 14 | -------------------------------------------------------------------------------- /2_flutter/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 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /3_advicer/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 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /5_todo_app/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 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/pages/overview/view_states/todo_overview_loading.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ToDoOverviewLoading extends StatelessWidget { 4 | const ToDoOverviewLoading({super.key}); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return const CircularProgressIndicator.adaptive(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /1_dart/10_for_loop.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | List numberList = [3, 4, 5, 6, 7, 5]; 3 | List secondList = []; 4 | 5 | for (int i = 0; i < numberList.length; i++) { 6 | if (numberList[i] == 3) { 7 | secondList.add(numberList[i]); 8 | } 9 | print('list element: ${numberList[i]}'); 10 | } 11 | 12 | print('second list: $secondList'); 13 | } 14 | -------------------------------------------------------------------------------- /1_dart/06_if_case.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | int age = 16; 3 | 4 | print("user is $age years old."); 5 | 6 | if (age >= 18) { 7 | print("You can enter the movie."); 8 | } else if (age == 16) { 9 | print("You can enter the movie with your parents."); 10 | } else { 11 | print("You can not enter this movie!"); 12 | } 13 | 14 | print("After the movie."); 15 | } 16 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/pages/detail/view_states/todo_detail_loading.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ToDoDetailLoading extends StatelessWidget { 4 | const ToDoDetailLoading({super.key}); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return const Center( 9 | child: CircularProgressIndicator(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /2_flutter/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /3_advicer/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/pages/overview/view_states/todo_overview_error.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ToDoOverviewError extends StatelessWidget { 4 | const ToDoOverviewError({super.key}); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return const Card( 9 | child: Text('ERROR, please try again'), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /5_todo_app/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/pages/detail/view_states/todo_detail_error.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ToDoDetailError extends StatelessWidget { 4 | const ToDoDetailError({super.key}); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return const Card( 9 | child: Text('ERROR on Detail Page, please try again'), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /2_flutter/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. -------------------------------------------------------------------------------- /3_advicer/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. -------------------------------------------------------------------------------- /5_todo_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. -------------------------------------------------------------------------------- /1_dart/13_methods_return.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | print("start"); 3 | int number1 = 4; 4 | int number2 = 5; 5 | int result1 = add(num1: number1, num2: number2); 6 | print(result1); 7 | int result2 = add(num1: result1, num2: number2); 8 | print(result2); 9 | print("end"); 10 | } 11 | 12 | int add({required int num1, required int num2}) { 13 | int result = num1 + num2; 14 | return result; 15 | } 16 | -------------------------------------------------------------------------------- /2_flutter/linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /2_flutter/windows/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void RegisterPlugins(flutter::PluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /3_advicer/linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /3_advicer/windows/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void RegisterPlugins(flutter::PluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /5_todo_app/linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /5_todo_app/windows/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void RegisterPlugins(flutter::PluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /2_flutter/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /3_advicer/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /3_advicer/lib/0_data/models/advice_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:advicer/1_domain/entities/advice_entity.dart'; 2 | import 'package:equatable/equatable.dart'; 3 | 4 | class AdviceModel extends AdviceEntity with EquatableMixin { 5 | AdviceModel({required super.advice, required super.id}); 6 | 7 | factory AdviceModel.fromJson(Map json) { 8 | return AdviceModel(advice: json['advice'], id: json['advice_id']); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/core/form_value.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | 3 | class FormValue with EquatableMixin { 4 | FormValue({required this.value, required this.validationStatus}); 5 | 6 | final T value; 7 | final ValidationStatus validationStatus; 8 | 9 | @override 10 | List get props => [value, validationStatus]; 11 | } 12 | 13 | enum ValidationStatus { 14 | error, 15 | success, 16 | pending, 17 | } 18 | -------------------------------------------------------------------------------- /3_advicer/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /3_advicer/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /5_todo_app/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/components/todo_entry_item/view_states/todo_entry_item_error.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ToDoEntryItemError extends StatelessWidget { 4 | const ToDoEntryItemError({super.key}); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return const ListTile( 9 | onTap: null, 10 | leading: Icon(Icons.warning_rounded), 11 | title: Text('Could not load item'), 12 | ); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /2_flutter/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2_flutter/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /5_todo_app/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /1_dart/17_constructors.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | final Car blueCar = Car(color: "blue", engine: "v8"); 3 | print(blueCar.color); 4 | } 5 | 6 | class Car { 7 | //! constructor 8 | Car({required this.color, required this.engine}); 9 | //! attribute 10 | final String color; 11 | final String engine; 12 | 13 | //! methods 14 | void drive() { 15 | print("car is moving"); 16 | } 17 | 18 | void whichColor() { 19 | print('car color: ${this.color}'); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /2_flutter/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 | -------------------------------------------------------------------------------- /3_advicer/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 | -------------------------------------------------------------------------------- /2_flutter/linux/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /3_advicer/linux/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /5_todo_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 | -------------------------------------------------------------------------------- /5_todo_app/linux/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /2_flutter/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController.init() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /3_advicer/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController.init() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/pages/home/bloc/navigation_todo_cubit_state.dart: -------------------------------------------------------------------------------- 1 | part of 'navigation_todo_cubit.dart'; 2 | 3 | class NavigationToDoCubitState extends Equatable { 4 | final CollectionId? selectedCollectionId; 5 | final bool? isSecondBodyDisplayed; 6 | 7 | const NavigationToDoCubitState({ 8 | this.isSecondBodyDisplayed, 9 | this.selectedCollectionId, 10 | }); 11 | 12 | @override 13 | List get props => [isSecondBodyDisplayed, selectedCollectionId]; 14 | } 15 | -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController.init() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /3_advicer/lib/1_domain/failures/failures.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | 3 | abstract class Failure {} 4 | 5 | class ServerFailure extends Failure with EquatableMixin { 6 | @override 7 | List get props => []; 8 | } 9 | 10 | class CacheFailure extends Failure with EquatableMixin { 11 | @override 12 | List get props => []; 13 | } 14 | 15 | class GeneralFailure extends Failure with EquatableMixin { 16 | @override 17 | List get props => []; 18 | } 19 | -------------------------------------------------------------------------------- /5_todo_app/lib/1_domain/entities/todo_color.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ToDoColor { 4 | final int colorIndex; 5 | 6 | static const List predefinedColors = [ 7 | Colors.red, 8 | Colors.blueGrey, 9 | Colors.yellow, 10 | Colors.blue, 11 | Colors.green, 12 | Colors.purple, 13 | Colors.teal, 14 | Colors.orange, 15 | ]; 16 | 17 | Color get color => predefinedColors[colorIndex]; 18 | 19 | ToDoColor({required this.colorIndex}); 20 | } 21 | -------------------------------------------------------------------------------- /2_flutter/windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /3_advicer/windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /2_flutter/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 | -------------------------------------------------------------------------------- /3_advicer/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 | -------------------------------------------------------------------------------- /5_todo_app/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 | -------------------------------------------------------------------------------- /5_todo_app/lib/main_mock.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_bloc/flutter_bloc.dart'; 3 | import 'package:todo_app/0_data/repositories/todo_repository_mock.dart'; 4 | import 'package:todo_app/1_domain/repositories/todo_repository.dart'; 5 | import 'package:todo_app/2_application/app/basic_app.dart'; 6 | 7 | void main() { 8 | runApp( 9 | RepositoryProvider( 10 | create: (context) => ToDoRepositoryMock(), 11 | child: const BasicApp(), 12 | ), 13 | ); 14 | } 15 | -------------------------------------------------------------------------------- /5_todo_app/windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /1_dart/05_list_maps.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | List exampleList = [1, "string", 3.5, 4]; 3 | print(exampleList); 4 | print(exampleList[1]); 5 | print(exampleList[0]); 6 | print(exampleList.length); 7 | print(exampleList); 8 | exampleList.add("value"); 9 | print(exampleList); 10 | 11 | Map exampleMap = { 12 | "key1": 3, 13 | "key2": "value2", 14 | }; 15 | 16 | print(exampleMap); 17 | print(exampleMap["key1"]); 18 | print(exampleMap.length); 19 | print(exampleMap.keys); 20 | } 21 | -------------------------------------------------------------------------------- /2_flutter/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/widget_examples/widgets/first_column_child.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class FirstColumnChild extends StatelessWidget { 4 | const FirstColumnChild({ 5 | super.key, 6 | }); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Container( 11 | color: Colors.green, 12 | child: const Padding( 13 | padding: EdgeInsets.all(20), 14 | child: Text( 15 | 'First Column child', 16 | )), 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /3_advicer/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /5_todo_app/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /2_flutter/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /3_advicer/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /5_todo_app/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /2_flutter/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 | -------------------------------------------------------------------------------- /3_advicer/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 | -------------------------------------------------------------------------------- /5_todo_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 | -------------------------------------------------------------------------------- /5_todo_app/lib/1_domain/failures/failures.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | 3 | abstract class Failure {} 4 | 5 | class ServerFailure extends Failure with EquatableMixin { 6 | ServerFailure({this.stackTrace}); 7 | 8 | final String? stackTrace; 9 | 10 | @override 11 | List get props => [stackTrace]; 12 | } 13 | 14 | class CacheFailure extends Failure with EquatableMixin { 15 | CacheFailure({this.stackTrace}); 16 | 17 | final String? stackTrace; 18 | 19 | @override 20 | List get props => [stackTrace]; 21 | } 22 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/components/todo_entry_item/view_states/todo_entry_item_loading.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:shimmer_animation/shimmer_animation.dart'; 3 | 4 | class ToDoEntryItemLoading extends StatelessWidget { 5 | const ToDoEntryItemLoading({super.key}); 6 | 7 | @override 8 | Widget build(BuildContext context) { 9 | return ListTile( 10 | title: Shimmer( 11 | color: Theme.of(context).colorScheme.onSurface, 12 | child: const Text('Loading'), 13 | ), 14 | ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /1_dart/11_for_each.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | List numberList = [3, 4, 5, 6, 7, 5]; 3 | List secondList = []; 4 | 5 | /* for (int i = 0; i < numberList.length; i++) { 6 | if (numberList[i] == 3) { 7 | secondList.add(numberList[i]); 8 | } 9 | print('list element: ${numberList[i]}'); 10 | print('second list: $secondList'); 11 | } */ 12 | 13 | numberList.forEach((element) { 14 | element++; 15 | print(element); 16 | secondList.add(element); 17 | }); 18 | 19 | print(numberList); 20 | print(secondList); 21 | 22 | 23 | } 24 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/app/cubit/auth_cubit.dart: -------------------------------------------------------------------------------- 1 | import 'package:firebase_auth/firebase_auth.dart'; 2 | import 'package:flutter_bloc/flutter_bloc.dart'; 3 | import 'package:meta/meta.dart'; 4 | 5 | part 'auth_cubit_state.dart'; 6 | 7 | class AuthCubit extends Cubit { 8 | AuthCubit() : super(AuthCubitInitial(isLoggedIn: false)); 9 | 10 | void authStateChanged({User? user}) { 11 | final bool isLoggedIn = user != null; 12 | 13 | emit(AuthCubitInitial( 14 | userId: user?.uid, 15 | isLoggedIn: isLoggedIn, 16 | )); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/pages/create_todo_entry/bloc/create_todo_entry_page_state.dart: -------------------------------------------------------------------------------- 1 | part of 'create_todo_entry_page_cubit.dart'; 2 | 3 | class CreateToDoEntryPageState extends Equatable { 4 | final FormValue? description; 5 | 6 | const CreateToDoEntryPageState({this.description}); 7 | 8 | CreateToDoEntryPageState copyWith({FormValue? description}) { 9 | return CreateToDoEntryPageState( 10 | description: description ?? this.description, 11 | ); 12 | } 13 | 14 | @override 15 | List get props => [description]; 16 | } 17 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/pages/dashboard/dashboard_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:todo_app/2_application/core/page_config.dart'; 3 | 4 | class DasboardPage extends StatelessWidget { 5 | const DasboardPage({super.key}); 6 | 7 | static const pageConfig = PageConfig( 8 | icon: Icons.dashboard_rounded, 9 | name: 'dashboard', 10 | child: DasboardPage(), 11 | ); 12 | 13 | @override 14 | Widget build(BuildContext context) { 15 | return Container( 16 | color: Colors.purpleAccent, 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /5_todo_app/linux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | #include 10 | 11 | void fl_register_plugins(FlPluginRegistry* registry) { 12 | g_autoptr(FlPluginRegistrar) desktop_webview_auth_registrar = 13 | fl_plugin_registry_get_registrar_for_plugin(registry, "DesktopWebviewAuthPlugin"); 14 | desktop_webview_auth_plugin_register_with_registrar(desktop_webview_auth_registrar); 15 | } 16 | -------------------------------------------------------------------------------- /3_advicer/lib/1_domain/usecases/advice_usecases.dart: -------------------------------------------------------------------------------- 1 | import 'package:advicer/1_domain/entities/advice_entity.dart'; 2 | import 'package:advicer/1_domain/failures/failures.dart'; 3 | import 'package:advicer/1_domain/repositories/advice_repo.dart'; 4 | import 'package:dartz/dartz.dart'; 5 | 6 | 7 | class AdviceUseCases { 8 | AdviceUseCases({required this.adviceRepo}); 9 | final AdviceRepo adviceRepo; 10 | 11 | Future> getAdvice() async { 12 | return adviceRepo.getAdviceFromDatasource(); 13 | // space for business logic 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/widget_examples/widgets/media_query_example.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class MediaQueryExample extends StatelessWidget { 4 | const MediaQueryExample({ 5 | super.key, 6 | }); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | final size = MediaQuery.of(context).size; 11 | return Container( 12 | color: Colors.green, 13 | width: size.width / 2, 14 | height: size.height / 5, 15 | child: const Center( 16 | child: Text('MediaQuery Example'), 17 | ), 18 | ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /3_advicer/README.md: -------------------------------------------------------------------------------- 1 | # advicer 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 13 | 14 | For help getting started with Flutter development, view the 15 | [online documentation](https://docs.flutter.dev/), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /3_advicer/ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Flutter (1.0.0) 3 | - integration_test (0.0.1): 4 | - Flutter 5 | 6 | DEPENDENCIES: 7 | - Flutter (from `Flutter`) 8 | - integration_test (from `.symlinks/plugins/integration_test/ios`) 9 | 10 | EXTERNAL SOURCES: 11 | Flutter: 12 | :path: Flutter 13 | integration_test: 14 | :path: ".symlinks/plugins/integration_test/ios" 15 | 16 | SPEC CHECKSUMS: 17 | Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 18 | integration_test: a1e7d09bd98eca2fc37aefd79d4f41ad37bdbbe5 19 | 20 | PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3 21 | 22 | COCOAPODS: 1.11.3 23 | -------------------------------------------------------------------------------- /5_todo_app/README.md: -------------------------------------------------------------------------------- 1 | # todo_app 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 13 | 14 | For help getting started with Flutter development, view the 15 | [online documentation](https://docs.flutter.dev/), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /2_flutter/README.md: -------------------------------------------------------------------------------- 1 | # flutterbasics 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 13 | 14 | For help getting started with Flutter development, view the 15 | [online documentation](https://docs.flutter.dev/), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/theme_animation/widgets/sun_shine.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class SunShine extends StatelessWidget { 4 | final double radius; 5 | final Widget child; 6 | const SunShine({super.key, required this.child, required this.radius}); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Container( 11 | height: radius, 12 | width: radius, 13 | decoration: BoxDecoration( 14 | shape: BoxShape.circle, 15 | color: Colors.white.withValues(alpha: .1), 16 | ), 17 | child: Center(child: child), 18 | ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/pages/create_todo_collection/bloc/create_todo_collection_page_state.dart: -------------------------------------------------------------------------------- 1 | part of 'create_todo_collection_page_cubit.dart'; 2 | 3 | class CreateToDoCollectionPageState extends Equatable { 4 | final String? title; 5 | final String? color; 6 | 7 | const CreateToDoCollectionPageState({this.title, this.color}); 8 | 9 | CreateToDoCollectionPageState copyWith({String? title, String? color}) { 10 | return CreateToDoCollectionPageState( 11 | color: color ?? this.color, 12 | title: title ?? this.title, 13 | ); 14 | } 15 | 16 | @override 17 | List get props => [title, color]; 18 | } 19 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/navigation_example_screens/screen_two.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ScreenTwo extends StatelessWidget { 4 | const ScreenTwo({super.key}); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return Scaffold( 9 | appBar: AppBar( 10 | title: const Text('Screen Two'), 11 | backgroundColor: Colors.blue, 12 | ), 13 | body: Center( 14 | child: TextButton( 15 | child: const Text('Go To Screen One'), 16 | onPressed: () { 17 | Navigator.pushNamed(context, '/screenOne'); 18 | }, 19 | )), 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/theme_animation/widgets/star.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Star extends StatelessWidget { 4 | const Star({super.key}); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return Container( 9 | width: 2, 10 | height: 2, 11 | decoration: BoxDecoration(shape: BoxShape.circle, color: const Color(0xFFC9E9FC), boxShadow: [ 12 | BoxShadow( 13 | color: const Color(0xFFC9E9FC).withValues(alpha: 0.5), 14 | spreadRadius: 5, 15 | blurRadius: 7, 16 | offset: const Offset(0, 0)) 17 | ])); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/widget_examples/widgets/max_berktold.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class MaxBerktold extends StatelessWidget { 4 | const MaxBerktold({ 5 | super.key, 6 | }); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return const SizedBox( 11 | width: 100, 12 | height: 100, 13 | child: CircleAvatar( 14 | backgroundImage: NetworkImage( 15 | 'https://static.wixstatic.com/media/e38214_2415b962d0244310bb630e9cb6ac7010~mv2.jpg/v1/fill/w_388,h_372,al_c,q_80,usm_0.66_1.00_0.01,enc_auto/IMG_5274_edited_edited_edited_edited.jpg'))); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/navigation_example_screens/screen_one.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ScreenOne extends StatelessWidget { 4 | const ScreenOne({super.key}); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return Scaffold( 9 | appBar: AppBar( 10 | title: const Text('Screen One'), 11 | backgroundColor: Colors.green, 12 | ), 13 | body: Center( 14 | child: TextButton( 15 | child: const Text('Go Back'), 16 | onPressed: () { 17 | Navigator.popUntil(context, (route) => route.isFirst); 18 | }, 19 | )), 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /2_flutter/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /3_advicer/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/pages/detail/bloc/todo_detail_cubit_state.dart: -------------------------------------------------------------------------------- 1 | part of 'todo_detail_cubit.dart'; 2 | 3 | abstract class ToDoDetailCubitState extends Equatable { 4 | const ToDoDetailCubitState(); 5 | 6 | @override 7 | List get props => []; 8 | } 9 | 10 | class ToDoDetailCubitLoadingState extends ToDoDetailCubitState {} 11 | 12 | class ToDoDetailCubitErrorState extends ToDoDetailCubitState {} 13 | 14 | class ToDoDetailCubitLoadedState extends ToDoDetailCubitState { 15 | const ToDoDetailCubitLoadedState({required this.entryIds}); 16 | 17 | final List entryIds; 18 | 19 | @override 20 | List get props => [entryIds]; 21 | } 22 | -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/components/todo_entry_item/bloc/todo_entry_item_cubit_state.dart: -------------------------------------------------------------------------------- 1 | part of 'todo_entry_item_cubit.dart'; 2 | 3 | abstract class ToDoEntryItemState extends Equatable { 4 | const ToDoEntryItemState(); 5 | 6 | @override 7 | List get props => []; 8 | } 9 | 10 | class ToDoEntryItemLoadingState extends ToDoEntryItemState {} 11 | 12 | class ToDoEntryItemErrorState extends ToDoEntryItemState {} 13 | 14 | class ToDoEntryItemLoadedState extends ToDoEntryItemState { 15 | const ToDoEntryItemLoadedState({required this.toDoEntry}); 16 | 17 | final ToDoEntry toDoEntry; 18 | 19 | @override 20 | List get props => [toDoEntry]; 21 | } 22 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/theme_animation/widgets/moon.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Moon extends StatelessWidget { 4 | const Moon({super.key}); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return Container( 9 | height: 30, 10 | width: 30, 11 | decoration: const BoxDecoration( 12 | shape: BoxShape.circle, 13 | gradient: LinearGradient( 14 | colors: [ 15 | Color(0xFF8983F7), 16 | Color(0xFFA3DAFB), 17 | ], 18 | begin: Alignment.bottomLeft, 19 | end: Alignment.topRight, 20 | )), 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /3_advicer/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = advicer 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.advicer 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2022 com.example. All rights reserved. 15 | -------------------------------------------------------------------------------- /5_todo_app/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = todo_app 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.todoApp 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2023 com.example. All rights reserved. 15 | -------------------------------------------------------------------------------- /2_flutter/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = flutterbasics 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterbasics 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2022 com.example. All rights reserved. 15 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/components/todo_entry_item/view_states/todo_entry_item_loaded.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:todo_app/1_domain/entities/todo_entry.dart'; 3 | 4 | class ToDoEntryItemLoaded extends StatelessWidget { 5 | const ToDoEntryItemLoaded({ 6 | super.key, 7 | required this.entryItem, 8 | required this.onChanged, 9 | }); 10 | 11 | final ToDoEntry entryItem; 12 | final Function(bool?) onChanged; 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return CheckboxListTile( 17 | title: Text(entryItem.description), 18 | value: entryItem.isDone, 19 | onChanged: onChanged, 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/widget_examples/widgets/hello_world.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'package:flutter/material.dart'; 3 | 4 | class HelloWorld extends StatelessWidget { 5 | const HelloWorld({ 6 | super.key, 7 | }); 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | return Center( 12 | child: Container( 13 | height: 200, 14 | width: 200, 15 | decoration: BoxDecoration( 16 | color: Colors.blue, 17 | borderRadius: BorderRadius.circular(10)), 18 | child: const Center( 19 | child: Text('Hello World!', 20 | style: TextStyle(color: Colors.red, fontSize: 20)), 21 | ), 22 | ), 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /2_flutter/lib/presentation/widget_examples/widgets/max_steffen.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class MaxSteffen extends StatelessWidget { 4 | const MaxSteffen({ 5 | super.key, 6 | }); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Stack( 11 | children: [ 12 | SizedBox( 13 | width: 100, 14 | height: 100, 15 | child: Image.asset( 16 | 'assets/max.jpeg', 17 | fit: BoxFit.cover, 18 | )), 19 | const Positioned( 20 | top: 80, 21 | left: 20, 22 | child: Text('Max Steffen'), 23 | ), 24 | ], 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /5_todo_app/assets/translations/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": "Settings", 3 | "login": "Login", 4 | "profile": "Profile", 5 | "home_dashboard": "Dashboard", 6 | "home_overview": "Overview", 7 | "overview_add_collection": "Add Collection", 8 | "collection_title": "Create Collection", 9 | "collection_title_label": "Title", 10 | "collection_color_label": "Color", 11 | "colelction_save": "Save", 12 | "detail_title": "Collection Details", 13 | "detail_add_todo": "Add ToDo", 14 | "todo_title": "Create ToDo", 15 | "todo_description_label": "description", 16 | "todo_save": "Save todo", 17 | "collection_color_failure": "Only numbers between 0 and {numbers} are allowed" 18 | } -------------------------------------------------------------------------------- /5_todo_app/lib/0_data/exceptions/exceptions.dart: -------------------------------------------------------------------------------- 1 | class ServerException implements Exception {} 2 | 3 | class FirestoreCollectionNotFoundException implements ServerException { 4 | final String id; 5 | 6 | FirestoreCollectionNotFoundException({required this.id}); 7 | } 8 | 9 | class FirestoreEntryNotFoundException implements ServerException { 10 | final String id; 11 | final String collectionId; 12 | 13 | FirestoreEntryNotFoundException({ 14 | required this.id, 15 | required this.collectionId, 16 | }); 17 | } 18 | 19 | class CacheException implements Exception {} 20 | 21 | class CollectionNotFoundException implements CacheException {} 22 | 23 | class EntryNotFoundException implements CacheException {} 24 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/pages/settings/settings_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:todo_app/2_application/core/page_config.dart'; 3 | 4 | class SettingsPage extends StatelessWidget { 5 | const SettingsPage({super.key}); 6 | 7 | static const pageConfig = PageConfig( 8 | icon: Icons.settings_rounded, 9 | name: 'settings', 10 | child: SettingsPage(), 11 | ); 12 | 13 | @override 14 | Widget build(BuildContext context) { 15 | return Scaffold( 16 | body: SafeArea( 17 | child: TextButton( 18 | onPressed: () => throw Exception('Test exception'), 19 | child: const Text('Crash'), 20 | ), 21 | ), 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /2_flutter/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 | -------------------------------------------------------------------------------- /3_advicer/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 | -------------------------------------------------------------------------------- /3_advicer/lib/2_application/pages/advice/bloc/advicer_state.dart: -------------------------------------------------------------------------------- 1 | part of 'advicer_bloc.dart'; 2 | 3 | @immutable 4 | abstract class AdvicerState extends Equatable { 5 | @override 6 | List get props => []; 7 | } 8 | 9 | class AdvicerInitial extends AdvicerState {} 10 | 11 | class AdvicerStateLoading extends AdvicerState {} 12 | 13 | class AdvicerStateLoaded extends AdvicerState { 14 | final String advice; 15 | AdvicerStateLoaded({required this.advice}); 16 | 17 | @override 18 | List get props => [advice]; 19 | } 20 | 21 | class AdvicerStateError extends AdvicerState { 22 | final String message; 23 | AdvicerStateError({required this.message}); 24 | @override 25 | List get props => [message]; 26 | } -------------------------------------------------------------------------------- /5_todo_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 | -------------------------------------------------------------------------------- /2_flutter/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.6.10' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:7.1.2' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | mavenCentral() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /3_advicer/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.6.10' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:7.1.2' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | mavenCentral() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /5_todo_app/assets/translations/de.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": "Einstellungs", 3 | "login": "Anmelden", 4 | "profile": "Profile", 5 | "home_dashboard": "Dashboard", 6 | "home_overview": "Übersicht", 7 | "overview_add_collection": "Sammlung hinzufügen", 8 | "collection_title": "Sammlung hinzufügen", 9 | "collection_title_label": "Name", 10 | "collection_color_label": "Farbe", 11 | "colelction_save": "Speichern", 12 | "detail_title": "Sammlungsinformationen", 13 | "detail_add_todo": "Todo hinzufügen", 14 | "todo_title": "ToDo hinzufügen", 15 | "todo_description_label": "Beschreibung", 16 | "todo_save": "Speichern", 17 | "collection_color_failure": "Nur Nummern zwischen 0 und {numbers} sind möglich" 18 | } -------------------------------------------------------------------------------- /1_dart/14_obejct_oriented_programming.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | Car car1 = Car(); 3 | 4 | // To test this, you need to move your Car class into a own cars.dart file 5 | // Dart only knows file private fields and methods, so everyone in this file 6 | // can access the _color attribute from a car. 7 | print('Using private attribute:'); 8 | car1._color = 'blue'; 9 | car1.carColor(); 10 | 11 | print('Using setter:'); 12 | 13 | car1.setColor = 'green'; 14 | car1.carColor(); 15 | } 16 | 17 | class Car { 18 | late String _color; 19 | 20 | set setColor(String color) { 21 | this._color = color; 22 | } 23 | 24 | String get color => this._color; 25 | 26 | void carColor() { 27 | print('Car is ${this._color}'); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /2_flutter/windows/runner/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_UTILS_H_ 2 | #define RUNNER_UTILS_H_ 3 | 4 | #include 5 | #include 6 | 7 | // Creates a console for the process, and redirects stdout and stderr to 8 | // it for both the runner and the Flutter library. 9 | void CreateAndAttachConsole(); 10 | 11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string 12 | // encoded in UTF-8. Returns an empty std::string on failure. 13 | std::string Utf8FromUtf16(const wchar_t* utf16_string); 14 | 15 | // Gets the command line arguments passed in as a std::vector, 16 | // encoded in UTF-8. Returns an empty std::vector on failure. 17 | std::vector GetCommandLineArguments(); 18 | 19 | #endif // RUNNER_UTILS_H_ 20 | -------------------------------------------------------------------------------- /3_advicer/windows/runner/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_UTILS_H_ 2 | #define RUNNER_UTILS_H_ 3 | 4 | #include 5 | #include 6 | 7 | // Creates a console for the process, and redirects stdout and stderr to 8 | // it for both the runner and the Flutter library. 9 | void CreateAndAttachConsole(); 10 | 11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string 12 | // encoded in UTF-8. Returns an empty std::string on failure. 13 | std::string Utf8FromUtf16(const wchar_t* utf16_string); 14 | 15 | // Gets the command line arguments passed in as a std::vector, 16 | // encoded in UTF-8. Returns an empty std::vector on failure. 17 | std::vector GetCommandLineArguments(); 18 | 19 | #endif // RUNNER_UTILS_H_ 20 | -------------------------------------------------------------------------------- /5_todo_app/windows/runner/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_UTILS_H_ 2 | #define RUNNER_UTILS_H_ 3 | 4 | #include 5 | #include 6 | 7 | // Creates a console for the process, and redirects stdout and stderr to 8 | // it for both the runner and the Flutter library. 9 | void CreateAndAttachConsole(); 10 | 11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string 12 | // encoded in UTF-8. Returns an empty std::string on failure. 13 | std::string Utf8FromUtf16(const wchar_t* utf16_string); 14 | 15 | // Gets the command line arguments passed in as a std::vector, 16 | // encoded in UTF-8. Returns an empty std::vector on failure. 17 | std::vector GetCommandLineArguments(); 18 | 19 | #endif // RUNNER_UTILS_H_ 20 | -------------------------------------------------------------------------------- /5_todo_app/lib/0_data/models/todo_entry_model.g.dart: -------------------------------------------------------------------------------- 1 | // GENERATED CODE - DO NOT MODIFY BY HAND 2 | 3 | part of 'todo_entry_model.dart'; 4 | 5 | // ************************************************************************** 6 | // JsonSerializableGenerator 7 | // ************************************************************************** 8 | 9 | ToDoEntryModel _$ToDoEntryModelFromJson(Map json) => ToDoEntryModel( 10 | id: json['id'] as String, 11 | description: json['description'] as String, 12 | isDone: json['isDone'] as bool, 13 | ); 14 | 15 | Map _$ToDoEntryModelToJson(ToDoEntryModel instance) => { 16 | 'description': instance.description, 17 | 'isDone': instance.isDone, 18 | 'id': instance.id, 19 | }; 20 | -------------------------------------------------------------------------------- /5_todo_app/lib/0_data/models/todo_entry_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | import 'package:json_annotation/json_annotation.dart'; 3 | 4 | part 'todo_entry_model.g.dart'; 5 | 6 | @JsonSerializable() 7 | class ToDoEntryModel extends Equatable { 8 | final String description; 9 | final bool isDone; 10 | final String id; 11 | 12 | const ToDoEntryModel({ 13 | required this.id, 14 | required this.description, 15 | required this.isDone, 16 | }); 17 | 18 | factory ToDoEntryModel.fromJson(Map json) => _$ToDoEntryModelFromJson(json); 19 | 20 | Map toJson() => _$ToDoEntryModelToJson(this); 21 | 22 | @override 23 | List get props => [ 24 | id, 25 | isDone, 26 | description, 27 | ]; 28 | } 29 | -------------------------------------------------------------------------------- /5_todo_app/lib/0_data/data_sources/mapper/todo_entry_mapper.dart: -------------------------------------------------------------------------------- 1 | import 'package:todo_app/0_data/models/todo_entry_model.dart'; 2 | import 'package:todo_app/1_domain/entities/todo_entry.dart'; 3 | import 'package:todo_app/1_domain/entities/unique_id.dart'; 4 | 5 | mixin ToDoEntryMapper { 6 | ToDoEntry toDoEntryModelToEntity(ToDoEntryModel model) { 7 | final entity = ToDoEntry( 8 | id: EntryId.fromUniqueString(model.id), 9 | description: model.description, 10 | isDone: model.isDone, 11 | ); 12 | 13 | return entity; 14 | } 15 | 16 | ToDoEntryModel toDoEntryToModel(ToDoEntry entry) { 17 | final model = ToDoEntryModel( 18 | id: entry.id.value, 19 | description: entry.description, 20 | isDone: entry.isDone, 21 | ); 22 | 23 | return model; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/pages/overview/bloc/todo_overview_cubit_state.dart: -------------------------------------------------------------------------------- 1 | part of 'todo_overview_cubit.dart'; 2 | 3 | abstract class ToDoOverviewCubitState extends Equatable { 4 | const ToDoOverviewCubitState(); 5 | 6 | @override 7 | List get props => []; 8 | } 9 | 10 | class ToDoOverviewCubitLoadingState extends ToDoOverviewCubitState { 11 | const ToDoOverviewCubitLoadingState(); 12 | } 13 | 14 | class ToDoOverviewCubitErrorState extends ToDoOverviewCubitState { 15 | const ToDoOverviewCubitErrorState(); 16 | } 17 | 18 | class ToDoOverviewCubitLoadedState extends ToDoOverviewCubitState { 19 | const ToDoOverviewCubitLoadedState({required this.collections}); 20 | 21 | final List collections; 22 | 23 | @override 24 | List get props => [collections]; 25 | } 26 | -------------------------------------------------------------------------------- /1_dart/16_getter_setter_visibility.dart: -------------------------------------------------------------------------------- 1 | void main() { 2 | Car car1 = Car(); 3 | car1.setColor = "red"; 4 | 5 | Car car2 = Car(); 6 | car2.setColor = "blue"; 7 | 8 | String colorFromCar1 = car1.color; 9 | 10 | print('color from car 1: $colorFromCar1'); 11 | 12 | car1.whichColor(); 13 | car2.whichColor(); 14 | 15 | car1.drive(); 16 | } 17 | 18 | class Car { 19 | //! attribute 20 | late String _color; 21 | 22 | //! setter - set attribute 23 | set setColor(String color){ 24 | // here you can validate the input 25 | this._color = color; 26 | } 27 | 28 | //! getter 29 | String get color => this._color; 30 | 31 | //! methods 32 | void drive() { 33 | print("car is moving"); 34 | } 35 | 36 | void whichColor() { 37 | print('car color: ${this._color}'); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /5_todo_app/lib/0_data/models/todo_collection_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | import 'package:json_annotation/json_annotation.dart'; 3 | 4 | part 'todo_collection_model.g.dart'; 5 | 6 | @JsonSerializable() 7 | class ToDoCollectionModel extends Equatable { 8 | final int colorIndex; 9 | final String title; 10 | final String id; 11 | 12 | const ToDoCollectionModel({ 13 | required this.id, 14 | required this.title, 15 | required this.colorIndex, 16 | }); 17 | 18 | factory ToDoCollectionModel.fromJson(Map json) => _$ToDoCollectionModelFromJson(json); 19 | 20 | Map toJson() => _$ToDoCollectionModelToJson(this); 21 | 22 | @override 23 | List get props => [ 24 | id, 25 | title, 26 | colorIndex, 27 | ]; 28 | } 29 | -------------------------------------------------------------------------------- /5_todo_app/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java: -------------------------------------------------------------------------------- 1 | // Generated file. 2 | // 3 | // If you wish to remove Flutter's multidex support, delete this entire file. 4 | // 5 | // Modifications to this file should be done in a copy under a different name 6 | // as this file may be regenerated. 7 | 8 | package io.flutter.app; 9 | 10 | import android.app.Application; 11 | import android.content.Context; 12 | import androidx.annotation.CallSuper; 13 | import androidx.multidex.MultiDex; 14 | 15 | /** 16 | * Extension of {@link android.app.Application}, adding multidex support. 17 | */ 18 | public class FlutterMultiDexApplication extends Application { 19 | @Override 20 | @CallSuper 21 | protected void attachBaseContext(Context base) { 22 | super.attachBaseContext(base); 23 | MultiDex.install(this); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /5_todo_app/lib/0_data/models/todo_collection_model.g.dart: -------------------------------------------------------------------------------- 1 | // GENERATED CODE - DO NOT MODIFY BY HAND 2 | 3 | part of 'todo_collection_model.dart'; 4 | 5 | // ************************************************************************** 6 | // JsonSerializableGenerator 7 | // ************************************************************************** 8 | 9 | ToDoCollectionModel _$ToDoCollectionModelFromJson(Map json) => 10 | ToDoCollectionModel( 11 | id: json['id'] as String, 12 | title: json['title'] as String, 13 | colorIndex: json['colorIndex'] as int, 14 | ); 15 | 16 | Map _$ToDoCollectionModelToJson( 17 | ToDoCollectionModel instance) => 18 | { 19 | 'colorIndex': instance.colorIndex, 20 | 'title': instance.title, 21 | 'id': instance.id, 22 | }; 23 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/widget_examples/widgets/layout_builder_example.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class LayoutBuilderExample extends StatelessWidget { 4 | const LayoutBuilderExample({ 5 | super.key, 6 | }); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Container( 11 | height: 300, 12 | width: 300, 13 | color: Colors.yellow, 14 | child: LayoutBuilder(builder: (context, constraints) { 15 | return Center( 16 | child: Container( 17 | color: Colors.blue, 18 | width: constraints.maxWidth * 0.8, 19 | height: constraints.maxHeight / 2, 20 | child: const Center( 21 | child: Text('Layout Builder Example'), 22 | ), 23 | ), 24 | ); 25 | }), 26 | ); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /2_flutter/linux/flutter/generated_plugins.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Generated file, do not edit. 3 | # 4 | 5 | list(APPEND FLUTTER_PLUGIN_LIST 6 | ) 7 | 8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST 9 | ) 10 | 11 | set(PLUGIN_BUNDLED_LIBRARIES) 12 | 13 | foreach(plugin ${FLUTTER_PLUGIN_LIST}) 14 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) 15 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) 16 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $) 17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) 18 | endforeach(plugin) 19 | 20 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) 21 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) 22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) 23 | endforeach(ffi_plugin) 24 | -------------------------------------------------------------------------------- /3_advicer/lib/2_application/pages/advice/bloc/advicer_bloc.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_bloc/flutter_bloc.dart'; 4 | 5 | part 'advicer_event.dart'; 6 | part 'advicer_state.dart'; 7 | 8 | class AdvicerBloc extends Bloc { 9 | AdvicerBloc() : super(AdvicerInitial()) { 10 | on((event, emit) async { 11 | emit(AdvicerStateLoading()); 12 | // execute business logic 13 | // for example get and advice 14 | debugPrint('fake get advice triggered'); 15 | await Future.delayed(const Duration(seconds: 3), () {}); 16 | debugPrint('got advice'); 17 | //emit(AdvicerStateLoaded(advice: 'fake advice to test bloc')); 18 | emit(AdvicerStateError(message: 'error message')); 19 | }); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /3_advicer/linux/flutter/generated_plugins.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Generated file, do not edit. 3 | # 4 | 5 | list(APPEND FLUTTER_PLUGIN_LIST 6 | ) 7 | 8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST 9 | ) 10 | 11 | set(PLUGIN_BUNDLED_LIBRARIES) 12 | 13 | foreach(plugin ${FLUTTER_PLUGIN_LIST}) 14 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) 15 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) 16 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $) 17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) 18 | endforeach(plugin) 19 | 20 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) 21 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) 22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) 23 | endforeach(ffi_plugin) 24 | -------------------------------------------------------------------------------- /2_flutter/windows/flutter/generated_plugins.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Generated file, do not edit. 3 | # 4 | 5 | list(APPEND FLUTTER_PLUGIN_LIST 6 | ) 7 | 8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST 9 | ) 10 | 11 | set(PLUGIN_BUNDLED_LIBRARIES) 12 | 13 | foreach(plugin ${FLUTTER_PLUGIN_LIST}) 14 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) 15 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) 16 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $) 17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) 18 | endforeach(plugin) 19 | 20 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) 21 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) 22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) 23 | endforeach(ffi_plugin) 24 | -------------------------------------------------------------------------------- /3_advicer/windows/flutter/generated_plugins.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Generated file, do not edit. 3 | # 4 | 5 | list(APPEND FLUTTER_PLUGIN_LIST 6 | ) 7 | 8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST 9 | ) 10 | 11 | set(PLUGIN_BUNDLED_LIBRARIES) 12 | 13 | foreach(plugin ${FLUTTER_PLUGIN_LIST}) 14 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) 15 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) 16 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $) 17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) 18 | endforeach(plugin) 19 | 20 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) 21 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) 22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) 23 | endforeach(ffi_plugin) 24 | -------------------------------------------------------------------------------- /1_dart/03_data_types.dart: -------------------------------------------------------------------------------- 1 | 2 | 3 | void main() { 4 | bool boolOutput = false; 5 | print(boolOutput); 6 | int intOutput = -1; 7 | print(intOutput); 8 | double doubleOutput = 1.5; 9 | print(doubleOutput); 10 | 11 | String stringOutput = 'Hello, Felix'; 12 | print(stringOutput); 13 | print('The value is : $intOutput'); 14 | print('The value is : $boolOutput'); 15 | 16 | dynamic dynamicVariable = 4.5; 17 | dynamicVariable = "text"; // can assign another datatype 18 | print(dynamicVariable); 19 | 20 | // keywords: 21 | late int exampleInt; 22 | exampleInt = 1; 23 | print(exampleInt); 24 | 25 | final int finalInt = 3; 26 | print(finalInt); 27 | 28 | const int constInt = 4; 29 | print(constInt); 30 | 31 | var varOutput = "text"; 32 | // varOutput = 1 // cannot assign another datatype 33 | print(varOutput); 34 | 35 | 36 | 37 | 38 | } -------------------------------------------------------------------------------- /3_advicer/lib/2_application/pages/advice/cubit/advicer_state.dart: -------------------------------------------------------------------------------- 1 | part of 'advicer_cubit.dart'; 2 | 3 | abstract class AdvicerCubitState extends Equatable { 4 | const AdvicerCubitState(); 5 | 6 | @override 7 | List get props => []; 8 | } 9 | 10 | class AdvicerInitial extends AdvicerCubitState { 11 | const AdvicerInitial(); 12 | } 13 | 14 | class AdvicerStateLoading extends AdvicerCubitState { 15 | const AdvicerStateLoading(); 16 | } 17 | 18 | class AdvicerStateLoaded extends AdvicerCubitState { 19 | final String advice; 20 | const AdvicerStateLoaded({required this.advice}); 21 | 22 | @override 23 | List get props => [advice]; 24 | } 25 | 26 | class AdvicerStateError extends AdvicerCubitState { 27 | final String message; 28 | const AdvicerStateError({required this.message}); 29 | @override 30 | List get props => [message]; 31 | } 32 | -------------------------------------------------------------------------------- /5_todo_app/lib/1_domain/entities/todo_collection.dart: -------------------------------------------------------------------------------- 1 | import 'package:todo_app/1_domain/entities/todo_color.dart'; 2 | import 'package:todo_app/1_domain/entities/unique_id.dart'; 3 | 4 | class ToDoCollection { 5 | final CollectionId id; 6 | final String title; 7 | final ToDoColor color; 8 | 9 | ToDoCollection({ 10 | required this.id, 11 | required this.title, 12 | required this.color, 13 | }); 14 | 15 | ToDoCollection copyWith({ 16 | String? title, 17 | ToDoColor? color, 18 | }) { 19 | return ToDoCollection( 20 | id: id, 21 | title: title ?? this.title, 22 | color: color ?? this.color, 23 | ); 24 | } 25 | 26 | factory ToDoCollection.empty() { 27 | return ToDoCollection( 28 | id: CollectionId(), 29 | title: '', 30 | color: ToDoColor( 31 | colorIndex: 0, 32 | ), 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /5_todo_app/lib/1_domain/use_cases/create_todo_collection.dart: -------------------------------------------------------------------------------- 1 | import 'package:todo_app/1_domain/failures/failures.dart'; 2 | import 'package:either_dart/either.dart'; 3 | import 'package:todo_app/1_domain/repositories/todo_repository.dart'; 4 | import 'package:todo_app/core/use_case.dart'; 5 | 6 | class CreateToDoCollection implements UseCase { 7 | CreateToDoCollection({required this.toDoRepository}); 8 | 9 | final ToDoRepository toDoRepository; 10 | 11 | @override 12 | Future> call(params) async { 13 | try { 14 | final result = toDoRepository.createToDoCollection(params.collection); 15 | 16 | return result.fold( 17 | (left) => Left(left), 18 | (right) => Right(right), 19 | ); 20 | } on Exception catch (e) { 21 | return Left(ServerFailure(stackTrace: e.toString())); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /5_todo_app/linux/flutter/generated_plugins.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Generated file, do not edit. 3 | # 4 | 5 | list(APPEND FLUTTER_PLUGIN_LIST 6 | desktop_webview_auth 7 | ) 8 | 9 | list(APPEND FLUTTER_FFI_PLUGIN_LIST 10 | ) 11 | 12 | set(PLUGIN_BUNDLED_LIBRARIES) 13 | 14 | foreach(plugin ${FLUTTER_PLUGIN_LIST}) 15 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) 16 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) 17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $) 18 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) 19 | endforeach(plugin) 20 | 21 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) 22 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) 23 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) 24 | endforeach(ffi_plugin) 25 | -------------------------------------------------------------------------------- /3_advicer/lib/2_application/pages/advice/widgets/error_message.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ErrorMessage extends StatelessWidget { 4 | final String message; 5 | const ErrorMessage({super.key, required this.message}); 6 | 7 | @override 8 | Widget build(BuildContext context) { 9 | final themeData = Theme.of(context); 10 | return Column( 11 | mainAxisAlignment: MainAxisAlignment.center, 12 | children: [ 13 | const Icon( 14 | Icons.error, 15 | size: 40, 16 | color: Colors.redAccent, 17 | ), 18 | const SizedBox( 19 | height: 20, 20 | ), 21 | Flexible( 22 | child: Text( 23 | message, 24 | style: themeData.textTheme.displayLarge, 25 | textAlign: TextAlign.center, 26 | ), 27 | ) 28 | ], 29 | ); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /5_todo_app/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | migrate_working_dir/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | #.vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | **/doc/api/ 26 | **/ios/Flutter/.last_build_id 27 | .dart_tool/ 28 | .flutter-plugins 29 | .flutter-plugins-dependencies 30 | .packages 31 | .pub-cache/ 32 | .pub/ 33 | /build/ 34 | 35 | # Symbolication related 36 | app.*.symbols 37 | 38 | # Obfuscation related 39 | app.*.map.json 40 | 41 | # Android Studio will place build artifacts here 42 | /android/app/debug 43 | /android/app/profile 44 | /android/app/release 45 | -------------------------------------------------------------------------------- /2_flutter/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 | -------------------------------------------------------------------------------- /3_advicer/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 | -------------------------------------------------------------------------------- /5_todo_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 | 11.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /5_todo_app/lib/1_domain/entities/todo_entry.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | import 'package:todo_app/1_domain/entities/unique_id.dart'; 3 | 4 | class ToDoEntry extends Equatable { 5 | final String description; 6 | final bool isDone; 7 | final EntryId id; 8 | 9 | const ToDoEntry({ 10 | required this.id, 11 | required this.description, 12 | required this.isDone, 13 | }); 14 | 15 | factory ToDoEntry.empty() { 16 | return ToDoEntry( 17 | id: EntryId(), 18 | description: '', 19 | isDone: false, 20 | ); 21 | } 22 | 23 | ToDoEntry copyWith({ 24 | String? description, 25 | bool? isDone, 26 | }) { 27 | return ToDoEntry( 28 | id: id, 29 | description: description ?? this.description, 30 | isDone: isDone ?? this.isDone, 31 | ); 32 | } 33 | 34 | @override 35 | List get props => [id, isDone, description]; 36 | } 37 | -------------------------------------------------------------------------------- /5_todo_app/lib/1_domain/use_cases/create_todo_entry.dart: -------------------------------------------------------------------------------- 1 | import 'package:todo_app/1_domain/failures/failures.dart'; 2 | import 'package:either_dart/either.dart'; 3 | import 'package:todo_app/1_domain/repositories/todo_repository.dart'; 4 | import 'package:todo_app/core/use_case.dart'; 5 | 6 | class CreateToDoEntry implements UseCase { 7 | CreateToDoEntry({required this.toDoRepository}); 8 | 9 | final ToDoRepository toDoRepository; 10 | 11 | @override 12 | Future> call(params) async { 13 | try { 14 | final result = toDoRepository.createToDoEntry( 15 | params.collectionId, 16 | params.entry, 17 | ); 18 | 19 | return result.fold( 20 | (left) => Left(left), 21 | (right) => Right(right), 22 | ); 23 | } on Exception catch (e) { 24 | return Left(ServerFailure(stackTrace: e.toString())); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/pages/home/bloc/navigation_todo_cubit.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_bloc/flutter_bloc.dart'; 2 | import 'package:todo_app/1_domain/entities/unique_id.dart'; 3 | import 'package:equatable/equatable.dart'; 4 | 5 | part 'navigation_todo_cubit_state.dart'; 6 | 7 | class NavigationToDoCubit extends Cubit { 8 | NavigationToDoCubit() : super(const NavigationToDoCubitState()); 9 | 10 | void selectedToDoCollectionChanged(CollectionId collectionId) { 11 | emit(NavigationToDoCubitState(selectedCollectionId: collectionId)); 12 | } 13 | 14 | void secondBodyHasChanged({required bool isSecondBodyDisplayed}) { 15 | if (state.isSecondBodyDisplayed != isSecondBodyDisplayed) { 16 | emit(NavigationToDoCubitState( 17 | isSecondBodyDisplayed: isSecondBodyDisplayed, 18 | selectedCollectionId: state.selectedCollectionId, 19 | )); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /2_flutter/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | migrate_working_dir/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | #.vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | **/doc/api/ 26 | **/ios/Flutter/.last_build_id 27 | .dart_tool/ 28 | .flutter-plugins 29 | .flutter-plugins-dependencies 30 | .packages 31 | .pub-cache/ 32 | .pub/ 33 | /build/ 34 | 35 | # Web related 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 | -------------------------------------------------------------------------------- /3_advicer/test/2_application/pages/advice/bloc/advicer_bloc_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:advicer/2_application/pages/advice/bloc/advicer_bloc.dart'; 2 | import 'package:bloc_test/bloc_test.dart'; 3 | import 'package:test/scaffolding.dart'; 4 | 5 | void main() { 6 | group('AdvicerBloc', () { 7 | group('should emits', () { 8 | blocTest( 9 | 'nothing when no event is added', 10 | build: () => AdvicerBloc(), 11 | expect: () => const [], 12 | ); 13 | 14 | blocTest( 15 | '[AdvicerStateLoading, AdvicerStateError] when AdviceRequestedEvent is added', 16 | build: () => AdvicerBloc(), 17 | act: (bloc) => bloc.add(AdviceRequestedEvent()), 18 | wait: const Duration(seconds: 3), 19 | expect: () => [AdvicerStateLoading(), AdvicerStateError(message: 'error message')], 20 | ); 21 | }); 22 | }); 23 | } 24 | -------------------------------------------------------------------------------- /2_flutter/lib/theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | // about Material 3(https://m3.material.io/) and the useMaterial3 flag(https://api.flutter.dev/flutter/material/ThemeData/useMaterial3.html) 4 | 5 | class AppTheme { 6 | AppTheme._(); 7 | 8 | static const _primaryColorLight = Colors.lightBlueAccent; 9 | 10 | static const _primaryColorDark = Colors.lightGreenAccent; 11 | 12 | static final ThemeData lightTheme = ThemeData( 13 | colorScheme: ColorScheme.fromSeed( 14 | seedColor: _primaryColorLight, 15 | brightness: Brightness.light, 16 | ), 17 | useMaterial3: true, 18 | ); 19 | 20 | static final ThemeData darkTheme = ThemeData( 21 | useMaterial3: true, 22 | appBarTheme: const AppBarTheme( 23 | centerTitle: false, 24 | ), 25 | colorScheme: ColorScheme.fromSeed( 26 | seedColor: _primaryColorDark, 27 | brightness: Brightness.dark, 28 | ), 29 | ); 30 | } 31 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/widget_examples/widgets/row_expanded_example.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class RowEpandedExample extends StatelessWidget { 4 | const RowEpandedExample({ 5 | super.key, 6 | }); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Row( 11 | spacing: 8, 12 | mainAxisAlignment: MainAxisAlignment.start, 13 | children: [ 14 | const Expanded( 15 | child: Text( 16 | 'Max Steffen - Freelancer for flutter - living in germany', 17 | maxLines: 1, 18 | overflow: TextOverflow.ellipsis, 19 | ), 20 | ), 21 | Container( 22 | height: 20, 23 | width: 20, 24 | color: Colors.blue, 25 | ), 26 | Container( 27 | height: 20, 28 | width: 20, 29 | color: Colors.green, 30 | ), 31 | ], 32 | ); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /3_advicer/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | migrate_working_dir/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | #.vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | **/doc/api/ 26 | **/ios/Flutter/.last_build_id 27 | .dart_tool/ 28 | .flutter-plugins 29 | .flutter-plugins-dependencies 30 | .packages 31 | .pub-cache/ 32 | .pub/ 33 | /build/ 34 | 35 | # Symbolication related 36 | app.*.symbols 37 | 38 | # Obfuscation related 39 | app.*.map.json 40 | 41 | # Android Studio will place build artifacts here 42 | /android/app/debug 43 | /android/app/profile 44 | /android/app/release 45 | 46 | # ignore failures 47 | **/failures/* -------------------------------------------------------------------------------- /5_todo_app/lib/0_data/data_sources/interfaces/todo_local_data_source_interface.dart: -------------------------------------------------------------------------------- 1 | import 'package:todo_app/0_data/models/todo_collection_model.dart'; 2 | import 'package:todo_app/0_data/models/todo_entry_model.dart'; 3 | 4 | abstract class ToDoLocalDataSourceInterface { 5 | Future getToDoEntry({ 6 | required String collectionId, 7 | required String entryId, 8 | }); 9 | 10 | Future> getToDoEntryIds({required String collectionId}); 11 | 12 | Future getToDoCollection({required String collectionId}); 13 | 14 | Future> getToDoCollectionIds(); 15 | 16 | Future createToDoEntry({required String collectionId, required ToDoEntryModel entry}); 17 | 18 | Future createToDoCollection({required ToDoCollectionModel collection}); 19 | 20 | Future updateToDoEntry({ 21 | required String collectionId, 22 | required String entryId, 23 | }); 24 | } 25 | -------------------------------------------------------------------------------- /3_advicer/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: advicer 2 | description: A new Flutter project. 3 | 4 | publish_to: 'none' 5 | 6 | 7 | version: 1.0.0+1 8 | 9 | environment: 10 | sdk: '>=3.6.0 <4.0.0' 11 | 12 | 13 | dependencies: 14 | cupertino_icons: ^1.0.8 15 | flutter: 16 | sdk: flutter 17 | provider: ^6.1.2 18 | flutter_bloc: ^9.0.0 19 | equatable: ^2.0.7 20 | dartz: ^0.10.1 21 | http: ^1.3.0 22 | get_it: ^8.0.3 23 | 24 | dev_dependencies: 25 | test: ^1.25.8 26 | flutter_test: 27 | sdk: flutter 28 | integration_test: 29 | sdk: flutter 30 | build_runner: ^2.4.14 31 | flutter_lints: ^5.0.0 32 | mockito: ^5.4.5 33 | bloc_test: ^10.0.0 34 | mocktail: ^1.0.4 35 | platform: ^3.1.5 36 | file: ^7.0.0 37 | 38 | 39 | flutter: 40 | uses-material-design: true 41 | 42 | # To add assets to your application, add an assets section, like this: 43 | # assets: 44 | # - images/a_dot_burr.jpeg 45 | # - images/a_dot_ham.jpeg 46 | 47 | -------------------------------------------------------------------------------- /gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | migrate_working_dir/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | #.vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | **/doc/api/ 26 | **/ios/Flutter/.last_build_id 27 | .dart_tool/ 28 | .flutter-plugins 29 | .flutter-plugins-dependencies 30 | .packages 31 | .pub-cache/ 32 | .pub/ 33 | /build/ 34 | 35 | # Web related 36 | lib/generated_plugin_registrant.dart 37 | 38 | # Symbolication related 39 | app.*.symbols 40 | 41 | # Obfuscation related 42 | app.*.map.json 43 | 44 | # Android Studio will place build artifacts here 45 | /android/app/debug 46 | /android/app/profile 47 | /android/app/release 48 | -------------------------------------------------------------------------------- /5_todo_app/windows/flutter/generated_plugins.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Generated file, do not edit. 3 | # 4 | 5 | list(APPEND FLUTTER_PLUGIN_LIST 6 | cloud_firestore 7 | desktop_webview_auth 8 | firebase_auth 9 | firebase_core 10 | ) 11 | 12 | list(APPEND FLUTTER_FFI_PLUGIN_LIST 13 | ) 14 | 15 | set(PLUGIN_BUNDLED_LIBRARIES) 16 | 17 | foreach(plugin ${FLUTTER_PLUGIN_LIST}) 18 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) 19 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) 20 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $) 21 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) 22 | endforeach(plugin) 23 | 24 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) 25 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) 26 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) 27 | endforeach(ffi_plugin) 28 | -------------------------------------------------------------------------------- /2_flutter/windows/runner/runner.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PerMonitorV2 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /5_todo_app/lib/0_data/data_sources/mapper/todo_collection_mapper.dart: -------------------------------------------------------------------------------- 1 | import 'package:todo_app/0_data/models/todo_collection_model.dart'; 2 | import 'package:todo_app/1_domain/entities/todo_collection.dart'; 3 | import 'package:todo_app/1_domain/entities/todo_color.dart'; 4 | import 'package:todo_app/1_domain/entities/unique_id.dart'; 5 | 6 | mixin ToDoCollectionMapper { 7 | ToDoCollection toDoCollectionModelToEntity(ToDoCollectionModel model) { 8 | final entity = ToDoCollection( 9 | id: CollectionId.fromUniqueString(model.id), 10 | title: model.title, 11 | color: ToDoColor(colorIndex: model.colorIndex), 12 | ); 13 | 14 | return entity; 15 | } 16 | 17 | ToDoCollectionModel toDoCollectionToModel(ToDoCollection collection) { 18 | final model = ToDoCollectionModel( 19 | id: collection.id.value, 20 | title: collection.title, 21 | colorIndex: collection.color.colorIndex, 22 | ); 23 | 24 | return model; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /3_advicer/windows/runner/runner.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PerMonitorV2 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /5_todo_app/windows/runner/runner.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PerMonitorV2 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /5_todo_app/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.7.10' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:7.2.0' 10 | // START: FlutterFire Configuration 11 | classpath 'com.google.gms:google-services:4.3.10' 12 | classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1' 13 | // END: FlutterFire Configuration 14 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 15 | } 16 | } 17 | 18 | allprojects { 19 | repositories { 20 | google() 21 | mavenCentral() 22 | } 23 | } 24 | 25 | rootProject.buildDir = '../build' 26 | subprojects { 27 | project.buildDir = "${rootProject.buildDir}/${project.name}" 28 | } 29 | subprojects { 30 | project.evaluationDependsOn(':app') 31 | } 32 | 33 | tasks.register("clean", Delete) { 34 | delete rootProject.buildDir 35 | } 36 | -------------------------------------------------------------------------------- /5_todo_app/windows/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | void RegisterPlugins(flutter::PluginRegistry* registry) { 15 | CloudFirestorePluginCApiRegisterWithRegistrar( 16 | registry->GetRegistrarForPlugin("CloudFirestorePluginCApi")); 17 | DesktopWebviewAuthPluginRegisterWithRegistrar( 18 | registry->GetRegistrarForPlugin("DesktopWebviewAuthPlugin")); 19 | FirebaseAuthPluginCApiRegisterWithRegistrar( 20 | registry->GetRegistrarForPlugin("FirebaseAuthPluginCApi")); 21 | FirebaseCorePluginCApiRegisterWithRegistrar( 22 | registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); 23 | } 24 | -------------------------------------------------------------------------------- /3_advicer/lib/0_data/repositories/advice_repo_impl.dart: -------------------------------------------------------------------------------- 1 | import 'package:advicer/0_data/datasources/advice_remote_datasource.dart'; 2 | import 'package:advicer/0_data/exceptions/exceptions.dart'; 3 | import 'package:advicer/1_domain/failures/failures.dart'; 4 | import 'package:advicer/1_domain/entities/advice_entity.dart'; 5 | import 'package:advicer/1_domain/repositories/advice_repo.dart'; 6 | import 'package:dartz/dartz.dart'; 7 | 8 | class AdviceRepoImpl implements AdviceRepo { 9 | AdviceRepoImpl({required this.adviceRemoteDatasource}); 10 | final AdviceRemoteDatasource adviceRemoteDatasource; 11 | 12 | @override 13 | Future> getAdviceFromDatasource() async { 14 | try { 15 | final result = await adviceRemoteDatasource.getRandomAdviceFromApi(); 16 | return right(result); 17 | } on ServerException catch (_) { 18 | return left(ServerFailure()); 19 | } catch (e) { 20 | return left(GeneralFailure()); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /5_todo_app/lib/1_domain/use_cases/load_todo_collections.dart: -------------------------------------------------------------------------------- 1 | import 'package:todo_app/1_domain/entities/todo_collection.dart'; 2 | import 'package:todo_app/1_domain/failures/failures.dart'; 3 | import 'package:either_dart/either.dart'; 4 | import 'package:todo_app/1_domain/repositories/todo_repository.dart'; 5 | import 'package:todo_app/core/use_case.dart'; 6 | 7 | class LoadToDoCollections implements UseCase, NoParams> { 8 | const LoadToDoCollections({required this.toDoRepository}); 9 | 10 | final ToDoRepository toDoRepository; 11 | 12 | @override 13 | Future>> call(NoParams params) async { 14 | try { 15 | final loadedCollections = toDoRepository.readToDoCollections(); 16 | 17 | return loadedCollections.fold( 18 | (left) => Left(left), 19 | (right) => Right(right), 20 | ); 21 | } on Exception catch (e) { 22 | return Left( 23 | ServerFailure(stackTrace: e.toString()), 24 | ); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://www.dartlang.org/guides/libraries/private-files 2 | 3 | # Files and directories created by pub 4 | .dart_tool/ 5 | .packages 6 | build/ 7 | # If you're building an application, you may want to check-in your pubspec.lock 8 | pubspec.lock 9 | 10 | # Directory created by dartdoc 11 | # If you don't generate documentation locally you can remove this line. 12 | doc/api/ 13 | 14 | # Avoid committing generated Javascript files: 15 | *.dart.js 16 | *.info.json # Produced by the --dump-info flag. 17 | *.js # When generated by dart2js. Don't specify *.js if your 18 | # project includes source files written in JavaScript. 19 | *.js_ 20 | *.js.deps 21 | *.js.map 22 | 23 | # exclude firebase config 24 | 5_todo_app/android/app/google-services.json 25 | 5_todo_app/lib/firebase_options.dart 26 | 5_todo_app/ios/Runner/GoogleService-Info.plist 27 | 5_todo_app/ios/firebase_app_id_file.json 28 | 29 | # FVM Version Cache 30 | .fvm/ 31 | # FVM Version Cache 32 | .fvm/ 33 | # FVM Version Cache 34 | .fvm/ -------------------------------------------------------------------------------- /5_todo_app/lib/1_domain/use_cases/load_todo_entry.dart: -------------------------------------------------------------------------------- 1 | import 'package:either_dart/either.dart'; 2 | import 'package:todo_app/1_domain/entities/todo_entry.dart'; 3 | import 'package:todo_app/1_domain/failures/failures.dart'; 4 | import 'package:todo_app/1_domain/repositories/todo_repository.dart'; 5 | import 'package:todo_app/core/use_case.dart'; 6 | 7 | class LoadToDoEntry implements UseCase { 8 | const LoadToDoEntry({ 9 | required this.toDoRepository, 10 | }); 11 | final ToDoRepository toDoRepository; 12 | 13 | @override 14 | Future> call(ToDoEntryIdsParam params) async { 15 | try { 16 | final loadedEntry = toDoRepository.readToDoEntry( 17 | params.collectionId, 18 | params.entryId, 19 | ); 20 | 21 | return loadedEntry.fold( 22 | (left) => Left(left), 23 | (right) => Right(right), 24 | ); 25 | } on Exception catch (e) { 26 | return Left(ServerFailure(stackTrace: e.toString())); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/list/list_screen.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutterbasics/presentation/list/widgets/list_item.dart'; 3 | 4 | class ListScreen extends StatelessWidget { 5 | const ListScreen({super.key}); 6 | 7 | @override 8 | Widget build(BuildContext context) { 9 | List example = ['example', 'list', 'with', 'strings']; 10 | return Scaffold( 11 | appBar: AppBar( 12 | title: const Text('ListView Example'), 13 | ), 14 | body: Padding( 15 | padding: const EdgeInsets.all(10), 16 | child: ListView.separated( 17 | itemCount: example.length, 18 | separatorBuilder: (context, index) { 19 | return const SizedBox(height: 10); 20 | }, 21 | itemBuilder: (contex, index) { 22 | return ListItem( 23 | title: example[index], 24 | index: index, 25 | ); 26 | }), 27 | )); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/theme_animation/widgets/sun.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutterbasics/presentation/theme_animation/widgets/sun_shine.dart'; 3 | 4 | class Sun extends StatelessWidget { 5 | const Sun({super.key}); 6 | 7 | @override 8 | Widget build(BuildContext context) { 9 | return SunShine( 10 | radius: 160, 11 | child: SunShine( 12 | radius: 120, 13 | child: SunShine( 14 | radius: 80, 15 | child: Container( 16 | height: 50, 17 | width: 50, 18 | decoration: const BoxDecoration( 19 | shape: BoxShape.circle, 20 | gradient: LinearGradient( 21 | colors: [ 22 | Color(0xDDFC554F), 23 | Color(0xDDFFF79E), 24 | ], 25 | begin: Alignment.bottomLeft, 26 | end: Alignment.topRight, 27 | )), 28 | ), 29 | ), 30 | ), 31 | ); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /5_todo_app/lib/1_domain/repositories/todo_repository.dart: -------------------------------------------------------------------------------- 1 | import 'package:either_dart/either.dart'; 2 | import 'package:todo_app/1_domain/entities/todo_collection.dart'; 3 | import 'package:todo_app/1_domain/entities/todo_entry.dart'; 4 | import 'package:todo_app/1_domain/entities/unique_id.dart'; 5 | import 'package:todo_app/1_domain/failures/failures.dart'; 6 | 7 | abstract class ToDoRepository { 8 | Future>> readToDoCollections(); 9 | 10 | Future> readToDoEntry(CollectionId collectionId, EntryId entryId); 11 | 12 | Future>> readToDoEntryIds(CollectionId collectionId); 13 | 14 | Future> updateToDoEntry({ 15 | required CollectionId collectionId, 16 | required ToDoEntry entry, 17 | }); 18 | 19 | Future> createToDoCollection(ToDoCollection collection); 20 | 21 | Future> createToDoEntry( 22 | CollectionId collectionId, 23 | ToDoEntry entry, 24 | ); 25 | } 26 | -------------------------------------------------------------------------------- /5_todo_app/lib/1_domain/use_cases/update_todo_entry.dart: -------------------------------------------------------------------------------- 1 | import 'package:either_dart/either.dart'; 2 | import 'package:todo_app/1_domain/entities/todo_entry.dart'; 3 | import 'package:todo_app/1_domain/failures/failures.dart'; 4 | import 'package:todo_app/1_domain/repositories/todo_repository.dart'; 5 | import 'package:todo_app/core/use_case.dart'; 6 | 7 | class UpdateToDoEntry implements UseCase { 8 | const UpdateToDoEntry({required this.toDoRepository}); 9 | 10 | final ToDoRepository toDoRepository; 11 | 12 | @override 13 | Future> call(ToDoEntryParams params) async { 14 | try { 15 | final loadedEntry = await toDoRepository.updateToDoEntry( 16 | collectionId: params.collectionId, 17 | entry: params.entry, 18 | ); 19 | return loadedEntry.fold( 20 | (left) => Left(left), 21 | (right) => Right(right), 22 | ); 23 | } on Exception catch (e) { 24 | return Left(ServerFailure(stackTrace: e.toString())); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 14 | 15 | 17 | 18 | 20 | 21 | 23 | 24 | -------------------------------------------------------------------------------- /2_flutter/lib/presentation/list/widgets/list_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ListItem extends StatefulWidget { 4 | final String title; 5 | final int index; 6 | const ListItem({super.key, required this.title, required this.index}); 7 | 8 | @override 9 | State createState() => _ListItemState(); 10 | } 11 | 12 | class _ListItemState extends State { 13 | bool _isSelected = false; 14 | @override 15 | Widget build(BuildContext context) { 16 | return Container( 17 | decoration: BoxDecoration( 18 | color: Colors.blueAccent, borderRadius: BorderRadius.circular(5)), 19 | child: ListTile( 20 | title: Text(widget.title), 21 | subtitle: Text('item number ${widget.index}'), 22 | leading: Checkbox( 23 | value: _isSelected, 24 | onChanged: (value) { 25 | setState(() { 26 | _isSelected = value ?? false; 27 | }); 28 | }, 29 | 30 | ), 31 | ), 32 | ); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /5_todo_app/lib/1_domain/use_cases/load_todo_entry_ids_for_collection.dart: -------------------------------------------------------------------------------- 1 | import 'package:either_dart/either.dart'; 2 | import 'package:todo_app/1_domain/entities/unique_id.dart'; 3 | import 'package:todo_app/1_domain/failures/failures.dart'; 4 | import 'package:todo_app/1_domain/repositories/todo_repository.dart'; 5 | import 'package:todo_app/core/use_case.dart'; 6 | 7 | class LoadToDoEntryIdsForCollection implements UseCase, CollectionIdParam> { 8 | const LoadToDoEntryIdsForCollection({required this.toDoRepository}); 9 | 10 | final ToDoRepository toDoRepository; 11 | 12 | @override 13 | Future>> call(CollectionIdParam params) async { 14 | try { 15 | final loadedIds = toDoRepository.readToDoEntryIds( 16 | params.collectionId, 17 | ); 18 | 19 | return loadedIds.fold( 20 | (left) => Left(left), 21 | (right) => Right(right), 22 | ); 23 | } on Exception catch (e) { 24 | return Left(ServerFailure(stackTrace: e.toString())); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /3_advicer/lib/2_application/pages/advice/widgets/advice_field.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class AdviceField extends StatelessWidget { 4 | static String emptyAdvice = 'What should i do with an empty advice?!'; 5 | 6 | final String advice; 7 | const AdviceField({super.key, required this.advice}); 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | final themeData = Theme.of(context); 12 | return Material( 13 | elevation: 20, 14 | borderRadius: BorderRadius.circular(15), 15 | child: Container( 16 | decoration: BoxDecoration(borderRadius: BorderRadius.circular(15), color: themeData.colorScheme.onPrimary), 17 | child: Padding( 18 | padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 20), 19 | child: Text( 20 | advice.isNotEmpty ? '''" $advice "''' : emptyAdvice, 21 | style: themeData.textTheme.bodyLarge, 22 | textAlign: TextAlign.center, 23 | ), 24 | )), 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /3_advicer/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:advicer/theme.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:provider/provider.dart'; 4 | 5 | import '2_application/core/services/theme_service.dart'; 6 | import '2_application/pages/advice/advice_page.dart'; 7 | import 'injection.dart' as di; // di = dependency injection 8 | 9 | void main() async { 10 | WidgetsFlutterBinding.ensureInitialized(); 11 | await di.init(); 12 | runApp(ChangeNotifierProvider( 13 | create: (context) => ThemeService(), 14 | child: const MyApp(), 15 | )); 16 | } 17 | 18 | class MyApp extends StatelessWidget { 19 | const MyApp({super.key}); 20 | @override 21 | Widget build(BuildContext context) { 22 | return Consumer(builder: (context, themeService, child) { 23 | return MaterialApp( 24 | themeMode: themeService.isDarkModeOn ? ThemeMode.dark : ThemeMode.light, 25 | theme: AppTheme.lightTheme, 26 | darkTheme: AppTheme.darkTheme, 27 | home: const AdvicerPageWrapperProvider(), 28 | ); 29 | }); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /3_advicer/web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "advicer", 3 | "short_name": "advicer", 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 | "src": "icons/Icon-maskable-192.png", 24 | "sizes": "192x192", 25 | "type": "image/png", 26 | "purpose": "maskable" 27 | }, 28 | { 29 | "src": "icons/Icon-maskable-512.png", 30 | "sizes": "512x512", 31 | "type": "image/png", 32 | "purpose": "maskable" 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /5_todo_app/web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "todo_app", 3 | "short_name": "todo_app", 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 | "src": "icons/Icon-maskable-192.png", 24 | "sizes": "192x192", 25 | "type": "image/png", 26 | "purpose": "maskable" 27 | }, 28 | { 29 | "src": "icons/Icon-maskable-512.png", 30 | "sizes": "512x512", 31 | "type": "image/png", 32 | "purpose": "maskable" 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /2_flutter/web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "flutterbasics", 3 | "short_name": "flutterbasics", 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 | "src": "icons/Icon-maskable-192.png", 24 | "sizes": "192x192", 25 | "type": "image/png", 26 | "purpose": "maskable" 27 | }, 28 | { 29 | "src": "icons/Icon-maskable-512.png", 30 | "sizes": "512x512", 31 | "type": "image/png", 32 | "purpose": "maskable" 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /5_todo_app/lib/2_application/app/basic_app.dart: -------------------------------------------------------------------------------- 1 | import 'package:easy_localization/easy_localization.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:todo_app/2_application/core/routes.dart'; 4 | 5 | class BasicApp extends StatelessWidget { 6 | const BasicApp({super.key}); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return MaterialApp.router( 11 | title: 'ToDo App', 12 | localizationsDelegates: context.localizationDelegates, 13 | supportedLocales: context.supportedLocales, 14 | locale: context.locale, 15 | themeMode: ThemeMode.system, 16 | theme: ThemeData.from( 17 | useMaterial3: true, 18 | colorScheme: ColorScheme.fromSeed( 19 | seedColor: Colors.deepOrange, 20 | brightness: Brightness.light, 21 | ), 22 | ), 23 | darkTheme: ThemeData.from( 24 | useMaterial3: true, 25 | colorScheme: ColorScheme.fromSeed( 26 | seedColor: Colors.deepOrange, 27 | ), 28 | ), 29 | routerConfig: routes, 30 | ); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /2_flutter/.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: "761747bfc538b5af34aa0d3fac380f1bc331ec49" 8 | channel: "stable" 9 | 10 | project_type: app 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 17 | base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 18 | - platform: web 19 | create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 20 | base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 21 | 22 | # User provided section 23 | 24 | # List of Local paths (relative to this file) that should be 25 | # ignored by the migrate tool. 26 | # 27 | # Files that are not part of the templates will be ignored by default. 28 | unmanaged_files: 29 | - 'lib/main.dart' 30 | - 'ios/Runner.xcodeproj/project.pbxproj' 31 | -------------------------------------------------------------------------------- /2_flutter/windows/runner/flutter_window.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_FLUTTER_WINDOW_H_ 2 | #define RUNNER_FLUTTER_WINDOW_H_ 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | #include "win32_window.h" 10 | 11 | // A window that does nothing but host a Flutter view. 12 | class FlutterWindow : public Win32Window { 13 | public: 14 | // Creates a new FlutterWindow hosting a Flutter view running |project|. 15 | explicit FlutterWindow(const flutter::DartProject& project); 16 | virtual ~FlutterWindow(); 17 | 18 | protected: 19 | // Win32Window: 20 | bool OnCreate() override; 21 | void OnDestroy() override; 22 | LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, 23 | LPARAM const lparam) noexcept override; 24 | 25 | private: 26 | // The project to run. 27 | flutter::DartProject project_; 28 | 29 | // The Flutter instance hosted by this window. 30 | std::unique_ptr flutter_controller_; 31 | }; 32 | 33 | #endif // RUNNER_FLUTTER_WINDOW_H_ 34 | -------------------------------------------------------------------------------- /3_advicer/.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: "761747bfc538b5af34aa0d3fac380f1bc331ec49" 8 | channel: "stable" 9 | 10 | project_type: app 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 17 | base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 18 | - platform: web 19 | create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 20 | base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 21 | 22 | # User provided section 23 | 24 | # List of Local paths (relative to this file) that should be 25 | # ignored by the migrate tool. 26 | # 27 | # Files that are not part of the templates will be ignored by default. 28 | unmanaged_files: 29 | - 'lib/main.dart' 30 | - 'ios/Runner.xcodeproj/project.pbxproj' 31 | -------------------------------------------------------------------------------- /3_advicer/windows/runner/flutter_window.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_FLUTTER_WINDOW_H_ 2 | #define RUNNER_FLUTTER_WINDOW_H_ 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | #include "win32_window.h" 10 | 11 | // A window that does nothing but host a Flutter view. 12 | class FlutterWindow : public Win32Window { 13 | public: 14 | // Creates a new FlutterWindow hosting a Flutter view running |project|. 15 | explicit FlutterWindow(const flutter::DartProject& project); 16 | virtual ~FlutterWindow(); 17 | 18 | protected: 19 | // Win32Window: 20 | bool OnCreate() override; 21 | void OnDestroy() override; 22 | LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, 23 | LPARAM const lparam) noexcept override; 24 | 25 | private: 26 | // The project to run. 27 | flutter::DartProject project_; 28 | 29 | // The Flutter instance hosted by this window. 30 | std::unique_ptr flutter_controller_; 31 | }; 32 | 33 | #endif // RUNNER_FLUTTER_WINDOW_H_ 34 | -------------------------------------------------------------------------------- /5_todo_app/.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: "761747bfc538b5af34aa0d3fac380f1bc331ec49" 8 | channel: "stable" 9 | 10 | project_type: app 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 17 | base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 18 | - platform: web 19 | create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 20 | base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 21 | 22 | # User provided section 23 | 24 | # List of Local paths (relative to this file) that should be 25 | # ignored by the migrate tool. 26 | # 27 | # Files that are not part of the templates will be ignored by default. 28 | unmanaged_files: 29 | - 'lib/main.dart' 30 | - 'ios/Runner.xcodeproj/project.pbxproj' 31 | -------------------------------------------------------------------------------- /5_todo_app/windows/runner/flutter_window.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_FLUTTER_WINDOW_H_ 2 | #define RUNNER_FLUTTER_WINDOW_H_ 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | #include "win32_window.h" 10 | 11 | // A window that does nothing but host a Flutter view. 12 | class FlutterWindow : public Win32Window { 13 | public: 14 | // Creates a new FlutterWindow hosting a Flutter view running |project|. 15 | explicit FlutterWindow(const flutter::DartProject& project); 16 | virtual ~FlutterWindow(); 17 | 18 | protected: 19 | // Win32Window: 20 | bool OnCreate() override; 21 | void OnDestroy() override; 22 | LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, 23 | LPARAM const lparam) noexcept override; 24 | 25 | private: 26 | // The project to run. 27 | flutter::DartProject project_; 28 | 29 | // The Flutter instance hosted by this window. 30 | std::unique_ptr flutter_controller_; 31 | }; 32 | 33 | #endif // RUNNER_FLUTTER_WINDOW_H_ 34 | -------------------------------------------------------------------------------- /2_flutter/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /3_advicer/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /3_advicer/lib/2_application/pages/advice/widgets/custom_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomButton extends StatelessWidget { 4 | const CustomButton({this.onTap, super.key}); 5 | 6 | final Function()? onTap; 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | final themeData = Theme.of(context); 11 | return InkResponse( 12 | onTap: onTap?.call(), 13 | child: Material( 14 | elevation: 20, 15 | borderRadius: BorderRadius.circular(15), 16 | child: Container( 17 | decoration: BoxDecoration( 18 | borderRadius: BorderRadius.circular(15), 19 | color: onTap == null ? themeData.colorScheme.errorContainer : themeData.colorScheme.secondary, 20 | ), 21 | child: Padding( 22 | padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 15), 23 | child: Text( 24 | 'Get Advice', 25 | style: themeData.textTheme.displayLarge, 26 | ), 27 | ), 28 | ), 29 | ), 30 | ); 31 | } 32 | } 33 | --------------------------------------------------------------------------------