From 0afddb83a3fa6675f8559513d0995d81458c7438 Mon Sep 17 00:00:00 2001 From: Thomas Burkhart Date: Sun, 4 Oct 2020 22:52:39 +0200 Subject: [PATCH 01/77] first try :-) --- built_redux/lib/models/app_state.g.dart | 2 +- rvms/.flutter-plugins-dependencies | 1 + rvms/.gitignore | 73 +++ rvms/.metadata | 10 + rvms/README.md | 16 + rvms/android/.gitignore | 7 + rvms/android/app/build.gradle | 67 +++ .../android/app/src/debug/AndroidManifest.xml | 7 + rvms/android/app/src/main/AndroidManifest.xml | 30 + .../com/example/scoped_model/MainActivity.kt | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values/styles.xml | 8 + .../app/src/profile/AndroidManifest.xml | 7 + rvms/android/build.gradle | 31 ++ rvms/android/gradle.properties | 4 + .../gradle/wrapper/gradle-wrapper.properties | 6 + rvms/android/settings.gradle | 15 + rvms/ios/.gitignore | 32 ++ rvms/ios/Flutter/AppFrameworkInfo.plist | 26 + rvms/ios/Flutter/Debug.xcconfig | 2 + rvms/ios/Flutter/Release.xcconfig | 2 + rvms/ios/Podfile | 90 +++ rvms/ios/Runner.xcodeproj/project.pbxproj | 518 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/xcschemes/Runner.xcscheme | 91 +++ .../contents.xcworkspacedata | 7 + rvms/ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 +++++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 564 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1588 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1025 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1716 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 1920 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 1895 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 3831 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 1888 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 3294 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 3612 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 ++ rvms/ios/Runner/Base.lproj/Main.storyboard | 26 + rvms/ios/Runner/Info.plist | 45 ++ rvms/ios/Runner/Runner-Bridging-Header.h | 1 + .../display_todos/_manager/todo_manager_.dart | 32 ++ .../_manager/todo_manager_implementation.dart | 119 ++++ rvms/lib/display_todos/_model/todo.dart | 57 ++ rvms/lib/display_todos/_model/typedefs.dart | 21 + rvms/lib/display_todos/detail_screen.dart | 105 ++++ rvms/lib/display_todos/home_screen.dart | 73 +++ .../widgets/extra_actions_button.dart | 45 ++ .../display_todos/widgets/filter_button.dart | 70 +++ .../display_todos/widgets/stats_counter.dart | 62 +++ rvms/lib/display_todos/widgets/todo_item.dart | 50 ++ rvms/lib/display_todos/widgets/todo_list.dart | 89 +++ rvms/lib/edit_todos/add_edit_screen.dart | 107 ++++ rvms/lib/localization.dart | 29 + rvms/lib/locator.dart | 11 + rvms/lib/main.dart | 10 + rvms/lib/startup/app.dart | 27 + rvms/pubspec.yaml | 71 +++ rvms/test/app_state_test.dart | 169 ++++++ rvms/test_driver/todo_app.dart | 13 + rvms/test_driver/todo_app_test.dart | 9 + vanilla/.flutter-plugins-dependencies | 2 +- 78 files changed, 2524 insertions(+), 2 deletions(-) create mode 100644 rvms/.flutter-plugins-dependencies create mode 100644 rvms/.gitignore create mode 100644 rvms/.metadata create mode 100644 rvms/README.md create mode 100644 rvms/android/.gitignore create mode 100644 rvms/android/app/build.gradle create mode 100644 rvms/android/app/src/debug/AndroidManifest.xml create mode 100644 rvms/android/app/src/main/AndroidManifest.xml create mode 100644 rvms/android/app/src/main/kotlin/com/example/scoped_model/MainActivity.kt create mode 100644 rvms/android/app/src/main/res/drawable/launch_background.xml create mode 100644 rvms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 rvms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 rvms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 rvms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 rvms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 rvms/android/app/src/main/res/values/styles.xml create mode 100644 rvms/android/app/src/profile/AndroidManifest.xml create mode 100644 rvms/android/build.gradle create mode 100644 rvms/android/gradle.properties create mode 100644 rvms/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 rvms/android/settings.gradle create mode 100644 rvms/ios/.gitignore create mode 100644 rvms/ios/Flutter/AppFrameworkInfo.plist create mode 100644 rvms/ios/Flutter/Debug.xcconfig create mode 100644 rvms/ios/Flutter/Release.xcconfig create mode 100644 rvms/ios/Podfile create mode 100644 rvms/ios/Runner.xcodeproj/project.pbxproj create mode 100644 rvms/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 rvms/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 rvms/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 rvms/ios/Runner/AppDelegate.swift create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 rvms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 rvms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 rvms/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 rvms/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 rvms/ios/Runner/Base.lproj/Main.storyboard create mode 100644 rvms/ios/Runner/Info.plist create mode 100644 rvms/ios/Runner/Runner-Bridging-Header.h create mode 100644 rvms/lib/display_todos/_manager/todo_manager_.dart create mode 100644 rvms/lib/display_todos/_manager/todo_manager_implementation.dart create mode 100644 rvms/lib/display_todos/_model/todo.dart create mode 100644 rvms/lib/display_todos/_model/typedefs.dart create mode 100644 rvms/lib/display_todos/detail_screen.dart create mode 100644 rvms/lib/display_todos/home_screen.dart create mode 100644 rvms/lib/display_todos/widgets/extra_actions_button.dart create mode 100644 rvms/lib/display_todos/widgets/filter_button.dart create mode 100644 rvms/lib/display_todos/widgets/stats_counter.dart create mode 100644 rvms/lib/display_todos/widgets/todo_item.dart create mode 100644 rvms/lib/display_todos/widgets/todo_list.dart create mode 100644 rvms/lib/edit_todos/add_edit_screen.dart create mode 100644 rvms/lib/localization.dart create mode 100644 rvms/lib/locator.dart create mode 100644 rvms/lib/main.dart create mode 100644 rvms/lib/startup/app.dart create mode 100644 rvms/pubspec.yaml create mode 100644 rvms/test/app_state_test.dart create mode 100644 rvms/test_driver/todo_app.dart create mode 100644 rvms/test_driver/todo_app_test.dart diff --git a/built_redux/lib/models/app_state.g.dart b/built_redux/lib/models/app_state.g.dart index dec2e8d6..27746966 100644 --- a/built_redux/lib/models/app_state.g.dart +++ b/built_redux/lib/models/app_state.g.dart @@ -136,7 +136,7 @@ class _$AppState extends AppState { if (identical(other, this)) return true; if (other is! AppState) return false; return isLoading == other.isLoading && - todos == other.todos && + todos == other.filteredTodos && activeTab == other.activeTab && activeFilter == other.activeFilter; } diff --git a/rvms/.flutter-plugins-dependencies b/rvms/.flutter-plugins-dependencies new file mode 100644 index 00000000..337cd5d4 --- /dev/null +++ b/rvms/.flutter-plugins-dependencies @@ -0,0 +1 @@ +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"android":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_macos-0.0.4+4\\\\","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_linux-0.0.1+2\\\\","dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_windows-0.0.4+1\\\\","dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]}],"date_created":"2020-10-02 22:19:30.591918","version":"1.22.0"} \ No newline at end of file diff --git a/rvms/.gitignore b/rvms/.gitignore new file mode 100644 index 00000000..2ddde2a5 --- /dev/null +++ b/rvms/.gitignore @@ -0,0 +1,73 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.packages +.pub-cache/ +.pub/ +/build/ + +# Android related +**/android/**/gradle-wrapper.jar +**/android/.gradle +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/Flutter/flutter_export_environment.sh +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages diff --git a/rvms/.metadata b/rvms/.metadata new file mode 100644 index 00000000..1b5cec02 --- /dev/null +++ b/rvms/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: 27321ebbad34b0a3fafe99fac037102196d655ff + channel: stable + +project_type: app diff --git a/rvms/README.md b/rvms/README.md new file mode 100644 index 00000000..6874c617 --- /dev/null +++ b/rvms/README.md @@ -0,0 +1,16 @@ +# scoped_model + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) + +For help getting started with Flutter, view our +[online documentation](https://flutter.dev/docs), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/rvms/android/.gitignore b/rvms/android/.gitignore new file mode 100644 index 00000000..bc2100d8 --- /dev/null +++ b/rvms/android/.gitignore @@ -0,0 +1,7 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java diff --git a/rvms/android/app/build.gradle b/rvms/android/app/build.gradle new file mode 100644 index 00000000..e16427c0 --- /dev/null +++ b/rvms/android/app/build.gradle @@ -0,0 +1,67 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion 28 + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + lintOptions { + disable 'InvalidPackage' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.scoped_model" + minSdkVersion 16 + targetSdkVersion 28 + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test:runner:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' +} diff --git a/rvms/android/app/src/debug/AndroidManifest.xml b/rvms/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..321ebbeb --- /dev/null +++ b/rvms/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/rvms/android/app/src/main/AndroidManifest.xml b/rvms/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..59c10228 --- /dev/null +++ b/rvms/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + diff --git a/rvms/android/app/src/main/kotlin/com/example/scoped_model/MainActivity.kt b/rvms/android/app/src/main/kotlin/com/example/scoped_model/MainActivity.kt new file mode 100644 index 00000000..2334c261 --- /dev/null +++ b/rvms/android/app/src/main/kotlin/com/example/scoped_model/MainActivity.kt @@ -0,0 +1,12 @@ +package com.example.scoped_model + +import androidx.annotation.NonNull; +import io.flutter.embedding.android.FlutterActivity +import io.flutter.embedding.engine.FlutterEngine +import io.flutter.plugins.GeneratedPluginRegistrant + +class MainActivity: FlutterActivity() { + override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { + GeneratedPluginRegistrant.registerWith(flutterEngine); + } +} diff --git a/rvms/android/app/src/main/res/drawable/launch_background.xml b/rvms/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000..304732f8 --- /dev/null +++ b/rvms/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/rvms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/rvms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/rvms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/rvms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/rvms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/rvms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/rvms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/rvms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/rvms/android/app/src/main/res/values/styles.xml b/rvms/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..00fa4417 --- /dev/null +++ b/rvms/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + diff --git a/rvms/android/app/src/profile/AndroidManifest.xml b/rvms/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000..321ebbeb --- /dev/null +++ b/rvms/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/rvms/android/build.gradle b/rvms/android/build.gradle new file mode 100644 index 00000000..3100ad2d --- /dev/null +++ b/rvms/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.3.50' + repositories { + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:3.5.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/rvms/android/gradle.properties b/rvms/android/gradle.properties new file mode 100644 index 00000000..38c8d454 --- /dev/null +++ b/rvms/android/gradle.properties @@ -0,0 +1,4 @@ +org.gradle.jvmargs=-Xmx1536M +android.enableR8=true +android.useAndroidX=true +android.enableJetifier=true diff --git a/rvms/android/gradle/wrapper/gradle-wrapper.properties b/rvms/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..296b146b --- /dev/null +++ b/rvms/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Jun 23 08:50:38 CEST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip diff --git a/rvms/android/settings.gradle b/rvms/android/settings.gradle new file mode 100644 index 00000000..5a2f14fb --- /dev/null +++ b/rvms/android/settings.gradle @@ -0,0 +1,15 @@ +include ':app' + +def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() + +def plugins = new Properties() +def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') +if (pluginsFile.exists()) { + pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } +} + +plugins.each { name, path -> + def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() + include ":$name" + project(":$name").projectDir = pluginDirectory +} diff --git a/rvms/ios/.gitignore b/rvms/ios/.gitignore new file mode 100644 index 00000000..e96ef602 --- /dev/null +++ b/rvms/ios/.gitignore @@ -0,0 +1,32 @@ +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/rvms/ios/Flutter/AppFrameworkInfo.plist b/rvms/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000..6b4c0f78 --- /dev/null +++ b/rvms/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 8.0 + + diff --git a/rvms/ios/Flutter/Debug.xcconfig b/rvms/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000..e8efba11 --- /dev/null +++ b/rvms/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/rvms/ios/Flutter/Release.xcconfig b/rvms/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000..399e9340 --- /dev/null +++ b/rvms/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/rvms/ios/Podfile b/rvms/ios/Podfile new file mode 100644 index 00000000..b30a428b --- /dev/null +++ b/rvms/ios/Podfile @@ -0,0 +1,90 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '9.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def parse_KV_file(file, separator='=') + file_abs_path = File.expand_path(file) + if !File.exists? file_abs_path + return []; + end + generated_key_values = {} + skip_line_start_symbols = ["#", "/"] + File.foreach(file_abs_path) do |line| + next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } + plugin = line.split(pattern=separator) + if plugin.length == 2 + podname = plugin[0].strip() + path = plugin[1].strip() + podpath = File.expand_path("#{path}", file_abs_path) + generated_key_values[podname] = podpath + else + puts "Invalid plugin specification: #{line}" + end + end + generated_key_values +end + +target 'Runner' do + use_frameworks! + use_modular_headers! + + # Flutter Pod + + copied_flutter_dir = File.join(__dir__, 'Flutter') + copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') + copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') + unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) + # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet. + # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration. + # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist. + + generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') + unless File.exist?(generated_xcode_build_settings_path) + raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) + cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; + + unless File.exist?(copied_framework_path) + FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) + end + unless File.exist?(copied_podspec_path) + FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) + end + end + + # Keep pod path relative so it can be checked into Podfile.lock. + pod 'Flutter', :path => 'Flutter' + + # Plugin Pods + + # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock + # referring to absolute paths on developers' machines. + system('rm -rf .symlinks') + system('mkdir -p .symlinks/plugins') + plugin_pods = parse_KV_file('../.flutter-plugins') + plugin_pods.each do |name, path| + symlink = File.join('.symlinks', 'plugins', name) + File.symlink(path, symlink) + pod name, :path => File.join(symlink, 'ios') + end +end + +# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. +install! 'cocoapods', :disable_input_output_paths => true + +post_install do |installer| + installer.pods_project.targets.each do |target| + target.build_configurations.each do |config| + config.build_settings['ENABLE_BITCODE'] = 'NO' + end + end +end diff --git a/rvms/ios/Runner.xcodeproj/project.pbxproj b/rvms/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..1ccce2d4 --- /dev/null +++ b/rvms/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,518 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; + 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; + 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, + 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, + 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B80C3931E831B6300D905FE /* App.framework */, + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEBA1CF902C7004384FC /* Flutter.framework */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 97C146F11CF9000F007C117D /* Supporting Files */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + 97C146F11CF9000F007C117D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1020; + ORGANIZATIONNAME = "The Chromium Authors"; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.scopedModel; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.scopedModel; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.scopedModel; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/rvms/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/rvms/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/rvms/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/rvms/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/rvms/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..a28140cf --- /dev/null +++ b/rvms/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rvms/ios/Runner.xcworkspace/contents.xcworkspacedata b/rvms/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/rvms/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/rvms/ios/Runner/AppDelegate.swift b/rvms/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000..70693e4a --- /dev/null +++ b/rvms/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..d36b1fab --- /dev/null +++ b/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 zcmeHN2~<R zh`|8`A_PQ1nSu(UMFx?8j8PC!!VDphaL#`F42fd#7Vlc`zIE4n%Y~eiz4y1j|NDpi z?<@|pSJ-HM`qifhf@m%MamgwK83`XpBA<+azdF#2QsT{X@z0A9Bq>~TVErigKH1~P zRX-!h-f0NJ4Mh++{D}J+K>~~rq}d%o%+4dogzXp7RxX4C>Km5XEI|PAFDmo;DFm6G zzjVoB`@qW98Yl0Kvc-9w09^PrsobmG*Eju^=3f?0o-t$U)TL1B3;sZ^!++3&bGZ!o-*6w?;oOhf z=A+Qb$scV5!RbG+&2S}BQ6YH!FKb0``VVX~T$dzzeSZ$&9=X$3)_7Z{SspSYJ!lGE z7yig_41zpQ)%5dr4ff0rh$@ky3-JLRk&DK)NEIHecf9c*?Z1bUB4%pZjQ7hD!A0r-@NF(^WKdr(LXj|=UE7?gBYGgGQV zidf2`ZT@pzXf7}!NH4q(0IMcxsUGDih(0{kRSez&z?CFA0RVXsVFw3^u=^KMtt95q z43q$b*6#uQDLoiCAF_{RFc{!H^moH_cmll#Fc^KXi{9GDl{>%+3qyfOE5;Zq|6#Hb zp^#1G+z^AXfRKaa9HK;%b3Ux~U@q?xg<2DXP%6k!3E)PA<#4$ui8eDy5|9hA5&{?v z(-;*1%(1~-NTQ`Is1_MGdQ{+i*ccd96ab$R$T3=% zw_KuNF@vI!A>>Y_2pl9L{9h1-C6H8<)J4gKI6{WzGBi<@u3P6hNsXG=bRq5c+z;Gc3VUCe;LIIFDmQAGy+=mRyF++u=drBWV8-^>0yE9N&*05XHZpPlE zxu@?8(ZNy7rm?|<+UNe0Vs6&o?l`Pt>P&WaL~M&#Eh%`rg@Mbb)J&@DA-wheQ>hRV z<(XhigZAT z>=M;URcdCaiO3d^?H<^EiEMDV+7HsTiOhoaMX%P65E<(5xMPJKxf!0u>U~uVqnPN7T!X!o@_gs3Ct1 zlZ_$5QXP4{Aj645wG_SNT&6m|O6~Tsl$q?nK*)(`{J4b=(yb^nOATtF1_aS978$x3 zx>Q@s4i3~IT*+l{@dx~Hst21fR*+5}S1@cf>&8*uLw-0^zK(+OpW?cS-YG1QBZ5q! zgTAgivzoF#`cSz&HL>Ti!!v#?36I1*l^mkrx7Y|K6L#n!-~5=d3;K<;Zqi|gpNUn_ z_^GaQDEQ*jfzh;`j&KXb66fWEk1K7vxQIMQ_#Wu_%3 z4Oeb7FJ`8I>Px;^S?)}2+4D_83gHEq>8qSQY0PVP?o)zAv3K~;R$fnwTmI-=ZLK`= zTm+0h*e+Yfr(IlH3i7gUclNH^!MU>id$Jw>O?2i0Cila#v|twub21@e{S2v}8Z13( zNDrTXZVgris|qYm<0NU(tAPouG!QF4ZNpZPkX~{tVf8xY690JqY1NVdiTtW+NqyRP zZ&;T0ikb8V{wxmFhlLTQ&?OP7 z;(z*<+?J2~z*6asSe7h`$8~Se(@t(#%?BGLVs$p``;CyvcT?7Y!{tIPva$LxCQ&4W z6v#F*);|RXvI%qnoOY&i4S*EL&h%hP3O zLsrFZhv&Hu5tF$Lx!8(hs&?!Kx5&L(fdu}UI5d*wn~A`nPUhG&Rv z2#ixiJdhSF-K2tpVL=)5UkXRuPAFrEW}7mW=uAmtVQ&pGE-&az6@#-(Te^n*lrH^m@X-ftVcwO_#7{WI)5v(?>uC9GG{lcGXYJ~Q8q zbMFl7;t+kV;|;KkBW2!P_o%Czhw&Q(nXlxK9ak&6r5t_KH8#1Mr-*0}2h8R9XNkr zto5-b7P_auqTJb(TJlmJ9xreA=6d=d)CVbYP-r4$hDn5|TIhB>SReMfh&OVLkMk-T zYf%$taLF0OqYF?V{+6Xkn>iX@TuqQ?&cN6UjC9YF&%q{Ut3zv{U2)~$>-3;Dp)*(? zg*$mu8^i=-e#acaj*T$pNowo{xiGEk$%DusaQiS!KjJH96XZ-hXv+jk%ard#fu=@Q z$AM)YWvE^{%tDfK%nD49=PI|wYu}lYVbB#a7wtN^Nml@CE@{Gv7+jo{_V?I*jkdLD zJE|jfdrmVbkfS>rN*+`#l%ZUi5_bMS<>=MBDNlpiSb_tAF|Zy`K7kcp@|d?yaTmB^ zo?(vg;B$vxS|SszusORgDg-*Uitzdi{dUV+glA~R8V(?`3GZIl^egW{a919!j#>f` znL1o_^-b`}xnU0+~KIFLQ)$Q6#ym%)(GYC`^XM*{g zv3AM5$+TtDRs%`2TyR^$(hqE7Y1b&`Jd6dS6B#hDVbJlUXcG3y*439D8MrK!2D~6gn>UD4Imctb z+IvAt0iaW73Iq$K?4}H`7wq6YkTMm`tcktXgK0lKPmh=>h+l}Y+pDtvHnG>uqBA)l zAH6BV4F}v$(o$8Gfo*PB>IuaY1*^*`OTx4|hM8jZ?B6HY;F6p4{`OcZZ(us-RVwDx zUzJrCQlp@mz1ZFiSZ*$yX3c_#h9J;yBE$2g%xjmGF4ca z&yL`nGVs!Zxsh^j6i%$a*I3ZD2SoNT`{D%mU=LKaEwbN(_J5%i-6Va?@*>=3(dQy` zOv%$_9lcy9+(t>qohkuU4r_P=R^6ME+wFu&LA9tw9RA?azGhjrVJKy&8=*qZT5Dr8g--d+S8zAyJ$1HlW3Olryt`yE zFIph~Z6oF&o64rw{>lgZISC6p^CBer9C5G6yq%?8tC+)7*d+ib^?fU!JRFxynRLEZ zj;?PwtS}Ao#9whV@KEmwQgM0TVP{hs>dg(1*DiMUOKHdQGIqa0`yZnHk9mtbPfoLx zo;^V6pKUJ!5#n`w2D&381#5#_t}AlTGEgDz$^;u;-vxDN?^#5!zN9ngytY@oTv!nc zp1Xn8uR$1Z;7vY`-<*?DfPHB;x|GUi_fI9@I9SVRv1)qETbNU_8{5U|(>Du84qP#7 z*l9Y$SgA&wGbj>R1YeT9vYjZuC@|{rajTL0f%N@>3$DFU=`lSPl=Iv;EjuGjBa$Gw zHD-;%YOE@<-!7-Mn`0WuO3oWuL6tB2cpPw~Nvuj|KM@))ixuDK`9;jGMe2d)7gHin zS<>k@!x;!TJEc#HdL#RF(`|4W+H88d4V%zlh(7#{q2d0OQX9*FW^`^_<3r$kabWAB z$9BONo5}*(%kx zOXi-yM_cmB3>inPpI~)duvZykJ@^^aWzQ=eQ&STUa}2uT@lV&WoRzkUoE`rR0)`=l zFT%f|LA9fCw>`enm$p7W^E@U7RNBtsh{_-7vVz3DtB*y#*~(L9+x9*wn8VjWw|Q~q zKFsj1Yl>;}%MG3=PY`$g$_mnyhuV&~O~u~)968$0b2!Jkd;2MtAP#ZDYw9hmK_+M$ zb3pxyYC&|CuAbtiG8HZjj?MZJBFbt`ryf+c1dXFuC z0*ZQhBzNBd*}s6K_G}(|Z_9NDV162#y%WSNe|FTDDhx)K!c(mMJh@h87@8(^YdK$&d*^WQe8Z53 z(|@MRJ$Lk-&ii74MPIs80WsOFZ(NX23oR-?As+*aq6b?~62@fSVmM-_*cb1RzZ)`5$agEiL`-E9s7{GM2?(KNPgK1(+c*|-FKoy}X(D_b#etO|YR z(BGZ)0Ntfv-7R4GHoXp?l5g#*={S1{u-QzxCGng*oWr~@X-5f~RA14b8~B+pLKvr4 zfgL|7I>jlak9>D4=(i(cqYf7#318!OSR=^`xxvI!bBlS??`xxWeg?+|>MxaIdH1U~#1tHu zB{QMR?EGRmQ_l4p6YXJ{o(hh-7Tdm>TAX380TZZZyVkqHNzjUn*_|cb?T? zt;d2s-?B#Mc>T-gvBmQZx(y_cfkXZO~{N zT6rP7SD6g~n9QJ)8F*8uHxTLCAZ{l1Y&?6v)BOJZ)=R-pY=Y=&1}jE7fQ>USS}xP#exo57uND0i*rEk@$;nLvRB@u~s^dwRf?G?_enN@$t* zbL%JO=rV(3Ju8#GqUpeE3l_Wu1lN9Y{D4uaUe`g>zlj$1ER$6S6@{m1!~V|bYkhZA z%CvrDRTkHuajMU8;&RZ&itnC~iYLW4DVkP<$}>#&(`UO>!n)Po;Mt(SY8Yb`AS9lt znbX^i?Oe9r_o=?})IHKHoQGKXsps_SE{hwrg?6dMI|^+$CeC&z@*LuF+P`7LfZ*yr+KN8B4{Nzv<`A(wyR@!|gw{zB6Ha ziwPAYh)oJ(nlqSknu(8g9N&1hu0$vFK$W#mp%>X~AU1ay+EKWcFdif{% z#4!4aoVVJ;ULmkQf!ke2}3hqxLK>eq|-d7Ly7-J9zMpT`?dxo6HdfJA|t)?qPEVBDv z{y_b?4^|YA4%WW0VZd8C(ZgQzRI5(I^)=Ub`Y#MHc@nv0w-DaJAqsbEHDWG8Ia6ju zo-iyr*sq((gEwCC&^TYBWt4_@|81?=B-?#P6NMff(*^re zYqvDuO`K@`mjm_Jd;mW_tP`3$cS?R$jR1ZN09$YO%_iBqh5ftzSpMQQtxKFU=FYmP zeY^jph+g<4>YO;U^O>-NFLn~-RqlHvnZl2yd2A{Yc1G@Ga$d+Q&(f^tnPf+Z7serIU};17+2DU_f4Z z@GaPFut27d?!YiD+QP@)T=77cR9~MK@bd~pY%X(h%L={{OIb8IQmf-!xmZkm8A0Ga zQSWONI17_ru5wpHg3jI@i9D+_Y|pCqVuHJNdHUauTD=R$JcD2K_liQisqG$(sm=k9;L* z!L?*4B~ql7uioSX$zWJ?;q-SWXRFhz2Jt4%fOHA=Bwf|RzhwqdXGr78y$J)LR7&3T zE1WWz*>GPWKZ0%|@%6=fyx)5rzUpI;bCj>3RKzNG_1w$fIFCZ&UR0(7S?g}`&Pg$M zf`SLsz8wK82Vyj7;RyKmY{a8G{2BHG%w!^T|Njr!h9TO2LaP^_f22Q1=l$QiU84ao zHe_#{S6;qrC6w~7{y(hs-?-j?lbOfgH^E=XcSgnwW*eEz{_Z<_Px$?ny*JR5%f>l)FnDQ543{x%ZCiu33$Wg!pQFfT_}?5Q|_VSlIbLC`dpoMXL}9 zHfd9&47Mo(7D231gb+kjFxZHS4-m~7WurTH&doVX2KI5sU4v(sJ1@T9eCIKPjsqSr z)C01LsCxk=72-vXmX}CQD#BD;Cthymh&~=f$Q8nn0J<}ZrusBy4PvRNE}+1ceuj8u z0mW5k8fmgeLnTbWHGwfKA3@PdZxhn|PypR&^p?weGftrtCbjF#+zk_5BJh7;0`#Wr zgDpM_;Ax{jO##IrT`Oz;MvfwGfV$zD#c2xckpcXC6oou4ML~ezCc2EtnsQTB4tWNg z?4bkf;hG7IMfhgNI(FV5Gs4|*GyMTIY0$B=_*mso9Ityq$m^S>15>-?0(zQ<8Qy<_TjHE33(?_M8oaM zyc;NxzRVK@DL6RJnX%U^xW0Gpg(lXp(!uK1v0YgHjs^ZXSQ|m#lV7ip7{`C_J2TxPmfw%h$|%acrYHt)Re^PB%O&&=~a zhS(%I#+V>J-vjIib^<+s%ludY7y^C(P8nmqn9fp!i+?vr`bziDE=bx`%2W#Xyrj|i z!XQ4v1%L`m{7KT7q+LZNB^h8Ha2e=`Wp65^0;J00)_^G=au=8Yo;1b`CV&@#=jIBo zjN^JNVfYSs)+kDdGe7`1&8!?MQYKS?DuHZf3iogk_%#9E|5S zWeHrmAo>P;ejX7mwq#*}W25m^ZI+{(Z8fI?4jM_fffY0nok=+88^|*_DwcW>mR#e+ zX$F_KMdb6sRz!~7KkyN0G(3XQ+;z3X%PZ4gh;n-%62U<*VUKNv(D&Q->Na@Xb&u5Q3`3DGf+a8O5x7c#7+R+EAYl@R5us)CIw z7sT@_y~Ao@uL#&^LIh&QceqiT^+lb0YbFZt_SHOtWA%mgPEKVNvVgCsXy{5+zl*X8 zCJe)Q@y>wH^>l4;h1l^Y*9%-23TSmE>q5nI@?mt%n;Sj4Qq`Z+ib)a*a^cJc%E9^J zB;4s+K@rARbcBLT5P=@r;IVnBMKvT*)ew*R;&8vu%?Z&S>s?8?)3*YawM0P4!q$Kv zMmKh3lgE~&w&v%wVzH3Oe=jeNT=n@Y6J6TdHWTjXfX~-=1A1Bw`EW8rn}MqeI34nh zexFeA?&C3B2(E?0{drE@DA2pu(A#ElY&6el60Rn|Qpn-FkfQ8M93AfWIr)drgDFEU zghdWK)^71EWCP(@(=c4kfH1Y(4iugD4fve6;nSUpLT%!)MUHs1!zJYy4y||C+SwQ! z)KM&$7_tyM`sljP2fz6&Z;jxRn{Wup8IOUx8D4uh&(=O zx-7$a;U><*5L^!%xRlw)vAbh;sdlR||& ze}8_8%)c2Fwy=F&H|LM+p{pZB5DKTx>Y?F1N%BlZkXf!}JeGuMZk~LPi7{cidvUGB zAJ4LVeNV%XO>LTrklB#^-;8nb;}6l;1oW&WS=Mz*Az!4cqqQzbOSFq`$Q%PfD7srM zpKgP-D_0XPTRX*hAqeq0TDkJ;5HB1%$3Np)99#16c{ zJImlNL(npL!W|Gr_kxl1GVmF5&^$^YherS7+~q$p zt}{a=*RiD2Ikv6o=IM1kgc7zqpaZ;OB)P!1zz*i3{U()Dq#jG)egvK}@uFLa`oyWZ zf~=MV)|yJn`M^$N%ul5);JuQvaU1r2wt(}J_Qgyy`qWQI`hEeRX0uC@c1(dQ2}=U$ tNIIaX+dr)NRWXcxoR{>fqI{SF_dm1Ylv~=3YHI)h002ovPDHLkV1g(pWS;;4 literal 0 HcmV?d00001 diff --git a/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f091b6b0bca859a3f474b03065bef75ba58a9e4c GIT binary patch literal 1588 zcmV-42Fv-0P)C1SqPt}wig>|5Crh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)y zRAZ>eDe#*r`yDAVgB_R*LB*MAc)8(b{g{9McCXW!lq7r(btRoB9!8B-#AI6JMb~YFBEvdsV)`mEQO^&#eRKx@b&x- z5lZm*!WfD8oCLzfHGz#u7sT0^VLMI1MqGxF^v+`4YYnVYgk*=kU?HsSz{v({E3lb9 z>+xILjBN)t6`=g~IBOelGQ(O990@BfXf(DRI5I$qN$0Gkz-FSc$3a+2fX$AedL4u{ z4V+5Ong(9LiGcIKW?_352sR;LtDPmPJXI{YtT=O8=76o9;*n%_m|xo!i>7$IrZ-{l z-x3`7M}qzHsPV@$v#>H-TpjDh2UE$9g6sysUREDy_R(a)>=eHw-WAyfIN z*qb!_hW>G)Tu8nSw9yn#3wFMiLcfc4pY0ek1}8(NqkBR@t4{~oC>ryc-h_ByH(Cg5 z>ao-}771+xE3um9lWAY1FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zm zZQj(aA_HeBY&OC^jj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5Kh zX*|AU4QE#~SgPzOXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&g3j|zDgC+}2Q_v%YfDax z!?umcN^n}KYQ|a$Lr+51Nf9dkkYFSjZZjkma$0KOj+;aQ&721~t7QUKx61J3(P4P1 zstI~7-wOACnWP4=8oGOwz%vNDqD8w&Q`qcNGGrbbf&0s9L0De{4{mRS?o0MU+nR_! zrvshUau0G^DeMhM_v{5BuLjb#Hh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG z;P%vktHcXwTj~+IE(~px)3*MY77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC z(zYC$g|@+I+kY;dg_dE>scBf&bP1Nc@Hz<3R)V`=AGkc;8CXqdi=B4l2k|g;2%#m& z*jfX^%b!A8#bI!j9-0Fi0bOXl(-c^AB9|nQaE`*)Hw+o&jS9@7&Gov#HbD~#d{twV zXd^Tr^mWLfFh$@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)y zI9C9*oUga6=hxw6QasLPnee@3^Rr*M{CdaL5=R41nLs(AHk_=Y+A9$2&H(B7!_pURs&8aNw7?`&Z&xY_Ye z)~D5Bog^td-^QbUtkTirdyK^mTHAOuptDflut!#^lnKqU md>ggs(5nOWAqO?umG&QVYK#ibz}*4>0000U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~cTNYR~@Y9KepMPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF4|Rt=2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ literal 0 HcmV?d00001 diff --git a/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ef06e7edb86cdfe0d15b4b0d98334a86163658 GIT binary patch literal 1716 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 literal 0 HcmV?d00001 diff --git a/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f9ed8f5cee1c98386d13b17e89f719e83555b2 GIT binary patch literal 1895 zcmV-t2blPYP)FQtfgmafE#=YDCq`qUBt#QpG%*H6QHY765~R=q zZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1K4#~5?#|rh?sS)(-JQqX*}ciXJ56_H zdw=^s_srbAdqxlvGyrgGet#6T7_|j;95sL%MtM;q86vOxKM$f#puR)Bjv9Zvz9-di zXOTSsZkM83)E9PYBXC<$6(|>lNLVBb&&6y{NByFCp%6+^ALR@NCTse_wqvNmSWI-m z!$%KlHFH2omF!>#%1l3LTZg(s7eof$7*xB)ZQ0h?ejh?Ta9fDv59+u#MokW+1t8Zb zgHv%K(u9G^Lv`lh#f3<6!JVTL3(dCpxHbnbA;kKqQyd1~^Xe0VIaYBSWm6nsr;dFj z4;G-RyL?cYgsN1{L4ZFFNa;8)Rv0fM0C(~Tkit94 zz#~A)59?QjD&pAPSEQ)p8gP|DS{ng)j=2ux)_EzzJ773GmQ_Cic%3JJhC0t2cx>|v zJcVusIB!%F90{+}8hG3QU4KNeKmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u z7JyDj7`6d)qVp^R=%j>UIY6f+3`+qzIc!Y_=+uN^3BYV|o+$vGo-j-Wm<10%A=(Yk^beI{t%ld@yhKjq0iNjqN4XMGgQtbKubPM$JWBz}YA65k%dm*awtC^+f;a-x4+ddbH^7iDWGg&N0n#MW{kA|=8iMUiFYvMoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS z*ZdmT`g5-`BuJs`0LVhz+D9NNa3<=6m;cQLaF?tCv8)zcRSh66*Z|vXhG@$I%U~2l z?`Q zykI#*+rQ=z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRe zt3L_uNyQ*cE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=ky zx=~RKa4{iTm{_>_vSCm?$Ej=i6@=m%@VvAITnigVg{&@!7CDgs908761meDK5azA} z4?=NOH|PdvabgJ&fW2{Mo$Q0CcD8Qc84%{JPYt5EiG{MdLIAeX%T=D7NIP4%Hw}p9 zg)==!2Lbp#j{u_}hMiao9=!VSyx0gHbeCS`;q&vzeq|fs`y&^X-lso(Ls@-706qmA z7u*T5PMo_w3{se1t2`zWeO^hOvTsohG_;>J0wVqVe+n)AbQCx)yh9;w+J6?NF5Lmo zecS@ieAKL8%bVd@+-KT{yI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^ zEkL$}tsQt5>QA^;QgjgIfBDmcOgi5YDyu?t6vSnbp=1+@6D& z5MJ}B8q;bRlVoxasyhcUF1+)o`&3r0colr}QJ3hcSdLu;9;td>kf@Tcn<@9sIx&=m z;AD;SCh95=&p;$r{Xz3iWCO^MX83AGJ(yH&eTXgv|0=34#-&WAmw{)U7OU9!Wz^!7 zZ%jZFi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i h0WYBP*#0Ks^FNSabJA*5${_#%002ovPDHLkV1oKhTl@e3 literal 0 HcmV?d00001 diff --git a/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..75b2d164a5a98e212cca15ea7bf2ab5de5108680 GIT binary patch literal 3831 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 literal 0 HcmV?d00001 diff --git a/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/rvms/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..c4df70d39da7941ef3f6dcb7f06a192d8dcb308d GIT binary patch literal 1888 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 iW8Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/rvms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/rvms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/rvms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/rvms/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/rvms/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/rvms/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/rvms/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +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. \ No newline at end of file diff --git a/rvms/ios/Runner/Base.lproj/LaunchScreen.storyboard b/rvms/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..f2e259c7 --- /dev/null +++ b/rvms/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rvms/ios/Runner/Base.lproj/Main.storyboard b/rvms/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000..f3c28516 --- /dev/null +++ b/rvms/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rvms/ios/Runner/Info.plist b/rvms/ios/Runner/Info.plist new file mode 100644 index 00000000..c683ec62 --- /dev/null +++ b/rvms/ios/Runner/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + scoped_model + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/rvms/ios/Runner/Runner-Bridging-Header.h b/rvms/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000..7335fdf9 --- /dev/null +++ b/rvms/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" \ No newline at end of file diff --git a/rvms/lib/display_todos/_manager/todo_manager_.dart b/rvms/lib/display_todos/_manager/todo_manager_.dart new file mode 100644 index 00000000..e58b6152 --- /dev/null +++ b/rvms/lib/display_todos/_manager/todo_manager_.dart @@ -0,0 +1,32 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/foundation.dart'; +import 'package:flutter_command/flutter_command.dart'; +import 'package:rvms_model_sample/display_todos/_model/todo.dart'; + +abstract class TodoManager { + ValueListenable> get filteredTodos; + ValueListenable> get allTodos; + + Command selectFilterCommand; + Command loadTodoCommand; + Command clearCompletedCommand; + Command upLoadCommand; + + VisibilityFilter get activeFilter; + + void toggleAll(); + + /// updates a [Todo] by replacing the item with the same id by the parameter [todo] + void updateTodo(Todo todo); + + void removeTodo(Todo todo); + + void addTodo(Todo todo); + + Todo todoById(String id); +} + +enum VisibilityFilter { all, active, completed } diff --git a/rvms/lib/display_todos/_manager/todo_manager_implementation.dart b/rvms/lib/display_todos/_manager/todo_manager_implementation.dart new file mode 100644 index 00000000..526607d1 --- /dev/null +++ b/rvms/lib/display_todos/_manager/todo_manager_implementation.dart @@ -0,0 +1,119 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter_command/flutter_command.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; +import 'package:rvms_model_sample/display_todos/_model/todo.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; + +class TodoManagerImplementation implements TodoManager { + TodosRepository repository; + + ValueListenable> get allTodos => _todos; + ValueNotifier> _todos; + + ValueListenable> get filteredTodos => _filteredTodos; + ValueNotifier> _filteredTodos; + + @override + VisibilityFilter get activeFilter => selectFilterCommand.value; + + Command selectFilterCommand; + Command loadTodoCommand; + Command clearCompletedCommand; + Command upLoadCommand; + + // ValueListenable errors = upLoadCommand.thrownExceptions.combineLatest(loadTodoCommand.thrownExceptions,) + + TodoManagerImplementation({VisibilityFilter activeFilter}) { + repository = const TodosRepositoryFlutter( + fileStorage: const FileStorage( + 'rvms_todos', + getApplicationDocumentsDirectory, + ), + ); + + loadTodoCommand = Command.createAsyncNoParamNoResult(loadTodos) + ..thrownExceptions.listen((_, __) => _todos.value = []); + + selectFilterCommand = + Command.createSync((filter) => filter, VisibilityFilter.all); + + clearCompletedCommand = Command.createSyncNoParamNoResult(() { + _todos.value = _todos.value..removeWhere((todo) => todo.complete); + }); + + upLoadCommand = Command.createAsync((snackBarText) async { + await _uploadItems(); + return snackBarText; + }, ''); + + /// the combineLatest ensures that [todos] get's updated whenever [_todos] + /// changes or when [selectFilterCommand is called] + _filteredTodos = selectFilterCommand + .map>((filter) => _todos.value.where((todo) { + switch (filter) { + case VisibilityFilter.active: + return !todo.complete; + case VisibilityFilter.completed: + return todo.complete; + case VisibilityFilter.all: + default: + return true; + } + }).toList()) + .combineLatest(_todos, (filtered, _) => filtered); + } + + /// Loads remote data + /// + /// Call this initially and when the user manually refreshes + Future loadTodos() { + return repository.loadTodos().then((loadedTodos) { + _todos.value = loadedTodos.map(Todo.fromEntity).toList(); + }); + } + + void toggleAll() { + var allComplete = _filteredTodos.value.every((todo) => todo.complete); + _todos.value = + _todos.value.map((todo) => todo.copy(complete: !allComplete)).toList(); + upLoadCommand('Upload finished'); + } + + /// updates a [Todo] by replacing the item with the same id by the parameter [todo] + void updateTodo(Todo todo) { + assert(todo != null); + assert(todo.id != null); + var oldTodo = _todos.value.firstWhere((it) => it.id == todo.id); + var replaceIndex = _todos.value.indexOf(oldTodo); + _todos.value = _todos.value + ..replaceRange(replaceIndex, replaceIndex + 1, [todo]); + upLoadCommand('Update finished'); + } + + void removeTodo(Todo todo) { + _todos.value = _todos.value..removeWhere((it) => it.id == todo.id); + upLoadCommand('Todo deleted'); + } + + void addTodo(Todo todo) { + _todos.value = _todos.value..add(todo); + upLoadCommand('Todo added'); + } + + Future _uploadItems() { + return repository + .saveTodos(_todos.value.map((it) => it.toEntity()).toList()); + } + + Todo todoById(String id) { + return _todos.value.firstWhere((it) => it.id == id, orElse: () => null); + } +} diff --git a/rvms/lib/display_todos/_model/todo.dart b/rvms/lib/display_todos/_model/todo.dart new file mode 100644 index 00000000..796938ad --- /dev/null +++ b/rvms/lib/display_todos/_model/todo.dart @@ -0,0 +1,57 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +class Todo { + final bool complete; + final String id; + final String note; + final String task; + + Todo(this.task, {this.complete = false, this.note = '', String id}) + : this.id = id ?? Uuid().generateV4(); + + @override + int get hashCode => + complete.hashCode ^ task.hashCode ^ note.hashCode ^ id.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is Todo && + runtimeType == other.runtimeType && + complete == other.complete && + task == other.task && + note == other.note && + id == other.id; + + @override + String toString() { + return 'Todo{complete: $complete, task: $task, note: $note, id: $id}'; + } + + TodoEntity toEntity() { + return TodoEntity(task, id, note, complete); + } + + static Todo fromEntity(TodoEntity entity) { + return Todo( + entity.task, + complete: entity.complete ?? false, + note: entity.note, + id: entity.id, + ); + } + + Todo copy({String task, bool complete, String note, String id}) { + return Todo( + task ?? this.task, + complete: complete ?? this.complete, + note: note ?? this.note, + id: id ?? this.id, + ); + } +} diff --git a/rvms/lib/display_todos/_model/typedefs.dart b/rvms/lib/display_todos/_model/typedefs.dart new file mode 100644 index 00000000..bca163df --- /dev/null +++ b/rvms/lib/display_todos/_model/typedefs.dart @@ -0,0 +1,21 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:rvms_model_sample/display_todos/_model/todo.dart'; + +typedef TodoAdder(Todo todo); + +typedef TodoRemover(Todo todo); + +typedef TodoUpdater( + Todo todo, { + bool complete, + String id, + String note, + String task, +}); + +enum AppTab { todos, stats } + +enum ExtraAction { toggleAllComplete, clearCompleted } diff --git a/rvms/lib/display_todos/detail_screen.dart b/rvms/lib/display_todos/detail_screen.dart new file mode 100644 index 00000000..40e2b26b --- /dev/null +++ b/rvms/lib/display_todos/detail_screen.dart @@ -0,0 +1,105 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; +import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; +import 'package:rvms_model_sample/display_todos/_model/todo.dart'; +import 'package:rvms_model_sample/edit_todos/add_edit_screen.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class DetailScreen extends StatelessWidget { + final String todoId; + + DetailScreen({ + @required this.todoId, + }) : super(key: ArchSampleKeys.todoDetailsScreen); + + @override + Widget build(BuildContext context) { + final todoManager = GetIt.I(); + // fallback to empty item. When deleting it, it is null before the screen is gone + var todo = todoManager.todoById(todoId) ?? Todo(''); + return Scaffold( + appBar: AppBar( + title: Text(ArchSampleLocalizations.of(context).todoDetails), + actions: [ + IconButton( + key: ArchSampleKeys.deleteTodoButton, + tooltip: ArchSampleLocalizations.of(context).deleteTodo, + icon: Icon(Icons.delete), + onPressed: () { + todoManager.removeTodo(todo); + Navigator.pop(context, todo); + }, + ) + ], + ), + body: Padding( + padding: EdgeInsets.all(16.0), + child: ListView( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(right: 8.0), + child: Checkbox( + value: todo.complete, + key: ArchSampleKeys.detailsTodoItemCheckbox, + onChanged: (complete) { + todoManager + .updateTodo(todo.copy(complete: !todo.complete)); + }, + ), + ), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only( + top: 8.0, + bottom: 16.0, + ), + child: Text( + todo.task, + key: ArchSampleKeys.detailsTodoItemTask, + style: Theme.of(context).textTheme.headline, + ), + ), + Text( + todo.note, + key: ArchSampleKeys.detailsTodoItemNote, + style: Theme.of(context).textTheme.subhead, + ) + ], + ), + ), + ], + ), + ], + ), + ), + floatingActionButton: FloatingActionButton( + tooltip: ArchSampleLocalizations.of(context).editTodo, + child: Icon(Icons.edit), + key: ArchSampleKeys.editTodoFab, + onPressed: () { + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) { + return AddEditScreen( + todoId: todoId, + key: ArchSampleKeys.editTodoScreen, + ); + }, + ), + ); + }, + ), + ); + } +} diff --git a/rvms/lib/display_todos/home_screen.dart b/rvms/lib/display_todos/home_screen.dart new file mode 100644 index 00000000..84fffc73 --- /dev/null +++ b/rvms/lib/display_todos/home_screen.dart @@ -0,0 +1,73 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:rvms_model_sample/display_todos/_model/typedefs.dart'; +import 'package:rvms_model_sample/display_todos/widgets/extra_actions_button.dart'; +import 'package:rvms_model_sample/display_todos/widgets/filter_button.dart'; +import 'package:rvms_model_sample/display_todos/widgets/stats_counter.dart'; +import 'package:rvms_model_sample/display_todos/widgets/todo_list.dart'; +import 'package:rvms_model_sample/localization.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class HomeScreen extends StatefulWidget { + HomeScreen() : super(key: ArchSampleKeys.homeScreen); + + @override + State createState() { + return HomeScreenState(); + } +} + +class HomeScreenState extends State { + AppTab _activeTab = AppTab.todos; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(RvmsLocalizations.of(context).appTitle), + actions: [ + FilterButton(isActive: _activeTab == AppTab.todos), + ExtraActionsButton() + ], + ), + body: _activeTab == AppTab.todos ? TodoList() : StatsCounter(), + floatingActionButton: FloatingActionButton( + key: ArchSampleKeys.addTodoFab, + onPressed: () { + Navigator.pushNamed(context, ArchSampleRoutes.addTodo); + }, + child: Icon(Icons.add), + tooltip: ArchSampleLocalizations.of(context).addTodo, + ), + bottomNavigationBar: BottomNavigationBar( + key: ArchSampleKeys.tabs, + currentIndex: AppTab.values.indexOf(_activeTab), + onTap: (index) { + _updateTab(AppTab.values[index]); + }, + items: AppTab.values.map((tab) { + return BottomNavigationBarItem( + icon: Icon( + tab == AppTab.todos ? Icons.list : Icons.show_chart, + key: tab == AppTab.stats + ? ArchSampleKeys.statsTab + : ArchSampleKeys.todoTab, + ), + label: tab == AppTab.stats + ? ArchSampleLocalizations.of(context).stats + : ArchSampleLocalizations.of(context).todos, + ); + }).toList(), + ), + ); + } + + _updateTab(AppTab tab) { + setState(() { + _activeTab = tab; + }); + } +} diff --git a/rvms/lib/display_todos/widgets/extra_actions_button.dart b/rvms/lib/display_todos/widgets/extra_actions_button.dart new file mode 100644 index 00000000..b258fafd --- /dev/null +++ b/rvms/lib/display_todos/widgets/extra_actions_button.dart @@ -0,0 +1,45 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:get_it_mixin/get_it_mixin.dart'; +import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; +import 'package:rvms_model_sample/display_todos/_model/typedefs.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class ExtraActionsButton extends StatelessWidget with GetItMixin { + ExtraActionsButton({ + Key key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + final allTodos = watchX((TodoManager x) => x.allTodos); + + return PopupMenuButton( + key: ArchSampleKeys.extraActionsButton, + onSelected: (action) { + if (action == ExtraAction.toggleAllComplete) { + get().toggleAll(); + } else if (action == ExtraAction.clearCompleted) { + get().clearCompletedCommand(); + } + }, + itemBuilder: (BuildContext context) => >[ + PopupMenuItem( + key: ArchSampleKeys.toggleAll, + value: ExtraAction.toggleAllComplete, + child: Text(allTodos.any((it) => !it.complete) + ? ArchSampleLocalizations.of(context).markAllIncomplete + : ArchSampleLocalizations.of(context).markAllComplete), + ), + PopupMenuItem( + key: ArchSampleKeys.clearCompleted, + value: ExtraAction.clearCompleted, + child: Text(ArchSampleLocalizations.of(context).clearCompleted), + ), + ], + ); + } +} diff --git a/rvms/lib/display_todos/widgets/filter_button.dart b/rvms/lib/display_todos/widgets/filter_button.dart new file mode 100644 index 00000000..de9fc7cf --- /dev/null +++ b/rvms/lib/display_todos/widgets/filter_button.dart @@ -0,0 +1,70 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; +import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class FilterButton extends StatelessWidget { + final bool isActive; + + FilterButton({this.isActive, Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return AnimatedOpacity( + opacity: isActive ? 1.0 : 0.0, + duration: Duration(milliseconds: 150), + child: PopupMenuButton( + key: ArchSampleKeys.filterButton, + tooltip: ArchSampleLocalizations.of(context).filterTodos, + onSelected: GetIt.I().selectFilterCommand, + itemBuilder: (BuildContext context) => _items(context), + icon: Icon(Icons.filter_list), + ), + ); + } + + List> _items(BuildContext context) { + final activeStyle = Theme.of(context) + .textTheme + .bodyText1 + .copyWith(color: Theme.of(context).accentColor); + final defaultStyle = Theme.of(context).textTheme.bodyText1; + + final activeFilter = GetIt.I().activeFilter; + return [ + PopupMenuItem( + key: ArchSampleKeys.allFilter, + value: VisibilityFilter.all, + child: Text( + ArchSampleLocalizations.of(context).showAll, + style: + activeFilter == VisibilityFilter.all ? activeStyle : defaultStyle, + ), + ), + PopupMenuItem( + key: ArchSampleKeys.activeFilter, + value: VisibilityFilter.active, + child: Text( + ArchSampleLocalizations.of(context).showActive, + style: activeFilter == VisibilityFilter.active + ? activeStyle + : defaultStyle, + ), + ), + PopupMenuItem( + key: ArchSampleKeys.completedFilter, + value: VisibilityFilter.completed, + child: Text( + ArchSampleLocalizations.of(context).showCompleted, + style: activeFilter == VisibilityFilter.completed + ? activeStyle + : defaultStyle, + ), + ), + ]; + } +} diff --git a/rvms/lib/display_todos/widgets/stats_counter.dart b/rvms/lib/display_todos/widgets/stats_counter.dart new file mode 100644 index 00000000..63225c19 --- /dev/null +++ b/rvms/lib/display_todos/widgets/stats_counter.dart @@ -0,0 +1,62 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get_it_mixin/get_it_mixin.dart'; +import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; +import 'package:rvms_model_sample/display_todos/_model/todo.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class StatsCounter extends StatelessWidget with GetItMixin { + StatsCounter() : super(key: ArchSampleKeys.statsCounter); + + bool isActive(Todo todo) => !todo.complete; + + bool isCompleted(Todo todo) => todo.complete; + + @override + Widget build(BuildContext context) { + final todos = watchX((TodoManager x) => x.allTodos); + + var numCompleted = todos.where(isCompleted).toList().length; + var numActive = todos.where(isActive).toList().length; + + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(bottom: 8.0), + child: Text( + ArchSampleLocalizations.of(context).completedTodos, + style: Theme.of(context).textTheme.headline6, + ), + ), + Padding( + padding: EdgeInsets.only(bottom: 24.0), + child: Text( + '$numCompleted', + key: ArchSampleKeys.statsNumCompleted, + style: Theme.of(context).textTheme.subtitle1, + ), + ), + Padding( + padding: EdgeInsets.only(bottom: 8.0), + child: Text(ArchSampleLocalizations.of(context).activeTodos, + style: Theme.of(context).textTheme.headline6), + ), + Padding( + padding: EdgeInsets.only(bottom: 24.0), + child: Text( + "$numActive", + key: ArchSampleKeys.statsNumActive, + style: Theme.of(context).textTheme.subtitle1, + ), + ) + ], + ), + ); + } +} diff --git a/rvms/lib/display_todos/widgets/todo_item.dart b/rvms/lib/display_todos/widgets/todo_item.dart new file mode 100644 index 00000000..665d76e6 --- /dev/null +++ b/rvms/lib/display_todos/widgets/todo_item.dart @@ -0,0 +1,50 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:rvms_model_sample/display_todos/_model/todo.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class TodoItem extends StatelessWidget { + final DismissDirectionCallback onDismissed; + final GestureTapCallback onTap; + final ValueChanged onCheckboxChanged; + final Todo todo; + + TodoItem({ + @required this.onDismissed, + @required this.onTap, + @required this.onCheckboxChanged, + @required this.todo, + }); + + @override + Widget build(BuildContext context) { + return Dismissible( + key: ArchSampleKeys.todoItem(todo.id), + onDismissed: onDismissed, + child: ListTile( + onTap: onTap, + leading: Checkbox( + key: ArchSampleKeys.todoItemCheckbox(todo.id), + value: todo.complete, + onChanged: onCheckboxChanged, + ), + title: Text( + todo.task, + key: ArchSampleKeys.todoItemTask(todo.id), + style: Theme.of(context).textTheme.title, + ), + subtitle: Text( + todo.note, + key: ArchSampleKeys.todoItemNote(todo.id), + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: Theme.of(context).textTheme.subtitle1, + ), + ), + ); + } +} diff --git a/rvms/lib/display_todos/widgets/todo_list.dart b/rvms/lib/display_todos/widgets/todo_list.dart new file mode 100644 index 00000000..a1034ba5 --- /dev/null +++ b/rvms/lib/display_todos/widgets/todo_list.dart @@ -0,0 +1,89 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:get_it_mixin/get_it_mixin.dart'; +import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; +import 'package:rvms_model_sample/display_todos/_model/todo.dart'; +import 'package:rvms_model_sample/display_todos/detail_screen.dart'; +import 'package:rvms_model_sample/display_todos/widgets/todo_item.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class TodoList extends StatelessWidget with GetItMixin { + TodoList({Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final todos = watchX((TodoManager x) => x.filteredTodos); + + return ListView.builder( + key: ArchSampleKeys.todoList, + itemCount: todos.length, + itemBuilder: (BuildContext context, int index) { + final todo = todos[index]; + + return TodoItem( + todo: todo, + onDismissed: (_) { + _removeTodo(context, todo); + }, + onTap: () { + Navigator.of(context).push( + MaterialPageRoute( + builder: (_) { + return DetailScreen( + todoId: todo.id, + ); + }, + ), + ).then((todo) { + if (todo is Todo) { + _showUndoSnackbar(context, todo); + } + }); + }, + onCheckboxChanged: (complete) { + var toggled = todo.copy(complete: !todo.complete); + get().updateTodo(toggled); + }, + ); + }, + ); + } + + Center get _buildLoading { + return Center( + child: CircularProgressIndicator( + key: ArchSampleKeys.todosLoading, + ), + ); + } + + void _removeTodo(BuildContext context, Todo todo) { + get().removeTodo(todo); + + _showUndoSnackbar(context, todo); + } + + void _showUndoSnackbar(BuildContext context, Todo todo) { + Scaffold.of(context).showSnackBar( + SnackBar( + key: ArchSampleKeys.snackbar, + duration: Duration(seconds: 2), + content: Text( + ArchSampleLocalizations.of(context).todoDeleted(todo.task), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + action: SnackBarAction( + key: ArchSampleKeys.snackbarAction(todo.id), + label: ArchSampleLocalizations.of(context).undo, + onPressed: () { + get().addTodo(todo); + }, + ), + ), + ); + } +} diff --git a/rvms/lib/edit_todos/add_edit_screen.dart b/rvms/lib/edit_todos/add_edit_screen.dart new file mode 100644 index 00000000..ba3048d1 --- /dev/null +++ b/rvms/lib/edit_todos/add_edit_screen.dart @@ -0,0 +1,107 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; +import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; +import 'package:rvms_model_sample/display_todos/_model/todo.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class AddEditScreen extends StatefulWidget { + final String todoId; + + AddEditScreen({ + Key key, + this.todoId, + }) : super(key: key ?? ArchSampleKeys.addTodoScreen); + @override + _AddEditScreenState createState() => _AddEditScreenState(); +} + +class _AddEditScreenState extends State { + static final GlobalKey _formKey = GlobalKey(); + + String _task; + String _note; + + bool get isEditing => widget.todoId != null; + + @override + Widget build(BuildContext context) { + final localizations = ArchSampleLocalizations.of(context); + final textTheme = Theme.of(context).textTheme; + + var task = GetIt.I().todoById(widget.todoId); + return Scaffold( + appBar: AppBar( + title: Text( + isEditing ? localizations.editTodo : localizations.addTodo, + ), + ), + body: Padding( + padding: EdgeInsets.all(16.0), + child: Form( + key: _formKey, + autovalidateMode: AutovalidateMode.disabled, + onWillPop: () { + return Future(() => true); + }, + child: ListView( + children: [ + TextFormField( + initialValue: task?.task ?? '', + key: ArchSampleKeys.taskField, + autofocus: !isEditing, + style: textTheme.headline, + decoration: InputDecoration( + hintText: localizations.newTodoHint, + ), + validator: (val) { + return val.trim().isEmpty + ? localizations.emptyTodoError + : null; + }, + onSaved: (value) => _task = value, + ), + TextFormField( + initialValue: task?.note ?? '', + key: ArchSampleKeys.noteField, + maxLines: 10, + style: textTheme.subhead, + decoration: InputDecoration( + hintText: localizations.notesHint, + ), + onSaved: (value) => _note = value, + ) + ], + ), + ), + ), + floatingActionButton: FloatingActionButton( + key: + isEditing ? ArchSampleKeys.saveTodoFab : ArchSampleKeys.saveNewTodo, + tooltip: isEditing ? localizations.saveChanges : localizations.addTodo, + child: Icon(isEditing ? Icons.check : Icons.add), + onPressed: () { + final form = _formKey.currentState; + if (form.validate()) { + form.save(); + + final todoManager = GetIt.I(); + if (isEditing) { + final todo = todoManager.todoById(widget.todoId); + todoManager.updateTodo(todo.copy(task: _task, note: _note)); + } else { + todoManager.addTodo(Todo(_task, note: _note)); + } + + Navigator.pop(context); + } + }, + ), + ); + } +} diff --git a/rvms/lib/localization.dart b/rvms/lib/localization.dart new file mode 100644 index 00000000..0b164d35 --- /dev/null +++ b/rvms/lib/localization.dart @@ -0,0 +1,29 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; + +import 'package:flutter/material.dart'; + +class RvmsLocalizations { + static RvmsLocalizations of(BuildContext context) { + return Localizations.of(context, RvmsLocalizations); + } + + String get appTitle => "rvms example"; +} + +class RvmsLocalizationsDelegate + extends LocalizationsDelegate { + @override + Future load(Locale locale) => + Future(() => RvmsLocalizations()); + + @override + bool shouldReload(RvmsLocalizationsDelegate old) => false; + + @override + bool isSupported(Locale locale) => + locale.languageCode.toLowerCase().contains("en"); +} diff --git a/rvms/lib/locator.dart b/rvms/lib/locator.dart new file mode 100644 index 00000000..582e7ba8 --- /dev/null +++ b/rvms/lib/locator.dart @@ -0,0 +1,11 @@ +import 'package:get_it/get_it.dart'; +import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; +import 'package:rvms_model_sample/display_todos/_manager/todo_manager_implementation.dart'; + +void initLocator() { + GetIt.I.registerSingletonAsync(() async { + final manager = TodoManagerImplementation(); + await manager.loadTodos(); + return manager; + }); +} diff --git a/rvms/lib/main.dart b/rvms/lib/main.dart new file mode 100644 index 00000000..59ce39ca --- /dev/null +++ b/rvms/lib/main.dart @@ -0,0 +1,10 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:rvms_model_sample/startup/app.dart'; + +void main() { + runApp(RvmsApp()); +} diff --git a/rvms/lib/startup/app.dart b/rvms/lib/startup/app.dart new file mode 100644 index 00000000..baa5076c --- /dev/null +++ b/rvms/lib/startup/app.dart @@ -0,0 +1,27 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:rvms_model_sample/display_todos/home_screen.dart'; +import 'package:rvms_model_sample/edit_todos/add_edit_screen.dart'; +import 'package:rvms_model_sample/localization.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class RvmsApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MaterialApp( + title: RvmsLocalizations().appTitle, + theme: ArchSampleTheme.theme, + localizationsDelegates: [ + ArchSampleLocalizationsDelegate(), + RvmsLocalizationsDelegate(), + ], + routes: { + ArchSampleRoutes.home: (context) => HomeScreen(), + ArchSampleRoutes.addTodo: (context) => AddEditScreen(), + }, + ); + } +} diff --git a/rvms/pubspec.yaml b/rvms/pubspec.yaml new file mode 100644 index 00000000..5fea181f --- /dev/null +++ b/rvms/pubspec.yaml @@ -0,0 +1,71 @@ +name: rvms_model_sample +description: A new Flutter project. + +version: 1.0.0+1 + +environment: + sdk: ">=2.1.0 <3.0.0" + +dependencies: + flutter: + sdk: flutter + todos_repository_simple: + path: ../todos_repository_simple + todos_app_core: + path: ../todos_app_core + get_it: any + get_it_mixin: any + functional_listener: any + flutter_command: any + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_driver: + sdk: flutter + test: + mockito: + integration_tests: + path: ../integration_tests + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware. + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages diff --git a/rvms/test/app_state_test.dart b/rvms/test/app_state_test.dart new file mode 100644 index 00000000..26ca7306 --- /dev/null +++ b/rvms/test/app_state_test.dart @@ -0,0 +1,169 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; + +import 'package:scoped_model_sample/models.dart'; +import 'package:scoped_model_sample/todo_list_model.dart'; +import 'package:test/test.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +main() { + group('TodoListModel', () { + test('should check if there are completed todos', () async { + final model = TodoListModel( + repository: MockRepository([ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ])); + await model.loadTodos(); + + expect(model._filteredTodos.any((it) => it.complete), true); + }); + + test('should calculate the number of active todos', () async { + final model = TodoListModel( + repository: MockRepository([ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ])); + await model.loadTodos(); + + expect( + model._filteredTodos.where((it) => !it.complete).toList().length, 2); + }); + + test('should calculate the number of completed todos', () async { + final model = TodoListModel( + repository: MockRepository([ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ])); + await model.loadTodos(); + + expect( + model._filteredTodos.where((it) => it.complete).toList().length, 1); + }); + + test('should return all todos if the VisibilityFilter is all', () async { + final todos = [ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ]; + final model = TodoListModel( + repository: MockRepository(todos), + activeFilter: VisibilityFilter.all); + await model.loadTodos(); + + expect(model._filteredTodos, todos); + }); + + test('should return active todos if the VisibilityFilter is active', + () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + final model = TodoListModel( + repository: MockRepository(todos), + activeFilter: VisibilityFilter.active, + ); + await model.loadTodos(); + + expect(model._filteredTodos, [ + todo1, + todo2, + ]); + }); + + test('should return completed todos if the VisibilityFilter is completed', + () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + final model = TodoListModel( + repository: MockRepository(todos), + activeFilter: VisibilityFilter.completed, + ); + await model.loadTodos(); + + expect(model._filteredTodos, [todo3]); + }); + + test('should clear the completed todos', () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + final model = TodoListModel( + repository: MockRepository(todos), + ); + await model.loadTodos(); + + model.clearCompleted(); + + expect(model._filteredTodos, [ + todo1, + todo2, + ]); + }); + + test('toggle all as complete or incomplete', () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + final model = TodoListModel( + repository: MockRepository(todos), + ); + await model.loadTodos(); + + // Toggle all complete + model.toggleAll(); + expect(model._filteredTodos.every((t) => t.complete), isTrue); + + // Toggle all incomplete + model.toggleAll(); + expect(model._filteredTodos.every((t) => !t.complete), isTrue); + }); + }); +} + +class MockRepository extends TodosRepository { + List entities; + + MockRepository(List todos) + : this.entities = todos.map((it) => it.toEntity()).toList(); + + @override + Future> loadTodos() { + return Future.value(entities); + } + + @override + Future saveTodos(List todos) { + return Future.sync(() => entities = todos); + } +} diff --git a/rvms/test_driver/todo_app.dart b/rvms/test_driver/todo_app.dart new file mode 100644 index 00000000..c1ac2d2e --- /dev/null +++ b/rvms/test_driver/todo_app.dart @@ -0,0 +1,13 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +// This line imports the extension +import 'package:flutter_driver/driver_extension.dart'; +import 'package:scoped_model_sample/main.dart' as app; + +void main() { + enableFlutterDriverExtension(); + + app.main(); +} diff --git a/rvms/test_driver/todo_app_test.dart b/rvms/test_driver/todo_app_test.dart new file mode 100644 index 00000000..14ddb566 --- /dev/null +++ b/rvms/test_driver/todo_app_test.dart @@ -0,0 +1,9 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:integration_tests/integration_tests.dart' as integrationTests; + +main() { + integrationTests.main(); +} diff --git a/vanilla/.flutter-plugins-dependencies b/vanilla/.flutter-plugins-dependencies index 17d9de06..64257a6a 100644 --- a/vanilla/.flutter-plugins-dependencies +++ b/vanilla/.flutter-plugins-dependencies @@ -1 +1 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"path_provider","dependencies":[]}]} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"android":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_macos-0.0.4+4\\\\","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_linux-0.0.1+2\\\\","dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_windows-0.0.4+1\\\\","dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]}],"date_created":"2020-10-02 21:52:27.754828","version":"1.22.0"} \ No newline at end of file From 42ddb93949d2a9f6284321959912ea2b589bc4a0 Mon Sep 17 00:00:00 2001 From: Thomas Burkhart Date: Mon, 5 Oct 2020 15:51:28 +0200 Subject: [PATCH 02/77] fixed updating --- rvms/.flutter-plugins-dependencies | 2 +- .../display_todos/_manager/todo_manager_.dart | 1 + .../_manager/todo_manager_implementation.dart | 30 ++++--- rvms/lib/display_todos/home_screen.dart | 87 +++++++++++-------- rvms/lib/main.dart | 2 + rvms/test_driver/todo_app.dart | 2 +- 6 files changed, 71 insertions(+), 53 deletions(-) diff --git a/rvms/.flutter-plugins-dependencies b/rvms/.flutter-plugins-dependencies index 337cd5d4..2f733d99 100644 --- a/rvms/.flutter-plugins-dependencies +++ b/rvms/.flutter-plugins-dependencies @@ -1 +1 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"android":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_macos-0.0.4+4\\\\","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_linux-0.0.1+2\\\\","dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_windows-0.0.4+1\\\\","dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]}],"date_created":"2020-10-02 22:19:30.591918","version":"1.22.0"} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"android":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_macos-0.0.4+4\\\\","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_linux-0.0.1+2\\\\","dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_windows-0.0.4+1\\\\","dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]}],"date_created":"2020-10-05 15:49:50.617792","version":"1.22.0"} \ No newline at end of file diff --git a/rvms/lib/display_todos/_manager/todo_manager_.dart b/rvms/lib/display_todos/_manager/todo_manager_.dart index e58b6152..51d74b4e 100644 --- a/rvms/lib/display_todos/_manager/todo_manager_.dart +++ b/rvms/lib/display_todos/_manager/todo_manager_.dart @@ -9,6 +9,7 @@ import 'package:rvms_model_sample/display_todos/_model/todo.dart'; abstract class TodoManager { ValueListenable> get filteredTodos; ValueListenable> get allTodos; + ValueListenable get errors; Command selectFilterCommand; Command loadTodoCommand; diff --git a/rvms/lib/display_todos/_manager/todo_manager_implementation.dart b/rvms/lib/display_todos/_manager/todo_manager_implementation.dart index 526607d1..e347d4b2 100644 --- a/rvms/lib/display_todos/_manager/todo_manager_implementation.dart +++ b/rvms/lib/display_todos/_manager/todo_manager_implementation.dart @@ -16,11 +16,14 @@ class TodoManagerImplementation implements TodoManager { TodosRepository repository; ValueListenable> get allTodos => _todos; - ValueNotifier> _todos; + ValueNotifier> _todos = ValueNotifier>([]); ValueListenable> get filteredTodos => _filteredTodos; ValueNotifier> _filteredTodos; + ValueListenable get errors => _errors; + ValueNotifier _errors; + @override VisibilityFilter get activeFilter => selectFilterCommand.value; @@ -57,18 +60,19 @@ class TodoManagerImplementation implements TodoManager { /// the combineLatest ensures that [todos] get's updated whenever [_todos] /// changes or when [selectFilterCommand is called] _filteredTodos = selectFilterCommand - .map>((filter) => _todos.value.where((todo) { - switch (filter) { - case VisibilityFilter.active: - return !todo.complete; - case VisibilityFilter.completed: - return todo.complete; - case VisibilityFilter.all: - default: - return true; - } - }).toList()) - .combineLatest(_todos, (filtered, _) => filtered); + .combineLatest, List>(_todos, (filter, todos) { + return todos.where((todo) { + switch (filter) { + case VisibilityFilter.active: + return !todo.complete; + case VisibilityFilter.completed: + return todo.complete; + case VisibilityFilter.all: + default: + return true; + } + }).toList(); + }); } /// Loads remote data diff --git a/rvms/lib/display_todos/home_screen.dart b/rvms/lib/display_todos/home_screen.dart index 84fffc73..157e8dd7 100644 --- a/rvms/lib/display_todos/home_screen.dart +++ b/rvms/lib/display_todos/home_screen.dart @@ -3,6 +3,7 @@ // in the LICENSE file. import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; import 'package:rvms_model_sample/display_todos/_model/typedefs.dart'; import 'package:rvms_model_sample/display_todos/widgets/extra_actions_button.dart'; import 'package:rvms_model_sample/display_todos/widgets/filter_button.dart'; @@ -25,44 +26,54 @@ class HomeScreenState extends State { @override Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text(RvmsLocalizations.of(context).appTitle), - actions: [ - FilterButton(isActive: _activeTab == AppTab.todos), - ExtraActionsButton() - ], - ), - body: _activeTab == AppTab.todos ? TodoList() : StatsCounter(), - floatingActionButton: FloatingActionButton( - key: ArchSampleKeys.addTodoFab, - onPressed: () { - Navigator.pushNamed(context, ArchSampleRoutes.addTodo); - }, - child: Icon(Icons.add), - tooltip: ArchSampleLocalizations.of(context).addTodo, - ), - bottomNavigationBar: BottomNavigationBar( - key: ArchSampleKeys.tabs, - currentIndex: AppTab.values.indexOf(_activeTab), - onTap: (index) { - _updateTab(AppTab.values[index]); - }, - items: AppTab.values.map((tab) { - return BottomNavigationBarItem( - icon: Icon( - tab == AppTab.todos ? Icons.list : Icons.show_chart, - key: tab == AppTab.stats - ? ArchSampleKeys.statsTab - : ArchSampleKeys.todoTab, - ), - label: tab == AppTab.stats - ? ArchSampleLocalizations.of(context).stats - : ArchSampleLocalizations.of(context).todos, - ); - }).toList(), - ), - ); + return FutureBuilder( + future: GetIt.I.allReady(), + builder: (context, snapshot) { + if (!snapshot.hasData) { + return Center( + child: CircularProgressIndicator(), + ); + } else { + return Scaffold( + appBar: AppBar( + title: Text(RvmsLocalizations.of(context).appTitle), + actions: [ + FilterButton(isActive: _activeTab == AppTab.todos), + ExtraActionsButton() + ], + ), + body: _activeTab == AppTab.todos ? TodoList() : StatsCounter(), + floatingActionButton: FloatingActionButton( + key: ArchSampleKeys.addTodoFab, + onPressed: () { + Navigator.pushNamed(context, ArchSampleRoutes.addTodo); + }, + child: Icon(Icons.add), + tooltip: ArchSampleLocalizations.of(context).addTodo, + ), + bottomNavigationBar: BottomNavigationBar( + key: ArchSampleKeys.tabs, + currentIndex: AppTab.values.indexOf(_activeTab), + onTap: (index) { + _updateTab(AppTab.values[index]); + }, + items: AppTab.values.map((tab) { + return BottomNavigationBarItem( + icon: Icon( + tab == AppTab.todos ? Icons.list : Icons.show_chart, + key: tab == AppTab.stats + ? ArchSampleKeys.statsTab + : ArchSampleKeys.todoTab, + ), + label: tab == AppTab.stats + ? ArchSampleLocalizations.of(context).stats + : ArchSampleLocalizations.of(context).todos, + ); + }).toList(), + ), + ); + } + }); } _updateTab(AppTab tab) { diff --git a/rvms/lib/main.dart b/rvms/lib/main.dart index 59ce39ca..fa4a907f 100644 --- a/rvms/lib/main.dart +++ b/rvms/lib/main.dart @@ -3,8 +3,10 @@ // in the LICENSE file. import 'package:flutter/material.dart'; +import 'package:rvms_model_sample/locator.dart'; import 'package:rvms_model_sample/startup/app.dart'; void main() { + initLocator(); runApp(RvmsApp()); } diff --git a/rvms/test_driver/todo_app.dart b/rvms/test_driver/todo_app.dart index c1ac2d2e..d73c245e 100644 --- a/rvms/test_driver/todo_app.dart +++ b/rvms/test_driver/todo_app.dart @@ -4,7 +4,7 @@ // This line imports the extension import 'package:flutter_driver/driver_extension.dart'; -import 'package:scoped_model_sample/main.dart' as app; +import 'package:rvms_model_sample/main.dart' as app; void main() { enableFlutterDriverExtension(); From 14123faaf838c2f208212ab22f0a85b6afc4316e Mon Sep 17 00:00:00 2001 From: Thomas Burkhart Date: Thu, 8 Oct 2020 19:29:30 +0200 Subject: [PATCH 03/77] added a service and updated tests and reatme --- .vscode/launch.json | 152 +++++++++++++++ rvms/.flutter-plugins-dependencies | 2 +- rvms/.vscode/settings.json | 16 ++ rvms/README.md | 21 +- rvms/android/app/build.gradle | 2 +- .../android/app/src/debug/AndroidManifest.xml | 2 +- rvms/android/app/src/main/AndroidManifest.xml | 4 +- .../{scoped_model => rvms}/MainActivity.kt | 2 +- .../app/src/profile/AndroidManifest.xml | 2 +- rvms/ios/Runner/Info.plist | 2 +- .../_manager/todo_manager_implementation.dart | 80 ++++---- .../_services/repository_service_.dart | 18 ++ .../_services/repository_service_impl.dart | 55 ++++++ rvms/lib/display_todos/detail_screen.dart | 4 +- rvms/lib/display_todos/home_screen.dart | 150 +++++++++----- .../display_todos/widgets/filter_button.dart | 7 +- rvms/lib/edit_todos/add_edit_screen.dart | 6 +- rvms/lib/locator.dart | 8 +- rvms/pubspec.yaml | 24 +-- rvms/test/app_state_test.dart | 169 ---------------- rvms/test/todo_manager_test.dart | 183 ++++++++++++++++++ 21 files changed, 609 insertions(+), 300 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 rvms/.vscode/settings.json rename rvms/android/app/src/main/kotlin/com/example/{scoped_model => rvms}/MainActivity.kt (92%) create mode 100644 rvms/lib/display_todos/_services/repository_service_.dart create mode 100644 rvms/lib/display_todos/_services/repository_service_impl.dart delete mode 100644 rvms/test/app_state_test.dart create mode 100644 rvms/test/todo_manager_test.dart diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..2428e8fc --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,152 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "blocs", + "cwd": "blocs", + "request": "launch", + "type": "dart" + }, + { + "name": "bloc_flutter", + "cwd": "bloc_flutter", + "request": "launch", + "type": "dart" + }, + { + "name": "bloc_library", + "cwd": "bloc_library", + "request": "launch", + "type": "dart" + }, + { + "name": "built_redux", + "cwd": "built_redux", + "request": "launch", + "type": "dart" + }, + { + "name": "firebase_flutter_repository", + "cwd": "firebase_flutter_repository", + "request": "launch", + "type": "dart" + }, + { + "name": "firebase_rtdb_flutter_repository", + "cwd": "firebase_rtdb_flutter_repository", + "request": "launch", + "type": "dart" + }, + { + "name": "firestore_redux", + "cwd": "firestore_redux", + "request": "launch", + "type": "dart" + }, + { + "name": "frideos_library", + "cwd": "frideos_library", + "request": "launch", + "type": "dart" + }, + { + "name": "inherited_widget", + "cwd": "inherited_widget", + "request": "launch", + "type": "dart" + }, + { + "name": "integration_tests", + "cwd": "integration_tests", + "request": "launch", + "type": "dart" + }, + { + "name": "mobx", + "cwd": "mobx", + "request": "launch", + "type": "dart" + }, + { + "name": "mvc", + "cwd": "mvc", + "request": "launch", + "type": "dart" + }, + { + "name": "mvi_base", + "cwd": "mvi_base", + "request": "launch", + "type": "dart" + }, + { + "name": "mvi_flutter", + "cwd": "mvi_flutter", + "request": "launch", + "type": "dart" + }, + { + "name": "mvu", + "cwd": "mvu", + "request": "launch", + "type": "dart" + }, + { + "name": "redux", + "cwd": "redux", + "request": "launch", + "type": "dart" + }, + { + "name": "rvms", + "cwd": "rvms", + "request": "launch", + "type": "dart" + }, + { + "name": "scoped_model", + "cwd": "scoped_model", + "request": "launch", + "type": "dart" + }, + { + "name": "simple_blocs", + "cwd": "simple_blocs", + "request": "launch", + "type": "dart" + }, + { + "name": "simple_bloc_flutter", + "cwd": "simple_bloc_flutter", + "request": "launch", + "type": "dart" + }, + { + "name": "todos_app_core", + "cwd": "todos_app_core", + "request": "launch", + "type": "dart" + }, + { + "name": "todos_repository_core", + "cwd": "todos_repository_core", + "request": "launch", + "type": "dart" + }, + { + "name": "todos_repository_simple", + "cwd": "todos_repository_simple", + "request": "launch", + "type": "dart" + }, + { + "name": "vanilla", + "cwd": "vanilla", + "request": "launch", + "type": "dart" + } + ] +} \ No newline at end of file diff --git a/rvms/.flutter-plugins-dependencies b/rvms/.flutter-plugins-dependencies index 2f733d99..5217271f 100644 --- a/rvms/.flutter-plugins-dependencies +++ b/rvms/.flutter-plugins-dependencies @@ -1 +1 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"android":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_macos-0.0.4+4\\\\","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_linux-0.0.1+2\\\\","dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_windows-0.0.4+1\\\\","dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]}],"date_created":"2020-10-05 15:49:50.617792","version":"1.22.0"} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"android":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_macos-0.0.4+4\\\\","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_linux-0.0.1+2\\\\","dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_windows-0.0.4+1\\\\","dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]}],"date_created":"2020-10-08 19:19:22.596097","version":"1.22.0"} \ No newline at end of file diff --git a/rvms/.vscode/settings.json b/rvms/.vscode/settings.json new file mode 100644 index 00000000..97fe5ca4 --- /dev/null +++ b/rvms/.vscode/settings.json @@ -0,0 +1,16 @@ +{ + "spellright.language": [ + "en" + ], + "spellright.documentTypes": [ + "markdown", + "latex", + "plaintext", + "dart" + ], + "spellright.parserByClass": { + "dart": { + "parser": "code" + } + } +} \ No newline at end of file diff --git a/rvms/README.md b/rvms/README.md index 6874c617..9ac826e5 100644 --- a/rvms/README.md +++ b/rvms/README.md @@ -1,16 +1,11 @@ -# scoped_model +# rvms -A new Flutter project. +This is an implementation of the architecture sample following the RVMS approach where you have Views over Managers that contain the business logic which uses Services to connect to the outside world. -## Getting Started +It uses the following packages: -This project is a starting point for a Flutter application. - -A few resources to get you started if this is your first Flutter project: - -- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) - -For help getting started with Flutter, view our -[online documentation](https://flutter.dev/docs), which offers tutorials, -samples, guidance on mobile development, and a full API reference. +* `get_it`: as ServiceLocator to access Managers from the UI and Services from Managers +* `get_it_mixin`: to bind the data inside GetIt to the the Widgets ++ `flutter_command`: as connector between Manager UI +* `functional_listener`: rx like extension methods for `ValueListenables` +* `listenable_collections`: We use `ListNotifier` of this package which is a List that behaves like a `ValueNofitier` \ No newline at end of file diff --git a/rvms/android/app/build.gradle b/rvms/android/app/build.gradle index e16427c0..bec322fb 100644 --- a/rvms/android/app/build.gradle +++ b/rvms/android/app/build.gradle @@ -38,7 +38,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.scoped_model" + applicationId "com.example.rvms" minSdkVersion 16 targetSdkVersion 28 versionCode flutterVersionCode.toInteger() diff --git a/rvms/android/app/src/debug/AndroidManifest.xml b/rvms/android/app/src/debug/AndroidManifest.xml index 321ebbeb..95b02ba7 100644 --- a/rvms/android/app/src/debug/AndroidManifest.xml +++ b/rvms/android/app/src/debug/AndroidManifest.xml @@ -1,5 +1,5 @@ + package="com.example.rvms"> diff --git a/rvms/android/app/src/main/AndroidManifest.xml b/rvms/android/app/src/main/AndroidManifest.xml index 59c10228..6727b132 100644 --- a/rvms/android/app/src/main/AndroidManifest.xml +++ b/rvms/android/app/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ + package="com.example.rvms"> + package="com.example.rvms"> diff --git a/rvms/ios/Runner/Info.plist b/rvms/ios/Runner/Info.plist index c683ec62..3de9ef1b 100644 --- a/rvms/ios/Runner/Info.plist +++ b/rvms/ios/Runner/Info.plist @@ -11,7 +11,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - scoped_model + rvms CFBundlePackageType APPL CFBundleShortVersionString diff --git a/rvms/lib/display_todos/_manager/todo_manager_implementation.dart b/rvms/lib/display_todos/_manager/todo_manager_implementation.dart index e347d4b2..bbcf9f3c 100644 --- a/rvms/lib/display_todos/_manager/todo_manager_implementation.dart +++ b/rvms/lib/display_todos/_manager/todo_manager_implementation.dart @@ -6,17 +6,16 @@ import 'dart:async'; import 'package:flutter/foundation.dart'; import 'package:flutter_command/flutter_command.dart'; -import 'package:path_provider/path_provider.dart'; +import 'package:listenable_collections/listenable_collections.dart'; import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; import 'package:rvms_model_sample/display_todos/_model/todo.dart'; -import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:rvms_model_sample/display_todos/_services/repository_service_.dart'; -class TodoManagerImplementation implements TodoManager { - TodosRepository repository; +import '../../locator.dart'; +class TodoManagerImplementation implements TodoManager { ValueListenable> get allTodos => _todos; - ValueNotifier> _todos = ValueNotifier>([]); + final _todos = ListNotifier(data: []); ValueListenable> get filteredTodos => _filteredTodos; ValueNotifier> _filteredTodos; @@ -32,31 +31,33 @@ class TodoManagerImplementation implements TodoManager { Command clearCompletedCommand; Command upLoadCommand; - // ValueListenable errors = upLoadCommand.thrownExceptions.combineLatest(loadTodoCommand.thrownExceptions,) - - TodoManagerImplementation({VisibilityFilter activeFilter}) { - repository = const TodosRepositoryFlutter( - fileStorage: const FileStorage( - 'rvms_todos', - getApplicationDocumentsDirectory, - ), - ); - + TodoManagerImplementation({ + VisibilityFilter activeFilter, + }) { loadTodoCommand = Command.createAsyncNoParamNoResult(loadTodos) - ..thrownExceptions.listen((_, __) => _todos.value = []); - - selectFilterCommand = - Command.createSync((filter) => filter, VisibilityFilter.all); + ..thrownExceptions.listen((_, __) => _todos.clear()); + /// We wouldn't need to implement this as a command as we are not using any of the + /// features that a command gives us. clearCompletedCommand = Command.createSyncNoParamNoResult(() { - _todos.value = _todos.value..removeWhere((todo) => todo.complete); + _todos.removeWhere((todo) => todo.complete); }); + /// if this app didn't have already a snackbar with undo function + /// we could pass a changing text for the snackbar that should + /// be displayed when the command is finished + /// + /// I will add the needed code in the UI but comment it out upLoadCommand = Command.createAsync((snackBarText) async { await _uploadItems(); return snackBarText; }, ''); + _errors = loadTodoCommand.thrownExceptions.mergeWith( + [upLoadCommand.thrownExceptions]).map((error) => error.toString()); + + selectFilterCommand = Command.createSync((filter) => filter, activeFilter); + /// the combineLatest ensures that [todos] get's updated whenever [_todos] /// changes or when [selectFilterCommand is called] _filteredTodos = selectFilterCommand @@ -78,16 +79,18 @@ class TodoManagerImplementation implements TodoManager { /// Loads remote data /// /// Call this initially and when the user manually refreshes - Future loadTodos() { - return repository.loadTodos().then((loadedTodos) { - _todos.value = loadedTodos.map(Todo.fromEntity).toList(); - }); + Future loadTodos() async { + _todos.clear(); + return _todos.addAll(await locator().loadTodos()); } void toggleAll() { - var allComplete = _filteredTodos.value.every((todo) => todo.complete); - _todos.value = - _todos.value.map((todo) => todo.copy(complete: !allComplete)).toList(); + var allComplete = _todos.every((todo) => todo.complete); + _todos.startTransAction(); + for (int i = 0; i < _todos.length; i++) { + _todos[i] = _todos[i].copy(complete: !allComplete); + } + _todos.endTransAction(); upLoadCommand('Upload finished'); } @@ -95,29 +98,30 @@ class TodoManagerImplementation implements TodoManager { void updateTodo(Todo todo) { assert(todo != null); assert(todo.id != null); - var oldTodo = _todos.value.firstWhere((it) => it.id == todo.id); - var replaceIndex = _todos.value.indexOf(oldTodo); - _todos.value = _todos.value - ..replaceRange(replaceIndex, replaceIndex + 1, [todo]); + var oldTodo = _todos.firstWhere((it) => it.id == todo.id); + var replaceIndex = _todos.indexOf(oldTodo); + _todos[replaceIndex] = todo; upLoadCommand('Update finished'); } void removeTodo(Todo todo) { - _todos.value = _todos.value..removeWhere((it) => it.id == todo.id); + _todos.removeWhere((it) => it.id == todo.id); upLoadCommand('Todo deleted'); } void addTodo(Todo todo) { - _todos.value = _todos.value..add(todo); + _todos.add(todo); upLoadCommand('Todo added'); } - Future _uploadItems() { - return repository - .saveTodos(_todos.value.map((it) => it.toEntity()).toList()); + Future _uploadItems() async { + /// to simulate a longer transaction to show that then a spinner + /// is automatic displayed + /// await Future.delayed(Duration(milliseconds: 2000)); + return await locator().saveTodos(_todos); } Todo todoById(String id) { - return _todos.value.firstWhere((it) => it.id == id, orElse: () => null); + return _todos.firstWhere((it) => it.id == id, orElse: () => null); } } diff --git a/rvms/lib/display_todos/_services/repository_service_.dart b/rvms/lib/display_todos/_services/repository_service_.dart new file mode 100644 index 00000000..1d39edaf --- /dev/null +++ b/rvms/lib/display_todos/_services/repository_service_.dart @@ -0,0 +1,18 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; +import 'dart:core'; + +import 'package:rvms_model_sample/display_todos/_model/todo.dart'; + +abstract class RepositoryService { + + /// Loads todos first from File storage. If they don't exist or encounter an + /// error, it attempts to load the Todos from a Web Service. + Future> loadTodos(); + + // Persists todos to local disk and the web + Future saveTodos(List todos); +} diff --git a/rvms/lib/display_todos/_services/repository_service_impl.dart b/rvms/lib/display_todos/_services/repository_service_impl.dart new file mode 100644 index 00000000..73c31f41 --- /dev/null +++ b/rvms/lib/display_todos/_services/repository_service_impl.dart @@ -0,0 +1,55 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; +import 'dart:core'; + +import 'package:path_provider/path_provider.dart'; +import 'package:rvms_model_sample/display_todos/_model/todo.dart'; +import 'package:rvms_model_sample/display_todos/_services/repository_service_.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; + +/// A class that glues together our local file storage and web client. It has a +/// clear responsibility: Load Todos and Persist todos. +/// +/// In most apps, we use the provided repository. In this case, it makes sense +/// to demonstrate the built_value serializers, which are used in the +/// FileStorage part of this app. +/// +/// Please see the `todos_repository` library for more information about the +/// Repository pattern. +class RepositoryServiceImplementation implements RepositoryService { + final FileStorage fileStorage; + final WebClient webClient; + + const RepositoryServiceImplementation({ + this.fileStorage = const FileStorage( + '__built_redux_sample_app__', + getApplicationDocumentsDirectory, + ), + this.webClient = const WebClient(), + }); + + /// Loads todos first from File storage. If they don't exist or encounter an + /// error, it attempts to load the Todos from a Web Service. + Future> loadTodos() async { + List loadedTodos; + try { + loadedTodos = await fileStorage.loadTodos(); + } catch (e) { + loadedTodos = await webClient.fetchTodos(); + } + return loadedTodos.map(Todo.fromEntity).toList(); + } + + // Persists todos to local disk and the web + Future saveTodos(List todos) { + final todoEntities = todos.map((it) => it.toEntity()).toList(); + return Future.wait([ + fileStorage.saveTodos(todoEntities), + webClient.postTodos(todoEntities), + ]); + } +} diff --git a/rvms/lib/display_todos/detail_screen.dart b/rvms/lib/display_todos/detail_screen.dart index 40e2b26b..044061ac 100644 --- a/rvms/lib/display_todos/detail_screen.dart +++ b/rvms/lib/display_todos/detail_screen.dart @@ -4,10 +4,10 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:get_it/get_it.dart'; import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; import 'package:rvms_model_sample/display_todos/_model/todo.dart'; import 'package:rvms_model_sample/edit_todos/add_edit_screen.dart'; +import 'package:rvms_model_sample/locator.dart'; import 'package:todos_app_core/todos_app_core.dart'; class DetailScreen extends StatelessWidget { @@ -19,7 +19,7 @@ class DetailScreen extends StatelessWidget { @override Widget build(BuildContext context) { - final todoManager = GetIt.I(); + final todoManager = locator(); // fallback to empty item. When deleting it, it is null before the screen is gone var todo = todoManager.todoById(todoId) ?? Todo(''); return Scaffold( diff --git a/rvms/lib/display_todos/home_screen.dart b/rvms/lib/display_todos/home_screen.dart index 157e8dd7..8ef25e22 100644 --- a/rvms/lib/display_todos/home_screen.dart +++ b/rvms/lib/display_todos/home_screen.dart @@ -3,7 +3,9 @@ // in the LICENSE file. import 'package:flutter/material.dart'; -import 'package:get_it/get_it.dart'; +import 'package:functional_listener/functional_listener.dart'; +import 'package:get_it_mixin/get_it_mixin.dart'; +import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; import 'package:rvms_model_sample/display_todos/_model/typedefs.dart'; import 'package:rvms_model_sample/display_todos/widgets/extra_actions_button.dart'; import 'package:rvms_model_sample/display_todos/widgets/filter_button.dart'; @@ -12,7 +14,7 @@ import 'package:rvms_model_sample/display_todos/widgets/todo_list.dart'; import 'package:rvms_model_sample/localization.dart'; import 'package:todos_app_core/todos_app_core.dart'; -class HomeScreen extends StatefulWidget { +class HomeScreen extends StatefulWidget with GetItStatefulWidgetMixin { HomeScreen() : super(key: ArchSampleKeys.homeScreen); @override @@ -21,59 +23,76 @@ class HomeScreen extends StatefulWidget { } } -class HomeScreenState extends State { +class HomeScreenState extends State with GetItStateMixin { AppTab _activeTab = AppTab.todos; @override Widget build(BuildContext context) { - return FutureBuilder( - future: GetIt.I.allReady(), - builder: (context, snapshot) { - if (!snapshot.hasData) { - return Center( - child: CircularProgressIndicator(), - ); - } else { - return Scaffold( - appBar: AppBar( - title: Text(RvmsLocalizations.of(context).appTitle), - actions: [ - FilterButton(isActive: _activeTab == AppTab.todos), - ExtraActionsButton() - ], - ), - body: _activeTab == AppTab.todos ? TodoList() : StatsCounter(), - floatingActionButton: FloatingActionButton( - key: ArchSampleKeys.addTodoFab, - onPressed: () { - Navigator.pushNamed(context, ArchSampleRoutes.addTodo); - }, - child: Icon(Icons.add), - tooltip: ArchSampleLocalizations.of(context).addTodo, - ), - bottomNavigationBar: BottomNavigationBar( - key: ArchSampleKeys.tabs, - currentIndex: AppTab.values.indexOf(_activeTab), - onTap: (index) { - _updateTab(AppTab.values[index]); - }, - items: AppTab.values.map((tab) { - return BottomNavigationBarItem( - icon: Icon( - tab == AppTab.todos ? Icons.list : Icons.show_chart, - key: tab == AppTab.stats - ? ArchSampleKeys.statsTab - : ArchSampleKeys.todoTab, - ), - label: tab == AppTab.stats - ? ArchSampleLocalizations.of(context).stats - : ArchSampleLocalizations.of(context).todos, - ); - }).toList(), + /// We use GetIt's start-up synchronization support here + if (!allReady()) { + return Center( + child: CircularProgressIndicator(), + ); + } else { + /// Show an Error dialog whenever the TodoManager reports an error + registerHandler((TodoManager manager) => manager.errors, + (context, message, _) => showErrorDlg(context, message)); + + /// if data uploading takes longer than 500ms show a waiting spinner + registerHandler( + (TodoManager manager) => manager.upLoadCommand.isExecuting + .debounce(Duration(milliseconds: 500)), + (context, busy, __) => showSpinner(context, busy)); + + ///alterrnative snackbar + // registerHandler( + // (TodoManager manager) => manager.upLoadCommand, + // (context, snackText, _) => Scaffold.of(context).showSnackBar( + // SnackBar( + // content: Text(snackText), + // duration: Duration(milliseconds: 800), + // ), + // )); + + return Scaffold( + appBar: AppBar( + title: Text(RvmsLocalizations.of(context).appTitle), + actions: [ + FilterButton(isActive: _activeTab == AppTab.todos), + ExtraActionsButton() + ], + ), + body: _activeTab == AppTab.todos ? TodoList() : StatsCounter(), + floatingActionButton: FloatingActionButton( + key: ArchSampleKeys.addTodoFab, + onPressed: () { + Navigator.pushNamed(context, ArchSampleRoutes.addTodo); + }, + child: Icon(Icons.add), + tooltip: ArchSampleLocalizations.of(context).addTodo, + ), + bottomNavigationBar: BottomNavigationBar( + key: ArchSampleKeys.tabs, + currentIndex: AppTab.values.indexOf(_activeTab), + onTap: (index) { + _updateTab(AppTab.values[index]); + }, + items: AppTab.values.map((tab) { + return BottomNavigationBarItem( + icon: Icon( + tab == AppTab.todos ? Icons.list : Icons.show_chart, + key: tab == AppTab.stats + ? ArchSampleKeys.statsTab + : ArchSampleKeys.todoTab, ), + label: tab == AppTab.stats + ? ArchSampleLocalizations.of(context).stats + : ArchSampleLocalizations.of(context).todos, ); - } - }); + }).toList(), + ), + ); + } } _updateTab(AppTab tab) { @@ -81,4 +100,37 @@ class HomeScreenState extends State { _activeTab = tab; }); } + + void showErrorDlg(BuildContext context, message) { + showDialog( + context: context, + builder: (context) => AlertDialog( + title: Text('There was a problem saving your data'), + content: Text(message), + actions: [ + TextButton( + child: Text('Ok'), + onPressed: () => Navigator.of(context).pop(), + ) + ], + )); + } + + OverlayEntry spinner; + + showSpinner(BuildContext context, busy) { + if (busy && spinner == null) { + spinner = OverlayEntry( + builder: (context) => Center( + child: CircularProgressIndicator( + key: Key('busySpinner'), + ), + ), + ); + Overlay.of(context).insert(spinner); + } else { + spinner?.remove(); + spinner = null; + } + } } diff --git a/rvms/lib/display_todos/widgets/filter_button.dart b/rvms/lib/display_todos/widgets/filter_button.dart index de9fc7cf..eff037c3 100644 --- a/rvms/lib/display_todos/widgets/filter_button.dart +++ b/rvms/lib/display_todos/widgets/filter_button.dart @@ -3,10 +3,11 @@ // in the LICENSE file. import 'package:flutter/material.dart'; -import 'package:get_it/get_it.dart'; import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; import 'package:todos_app_core/todos_app_core.dart'; +import '../../locator.dart'; + class FilterButton extends StatelessWidget { final bool isActive; @@ -20,7 +21,7 @@ class FilterButton extends StatelessWidget { child: PopupMenuButton( key: ArchSampleKeys.filterButton, tooltip: ArchSampleLocalizations.of(context).filterTodos, - onSelected: GetIt.I().selectFilterCommand, + onSelected: locator().selectFilterCommand, itemBuilder: (BuildContext context) => _items(context), icon: Icon(Icons.filter_list), ), @@ -34,7 +35,7 @@ class FilterButton extends StatelessWidget { .copyWith(color: Theme.of(context).accentColor); final defaultStyle = Theme.of(context).textTheme.bodyText1; - final activeFilter = GetIt.I().activeFilter; + final activeFilter = locator().activeFilter; return [ PopupMenuItem( key: ArchSampleKeys.allFilter, diff --git a/rvms/lib/edit_todos/add_edit_screen.dart b/rvms/lib/edit_todos/add_edit_screen.dart index ba3048d1..362280e8 100644 --- a/rvms/lib/edit_todos/add_edit_screen.dart +++ b/rvms/lib/edit_todos/add_edit_screen.dart @@ -5,9 +5,9 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:get_it/get_it.dart'; import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; import 'package:rvms_model_sample/display_todos/_model/todo.dart'; +import 'package:rvms_model_sample/locator.dart'; import 'package:todos_app_core/todos_app_core.dart'; class AddEditScreen extends StatefulWidget { @@ -34,7 +34,7 @@ class _AddEditScreenState extends State { final localizations = ArchSampleLocalizations.of(context); final textTheme = Theme.of(context).textTheme; - var task = GetIt.I().todoById(widget.todoId); + var task = locator().todoById(widget.todoId); return Scaffold( appBar: AppBar( title: Text( @@ -90,7 +90,7 @@ class _AddEditScreenState extends State { if (form.validate()) { form.save(); - final todoManager = GetIt.I(); + final todoManager = locator(); if (isEditing) { final todo = todoManager.todoById(widget.todoId); todoManager.updateTodo(todo.copy(task: _task, note: _note)); diff --git a/rvms/lib/locator.dart b/rvms/lib/locator.dart index 582e7ba8..80fc19a7 100644 --- a/rvms/lib/locator.dart +++ b/rvms/lib/locator.dart @@ -1,9 +1,15 @@ import 'package:get_it/get_it.dart'; import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; import 'package:rvms_model_sample/display_todos/_manager/todo_manager_implementation.dart'; +import 'package:rvms_model_sample/display_todos/_services/repository_service_.dart'; +import 'package:rvms_model_sample/display_todos/_services/repository_service_impl.dart'; + +final locator = GetIt.instance; void initLocator() { - GetIt.I.registerSingletonAsync(() async { + locator + .registerSingleton(RepositoryServiceImplementation()); + locator.registerSingletonAsync(() async { final manager = TodoManagerImplementation(); await manager.loadTodos(); return manager; diff --git a/rvms/pubspec.yaml b/rvms/pubspec.yaml index 5fea181f..9ea69ed2 100644 --- a/rvms/pubspec.yaml +++ b/rvms/pubspec.yaml @@ -9,28 +9,28 @@ environment: dependencies: flutter: sdk: flutter - todos_repository_simple: - path: ../todos_repository_simple todos_app_core: path: ../todos_app_core + todos_repository_simple: + path: ../todos_repository_simple + flutter_command: any + functional_listener: any get_it: any get_it_mixin: any - functional_listener: any - flutter_command: any - + listenable_collections: ^0.0.5 + dev_dependencies: - flutter_test: - sdk: flutter flutter_driver: sdk: flutter - test: - mockito: + flutter_test: + sdk: flutter integration_tests: path: ../integration_tests + mockito: null + test: null # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec - # The following section is specific to Flutter. flutter: @@ -38,18 +38,14 @@ flutter: # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true - # To add assets to your application, add an assets section, like this: # assets: # - images/a_dot_burr.jpeg # - images/a_dot_ham.jpeg - # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware. - # For details regarding adding assets from package dependencies, see # https://flutter.dev/assets-and-images/#from-packages - # To add custom fonts to your application, add a fonts section here, # in this "flutter" section. Each entry in this list should have a # "family" key with the font family name, and a "fonts" key with a diff --git a/rvms/test/app_state_test.dart b/rvms/test/app_state_test.dart deleted file mode 100644 index 26ca7306..00000000 --- a/rvms/test/app_state_test.dart +++ /dev/null @@ -1,169 +0,0 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'dart:async'; - -import 'package:scoped_model_sample/models.dart'; -import 'package:scoped_model_sample/todo_list_model.dart'; -import 'package:test/test.dart'; -import 'package:todos_repository_core/todos_repository_core.dart'; - -main() { - group('TodoListModel', () { - test('should check if there are completed todos', () async { - final model = TodoListModel( - repository: MockRepository([ - Todo('a'), - Todo('b'), - Todo('c', complete: true), - ])); - await model.loadTodos(); - - expect(model._filteredTodos.any((it) => it.complete), true); - }); - - test('should calculate the number of active todos', () async { - final model = TodoListModel( - repository: MockRepository([ - Todo('a'), - Todo('b'), - Todo('c', complete: true), - ])); - await model.loadTodos(); - - expect( - model._filteredTodos.where((it) => !it.complete).toList().length, 2); - }); - - test('should calculate the number of completed todos', () async { - final model = TodoListModel( - repository: MockRepository([ - Todo('a'), - Todo('b'), - Todo('c', complete: true), - ])); - await model.loadTodos(); - - expect( - model._filteredTodos.where((it) => it.complete).toList().length, 1); - }); - - test('should return all todos if the VisibilityFilter is all', () async { - final todos = [ - Todo('a'), - Todo('b'), - Todo('c', complete: true), - ]; - final model = TodoListModel( - repository: MockRepository(todos), - activeFilter: VisibilityFilter.all); - await model.loadTodos(); - - expect(model._filteredTodos, todos); - }); - - test('should return active todos if the VisibilityFilter is active', - () async { - final todo1 = Todo('a'); - final todo2 = Todo('b'); - final todo3 = Todo('c', complete: true); - final todos = [ - todo1, - todo2, - todo3, - ]; - final model = TodoListModel( - repository: MockRepository(todos), - activeFilter: VisibilityFilter.active, - ); - await model.loadTodos(); - - expect(model._filteredTodos, [ - todo1, - todo2, - ]); - }); - - test('should return completed todos if the VisibilityFilter is completed', - () async { - final todo1 = Todo('a'); - final todo2 = Todo('b'); - final todo3 = Todo('c', complete: true); - final todos = [ - todo1, - todo2, - todo3, - ]; - final model = TodoListModel( - repository: MockRepository(todos), - activeFilter: VisibilityFilter.completed, - ); - await model.loadTodos(); - - expect(model._filteredTodos, [todo3]); - }); - - test('should clear the completed todos', () async { - final todo1 = Todo('a'); - final todo2 = Todo('b'); - final todo3 = Todo('c', complete: true); - final todos = [ - todo1, - todo2, - todo3, - ]; - final model = TodoListModel( - repository: MockRepository(todos), - ); - await model.loadTodos(); - - model.clearCompleted(); - - expect(model._filteredTodos, [ - todo1, - todo2, - ]); - }); - - test('toggle all as complete or incomplete', () async { - final todo1 = Todo('a'); - final todo2 = Todo('b'); - final todo3 = Todo('c', complete: true); - final todos = [ - todo1, - todo2, - todo3, - ]; - final model = TodoListModel( - repository: MockRepository(todos), - ); - await model.loadTodos(); - - // Toggle all complete - model.toggleAll(); - expect(model._filteredTodos.every((t) => t.complete), isTrue); - - // Toggle all incomplete - model.toggleAll(); - expect(model._filteredTodos.every((t) => !t.complete), isTrue); - }); - }); -} - -class MockRepository extends TodosRepository { - List entities; - - MockRepository(List todos) - : this.entities = todos.map((it) => it.toEntity()).toList(); - - @override - Future> loadTodos() { - return Future.value(entities); - } - - @override - Future saveTodos(List todos) { - return Future.sync(() => entities = todos); - } -} diff --git a/rvms/test/todo_manager_test.dart b/rvms/test/todo_manager_test.dart new file mode 100644 index 00000000..e937d052 --- /dev/null +++ b/rvms/test/todo_manager_test.dart @@ -0,0 +1,183 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; + +import 'package:get_it/get_it.dart'; +import 'package:rvms_model_sample/display_todos/_manager/todo_manager_.dart'; +import 'package:rvms_model_sample/display_todos/_manager/todo_manager_implementation.dart'; +import 'package:rvms_model_sample/display_todos/_model/todo.dart'; +import 'package:rvms_model_sample/display_todos/_services/repository_service_.dart'; +import 'package:test/test.dart'; + +final locator = GetIt.instance; +main() { + group('TodoManagerImplementation', () { + setUp(() async { + await locator.reset(); + }); + test('should check if there are completed todos', () async { + locator.registerSingleton(MockRepositoryService([ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ])); + final todoManager = TodoManagerImplementation(); + await todoManager.loadTodos(); + + expect(todoManager.filteredTodos.value.any((it) => it.complete), true); + }); + + test('should calculate the number of active todos', () async { + locator.registerSingleton(MockRepositoryService([ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ])); + final todoManager = TodoManagerImplementation(); + await todoManager.loadTodos(); + + expect( + todoManager.filteredTodos.value + .where((it) => !it.complete) + .toList() + .length, + 2); + }); + + test('should calculate the number of completed todos', () async { + locator.registerSingleton(MockRepositoryService([ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ])); + final todoManager = TodoManagerImplementation(); + await todoManager.loadTodos(); + + expect( + todoManager.filteredTodos.value + .where((it) => it.complete) + .toList() + .length, + 1); + }); + + test('should return all todos if the VisibilityFilter is all', () async { + final todos = [ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ]; + locator + .registerSingleton(MockRepositoryService(todos)); + final todoManager = TodoManagerImplementation(); + await todoManager.loadTodos(); + + expect(todoManager.filteredTodos.value, todos); + }); + + test('should return active todos if the VisibilityFilter is active', + () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + locator + .registerSingleton(MockRepositoryService(todos)); + final todoManager = + TodoManagerImplementation(activeFilter: VisibilityFilter.active); + + await todoManager.loadTodos(); + expect(todoManager.filteredTodos.value, [ + todo1, + todo2, + ]); + }); + + test('should return completed todos if the VisibilityFilter is completed', + () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + locator + .registerSingleton(MockRepositoryService(todos)); + final todoManager = + TodoManagerImplementation(activeFilter: VisibilityFilter.completed); + await todoManager.loadTodos(); + + expect(todoManager.filteredTodos.value, [todo3]); + }); + + test('should clear the completed todos', () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + locator + .registerSingleton(MockRepositoryService(todos)); + final todoManager = TodoManagerImplementation(); + await todoManager.loadTodos(); + + todoManager.clearCompletedCommand(); + + expect(todoManager.filteredTodos.value, [ + todo1, + todo2, + ]); + }); + + test('toggle all as complete or incomplete', () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + locator + .registerSingleton(MockRepositoryService(todos)); + final todoManager = TodoManagerImplementation(); + + await todoManager.loadTodos(); + + // Toggle all complete + todoManager.toggleAll(); + expect(todoManager.filteredTodos.value.every((t) => t.complete), isTrue); + + // Toggle all incomplete + todoManager.toggleAll(); + expect(todoManager.filteredTodos.value.every((t) => !t.complete), isTrue); + }); + }); +} + +class MockRepositoryService extends RepositoryService { + List entities; + + MockRepositoryService(List todos) : this.entities = todos; + + @override + Future> loadTodos() { + return Future.value(entities); + } + + @override + Future saveTodos(List todos) { + return Future.sync(() => entities = todos); + } +} From 17bcacb1be6c836ab1e5cdbe79c0e85043d19de0 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Tue, 7 Jan 2020 16:39:49 +0100 Subject: [PATCH 04/77] Run dartfmt on the codebase --- bloc_flutter/lib/widgets/stats_counter.dart | 8 +- bloc_flutter/lib/widgets/todo_list.dart | 3 +- .../lib/widgets/todos_bloc_provider.dart | 3 +- .../test/blocs/simple_bloc_delegate_test.dart | 2 +- blocs/lib/src/todos_interactor.dart | 8 +- .../presentation/extra_actions_button.dart | 26 ++-- .../lib/presentation/filter_button.dart | 65 +++++----- built_redux/lib/presentation/todo_list.dart | 32 ++--- built_redux/test/app_state_test.dart | 6 +- .../presentation/extra_actions_button.dart | 26 ++-- .../lib/presentation/filter_button.dart | 62 ++++----- .../lib/presentation/todo_list.dart | 7 +- .../lib/screens/add_edit_screen.dart | 121 +++++++++--------- frideos_library/lib/screens/homescreen.dart | 80 ++++++------ .../lib/widgets/stats_counter.dart | 8 +- frideos_library/lib/widgets/todo_list.dart | 51 ++++---- frideos_library/test_driver/main_test.dart | 3 +- inherited_widget/lib/state_container.dart | 3 +- integration_tests/lib/page_objects/utils.dart | 4 +- mvc/lib/src/models.dart | 3 +- mvc/lib/src/widgets/extra_actions_button.dart | 26 ++-- mvc/test/todo_list_model_test.dart | 3 +- mvu/lib/common/extra_actions_menu.dart | 29 ++--- mvu/lib/common/repository_commands.dart | 5 +- mvu/lib/edit/types.dart | 7 +- mvu/lib/home/state.dart | 7 +- mvu/lib/home/types.dart | 5 +- mvu/lib/localization.dart | 5 +- mvu/lib/main.dart | 3 +- mvu/lib/stats/state.dart | 3 +- mvu/lib/stats/stats.dart | 3 +- mvu/lib/stats/view.dart | 2 +- mvu/lib/todos/todos.dart | 2 +- mvu/lib/todos/types.dart | 2 - mvu/lib/todos/view.dart | 64 +++++---- mvu/test/details_screen_test.dart | 3 +- .../presentation/extra_actions_button.dart | 26 ++-- redux/lib/presentation/filter_button.dart | 62 ++++----- redux/lib/presentation/todo_list.dart | 7 +- scoped_model/lib/todo_list_model.dart | 20 +-- .../lib/widgets/extra_actions_button.dart | 26 ++-- scoped_model/lib/widgets/filter_button.dart | 3 +- scoped_model/lib/widgets/todo_list.dart | 34 ++--- .../lib/widgets/stats_counter.dart | 8 +- .../lib/widgets/todo_list.dart | 3 +- .../lib/widgets/todos_bloc_provider.dart | 3 +- todos_app_core/lib/src/routes.dart | 4 +- todos_app_core/lib/todos_app_core.dart | 1 - vanilla/lib/widgets/extra_actions_button.dart | 26 ++-- vanilla/lib/widgets/filter_button.dart | 62 ++++----- vanilla/lib/widgets/todo_list.dart | 32 ++--- 51 files changed, 498 insertions(+), 509 deletions(-) diff --git a/bloc_flutter/lib/widgets/stats_counter.dart b/bloc_flutter/lib/widgets/stats_counter.dart index a1ec164b..d75c0b40 100644 --- a/bloc_flutter/lib/widgets/stats_counter.dart +++ b/bloc_flutter/lib/widgets/stats_counter.dart @@ -47,10 +47,10 @@ class StatsCounterState extends State { child: StreamBuilder( stream: bloc.numComplete, builder: (context, snapshot) => Text( - '${snapshot.data ?? 0}', - key: ArchSampleKeys.statsNumCompleted, - style: Theme.of(context).textTheme.subhead, - ), + '${snapshot.data ?? 0}', + key: ArchSampleKeys.statsNumCompleted, + style: Theme.of(context).textTheme.subhead, + ), ), ), Padding( diff --git a/bloc_flutter/lib/widgets/todo_list.dart b/bloc_flutter/lib/widgets/todo_list.dart index ce76c98f..e4f24023 100644 --- a/bloc_flutter/lib/widgets/todo_list.dart +++ b/bloc_flutter/lib/widgets/todo_list.dart @@ -54,8 +54,7 @@ class TodoList extends StatelessWidget { }); }, onCheckboxChanged: (complete) { - TodosBlocProvider - .of(context) + TodosBlocProvider.of(context) .updateTodo .add(todo.copyWith(complete: !todo.complete)); }, diff --git a/bloc_flutter/lib/widgets/todos_bloc_provider.dart b/bloc_flutter/lib/widgets/todos_bloc_provider.dart index d5f37394..37103758 100644 --- a/bloc_flutter/lib/widgets/todos_bloc_provider.dart +++ b/bloc_flutter/lib/widgets/todos_bloc_provider.dart @@ -17,7 +17,8 @@ class TodosBlocProvider extends StatefulWidget { _TodosBlocProviderState createState() => _TodosBlocProviderState(); static TodosListBloc of(BuildContext context) { - return context.dependOnInheritedWidgetOfExactType<_TodosBlocProvider>() + return context + .dependOnInheritedWidgetOfExactType<_TodosBlocProvider>() .bloc; } } diff --git a/bloc_library/test/blocs/simple_bloc_delegate_test.dart b/bloc_library/test/blocs/simple_bloc_delegate_test.dart index cb67ba18..2b71826e 100644 --- a/bloc_library/test/blocs/simple_bloc_delegate_test.dart +++ b/bloc_library/test/blocs/simple_bloc_delegate_test.dart @@ -42,7 +42,7 @@ void main() { })); test('onEvent prints Event', overridePrint(() { - delegate.onError(null, 'event', null); + delegate.onEvent(null, 'event'); expect( printLog[0], 'event', diff --git a/blocs/lib/src/todos_interactor.dart b/blocs/lib/src/todos_interactor.dart index 25d76093..54526512 100644 --- a/blocs/lib/src/todos_interactor.dart +++ b/blocs/lib/src/todos_interactor.dart @@ -13,11 +13,9 @@ class TodosInteractor { TodosInteractor(this.repository); Stream> get todos { - return repository - .todos() - .map((entities) { - return entities.map(Todo.fromEntity).toList(); - }); + return repository.todos().map((entities) { + return entities.map(Todo.fromEntity).toList(); + }); } Stream todo(String id) { diff --git a/built_redux/lib/presentation/extra_actions_button.dart b/built_redux/lib/presentation/extra_actions_button.dart index a39b1d31..ee08fc23 100644 --- a/built_redux/lib/presentation/extra_actions_button.dart +++ b/built_redux/lib/presentation/extra_actions_button.dart @@ -22,19 +22,19 @@ class ExtraActionsButton extends StatelessWidget { key: ArchSampleKeys.extraActionsButton, onSelected: onSelected, itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - key: ArchSampleKeys.toggleAll, - value: ExtraAction.toggleAllComplete, - child: Text(allComplete - ? ArchSampleLocalizations.of(context).markAllIncomplete - : ArchSampleLocalizations.of(context).markAllComplete), - ), - PopupMenuItem( - key: ArchSampleKeys.clearCompleted, - value: ExtraAction.clearCompleted, - child: Text(ArchSampleLocalizations.of(context).clearCompleted), - ), - ], + PopupMenuItem( + key: ArchSampleKeys.toggleAll, + value: ExtraAction.toggleAllComplete, + child: Text(allComplete + ? ArchSampleLocalizations.of(context).markAllIncomplete + : ArchSampleLocalizations.of(context).markAllComplete), + ), + PopupMenuItem( + key: ArchSampleKeys.clearCompleted, + value: ExtraAction.clearCompleted, + child: Text(ArchSampleLocalizations.of(context).clearCompleted), + ), + ], ); } } diff --git a/built_redux/lib/presentation/filter_button.dart b/built_redux/lib/presentation/filter_button.dart index 4bf44c02..dc2b5e59 100644 --- a/built_redux/lib/presentation/filter_button.dart +++ b/built_redux/lib/presentation/filter_button.dart @@ -17,8 +17,7 @@ class FilterButton extends StatelessWidget { @override Widget build(BuildContext context) { final defaultStyle = Theme.of(context).textTheme.body1; - final activeStyle = Theme - .of(context) + final activeStyle = Theme.of(context) .textTheme .body1 .copyWith(color: Theme.of(context).accentColor); @@ -32,37 +31,37 @@ class FilterButton extends StatelessWidget { onSelected: onSelected, itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - value: VisibilityFilter.all, - child: Text( - ArchSampleLocalizations.of(context).showAll, - key: ArchSampleKeys.allFilter, - style: activeFilter == VisibilityFilter.all - ? activeStyle - : defaultStyle, - ), - ), - PopupMenuItem( - value: VisibilityFilter.active, - child: Text( - ArchSampleLocalizations.of(context).showActive, - key: ArchSampleKeys.activeFilter, - style: activeFilter == VisibilityFilter.active - ? activeStyle - : defaultStyle, - ), - ), - PopupMenuItem( - value: VisibilityFilter.completed, - child: Text( - ArchSampleLocalizations.of(context).showCompleted, - key: ArchSampleKeys.completedFilter, - style: activeFilter == VisibilityFilter.completed - ? activeStyle - : defaultStyle, - ), - ), - ], + PopupMenuItem( + value: VisibilityFilter.all, + child: Text( + ArchSampleLocalizations.of(context).showAll, + key: ArchSampleKeys.allFilter, + style: activeFilter == VisibilityFilter.all + ? activeStyle + : defaultStyle, + ), + ), + PopupMenuItem( + value: VisibilityFilter.active, + child: Text( + ArchSampleLocalizations.of(context).showActive, + key: ArchSampleKeys.activeFilter, + style: activeFilter == VisibilityFilter.active + ? activeStyle + : defaultStyle, + ), + ), + PopupMenuItem( + value: VisibilityFilter.completed, + child: Text( + ArchSampleLocalizations.of(context).showCompleted, + key: ArchSampleKeys.completedFilter, + style: activeFilter == VisibilityFilter.completed + ? activeStyle + : defaultStyle, + ), + ), + ], icon: Icon(Icons.filter_list), ), ); diff --git a/built_redux/lib/presentation/todo_list.dart b/built_redux/lib/presentation/todo_list.dart index 4409f616..a833ef1e 100644 --- a/built_redux/lib/presentation/todo_list.dart +++ b/built_redux/lib/presentation/todo_list.dart @@ -84,22 +84,22 @@ class TodoList extends StatelessWidget { ).then((removedTodo) { if (removedTodo != null) { Scaffold.of(context).showSnackBar( - SnackBar( - key: ArchSampleKeys.snackbar, - duration: Duration(seconds: 2), - content: Text( - ArchSampleLocalizations.of(context).todoDeleted(todo.task), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - action: SnackBarAction( - label: ArchSampleLocalizations.of(context).undo, - onPressed: () { - onUndoRemove(todo); - }, - ), - ), - ); + SnackBar( + key: ArchSampleKeys.snackbar, + duration: Duration(seconds: 2), + content: Text( + ArchSampleLocalizations.of(context).todoDeleted(todo.task), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + action: SnackBarAction( + label: ArchSampleLocalizations.of(context).undo, + onPressed: () { + onUndoRemove(todo); + }, + ), + ), + ); } }); } diff --git a/built_redux/test/app_state_test.dart b/built_redux/test/app_state_test.dart index d9399c53..a4e847e5 100644 --- a/built_redux/test/app_state_test.dart +++ b/built_redux/test/app_state_test.dart @@ -63,8 +63,7 @@ main() { todo2, todo3, ]; - final state = AppState - .fromTodos(todos) + final state = AppState.fromTodos(todos) .rebuild((b) => b.activeFilter = VisibilityFilter.active); expect(state.filteredTodosSelector, [todo1, todo2]); @@ -84,8 +83,7 @@ main() { todo2, todo3, ]; - final state = AppState - .fromTodos(todos) + final state = AppState.fromTodos(todos) .rebuild((b) => b.activeFilter = VisibilityFilter.completed); expect(state.filteredTodosSelector, [todo3]); diff --git a/firestore_redux/lib/presentation/extra_actions_button.dart b/firestore_redux/lib/presentation/extra_actions_button.dart index b4f57346..0a629ee9 100644 --- a/firestore_redux/lib/presentation/extra_actions_button.dart +++ b/firestore_redux/lib/presentation/extra_actions_button.dart @@ -21,19 +21,19 @@ class ExtraActionsButton extends StatelessWidget { return PopupMenuButton( onSelected: onSelected, itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - key: ArchSampleKeys.toggleAll, - value: ExtraAction.toggleAllComplete, - child: Text(allComplete - ? ArchSampleLocalizations.of(context).markAllIncomplete - : ArchSampleLocalizations.of(context).markAllComplete), - ), - PopupMenuItem( - key: ArchSampleKeys.clearCompleted, - value: ExtraAction.clearCompleted, - child: Text(ArchSampleLocalizations.of(context).clearCompleted), - ), - ], + PopupMenuItem( + key: ArchSampleKeys.toggleAll, + value: ExtraAction.toggleAllComplete, + child: Text(allComplete + ? ArchSampleLocalizations.of(context).markAllIncomplete + : ArchSampleLocalizations.of(context).markAllComplete), + ), + PopupMenuItem( + key: ArchSampleKeys.clearCompleted, + value: ExtraAction.clearCompleted, + child: Text(ArchSampleLocalizations.of(context).clearCompleted), + ), + ], ); } } diff --git a/firestore_redux/lib/presentation/filter_button.dart b/firestore_redux/lib/presentation/filter_button.dart index fb58c1df..bee83068 100644 --- a/firestore_redux/lib/presentation/filter_button.dart +++ b/firestore_redux/lib/presentation/filter_button.dart @@ -57,37 +57,37 @@ class _Button extends StatelessWidget { tooltip: ArchSampleLocalizations.of(context).filterTodos, onSelected: onSelected, itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - key: ArchSampleKeys.allFilter, - value: VisibilityFilter.all, - child: Text( - ArchSampleLocalizations.of(context).showAll, - style: activeFilter == VisibilityFilter.all - ? activeStyle - : defaultStyle, - ), - ), - PopupMenuItem( - key: ArchSampleKeys.activeFilter, - value: VisibilityFilter.active, - child: Text( - ArchSampleLocalizations.of(context).showActive, - style: activeFilter == VisibilityFilter.active - ? activeStyle - : defaultStyle, - ), - ), - PopupMenuItem( - key: ArchSampleKeys.completedFilter, - value: VisibilityFilter.completed, - child: Text( - ArchSampleLocalizations.of(context).showCompleted, - style: activeFilter == VisibilityFilter.completed - ? activeStyle - : defaultStyle, - ), - ), - ], + PopupMenuItem( + key: ArchSampleKeys.allFilter, + value: VisibilityFilter.all, + child: Text( + ArchSampleLocalizations.of(context).showAll, + style: activeFilter == VisibilityFilter.all + ? activeStyle + : defaultStyle, + ), + ), + PopupMenuItem( + key: ArchSampleKeys.activeFilter, + value: VisibilityFilter.active, + child: Text( + ArchSampleLocalizations.of(context).showActive, + style: activeFilter == VisibilityFilter.active + ? activeStyle + : defaultStyle, + ), + ), + PopupMenuItem( + key: ArchSampleKeys.completedFilter, + value: VisibilityFilter.completed, + child: Text( + ArchSampleLocalizations.of(context).showCompleted, + style: activeFilter == VisibilityFilter.completed + ? activeStyle + : defaultStyle, + ), + ), + ], icon: Icon(Icons.filter_list), ); } diff --git a/firestore_redux/lib/presentation/todo_list.dart b/firestore_redux/lib/presentation/todo_list.dart index a90bb540..9d9990a7 100644 --- a/firestore_redux/lib/presentation/todo_list.dart +++ b/firestore_redux/lib/presentation/todo_list.dart @@ -72,11 +72,10 @@ class TodoList extends StatelessWidget { } void _onTodoTap(BuildContext context, Todo todo) { - Navigator - .of(context) + Navigator.of(context) .push(MaterialPageRoute( - builder: (_) => TodoDetails(id: todo.id), - )) + builder: (_) => TodoDetails(id: todo.id), + )) .then((removedTodo) { if (removedTodo != null) { Scaffold.of(context).showSnackBar(SnackBar( diff --git a/frideos_library/lib/screens/add_edit_screen.dart b/frideos_library/lib/screens/add_edit_screen.dart index f3b52786..f1e8ecd1 100644 --- a/frideos_library/lib/screens/add_edit_screen.dart +++ b/frideos_library/lib/screens/add_edit_screen.dart @@ -39,71 +39,70 @@ class _AddEditScreenState extends State { return ValueBuilder( streamed: bloc.currentTodo, builder: (context, snapshot) => Scaffold( - appBar: AppBar( - title: Text( - isEditing - ? ArchSampleLocalizations.of(context).editTodo - : ArchSampleLocalizations.of(context).addTodo, - ), - ), - body: Padding( - padding: EdgeInsets.all(16.0), - child: Form( - key: formKey, - autovalidate: false, - onWillPop: () { - return Future(() => true); - }, - child: ListView( - children: [ - TextFormField( - initialValue: isEditing ? snapshot.data.task : '', - key: ArchSampleKeys.taskField, - autofocus: isEditing ? false : true, - style: Theme.of(context).textTheme.headline, - decoration: InputDecoration( - hintText: - ArchSampleLocalizations.of(context).newTodoHint, - ), - validator: (val) => val.trim().isEmpty - ? ArchSampleLocalizations.of(context).emptyTodoError - : null, - onSaved: (value) => _task = value, - ), - TextFormField( - initialValue: isEditing ? snapshot.data.note : '', - key: ArchSampleKeys.noteField, - maxLines: 10, - style: Theme.of(context).textTheme.subhead, - decoration: InputDecoration( - hintText: ArchSampleLocalizations.of(context).notesHint, - ), - onSaved: (value) => _note = value, - ) - ], + appBar: AppBar( + title: Text( + isEditing + ? ArchSampleLocalizations.of(context).editTodo + : ArchSampleLocalizations.of(context).addTodo, + ), + ), + body: Padding( + padding: EdgeInsets.all(16.0), + child: Form( + key: formKey, + autovalidate: false, + onWillPop: () { + return Future(() => true); + }, + child: ListView( + children: [ + TextFormField( + initialValue: isEditing ? snapshot.data.task : '', + key: ArchSampleKeys.taskField, + autofocus: isEditing ? false : true, + style: Theme.of(context).textTheme.headline, + decoration: InputDecoration( + hintText: ArchSampleLocalizations.of(context).newTodoHint, + ), + validator: (val) => val.trim().isEmpty + ? ArchSampleLocalizations.of(context).emptyTodoError + : null, + onSaved: (value) => _task = value, ), - ), + TextFormField( + initialValue: isEditing ? snapshot.data.note : '', + key: ArchSampleKeys.noteField, + maxLines: 10, + style: Theme.of(context).textTheme.subhead, + decoration: InputDecoration( + hintText: ArchSampleLocalizations.of(context).notesHint, + ), + onSaved: (value) => _note = value, + ) + ], ), - floatingActionButton: FloatingActionButton( - key: isEditing - ? ArchSampleKeys.saveTodoFab - : ArchSampleKeys.saveNewTodo, - tooltip: isEditing - ? ArchSampleLocalizations.of(context).saveChanges - : ArchSampleLocalizations.of(context).addTodo, - child: Icon(isEditing ? Icons.check : Icons.add), - onPressed: () { - final form = formKey.currentState; - if (form.validate()) { - form.save(); + ), + ), + floatingActionButton: FloatingActionButton( + key: isEditing + ? ArchSampleKeys.saveTodoFab + : ArchSampleKeys.saveNewTodo, + tooltip: isEditing + ? ArchSampleLocalizations.of(context).saveChanges + : ArchSampleLocalizations.of(context).addTodo, + child: Icon(isEditing ? Icons.check : Icons.add), + onPressed: () { + final form = formKey.currentState; + if (form.validate()) { + form.save(); - bloc.addEdit(isEditing, _task, _note); + bloc.addEdit(isEditing, _task, _note); - Navigator.pop(context); - } - }, - ), - ), + Navigator.pop(context); + } + }, + ), + ), ); } } diff --git a/frideos_library/lib/screens/homescreen.dart b/frideos_library/lib/screens/homescreen.dart index 57335dbd..325e1bdc 100644 --- a/frideos_library/lib/screens/homescreen.dart +++ b/frideos_library/lib/screens/homescreen.dart @@ -22,47 +22,47 @@ class HomeScreen extends StatelessWidget { return ValueBuilder( streamed: tabController, builder: (context, activeTabSnapshot) => Scaffold( - appBar: AppBar( - title: Text(FrideosLocalizations.of(context).appTitle), - actions: _buildActions( - bloc, - activeTabSnapshot, - ), - ), - body: activeTabSnapshot.data == AppTab.todos - ? TodoList() - : StatsCounter(), - floatingActionButton: FloatingActionButton( - key: ArchSampleKeys.addTodoFab, - onPressed: () { - Navigator.pushNamed(context, ArchSampleRoutes.addTodo); - }, - child: Icon(Icons.add), - tooltip: ArchSampleLocalizations.of(context).addTodo, - ), - bottomNavigationBar: BottomNavigationBar( - key: ArchSampleKeys.tabs, - currentIndex: AppTab.values.indexOf(activeTabSnapshot.data), - onTap: (index) { - tabController.value = AppTab.values[index]; - }, - items: AppTab.values.map((tab) { - return BottomNavigationBarItem( - icon: Icon( - tab == AppTab.todos ? Icons.list : Icons.show_chart, - key: tab == AppTab.stats - ? ArchSampleKeys.statsTab - : ArchSampleKeys.todoTab, - ), - title: Text( - tab == AppTab.stats - ? ArchSampleLocalizations.of(context).stats - : ArchSampleLocalizations.of(context).todos, - ), - ); - }).toList(), - ), + appBar: AppBar( + title: Text(FrideosLocalizations.of(context).appTitle), + actions: _buildActions( + bloc, + activeTabSnapshot, ), + ), + body: activeTabSnapshot.data == AppTab.todos + ? TodoList() + : StatsCounter(), + floatingActionButton: FloatingActionButton( + key: ArchSampleKeys.addTodoFab, + onPressed: () { + Navigator.pushNamed(context, ArchSampleRoutes.addTodo); + }, + child: Icon(Icons.add), + tooltip: ArchSampleLocalizations.of(context).addTodo, + ), + bottomNavigationBar: BottomNavigationBar( + key: ArchSampleKeys.tabs, + currentIndex: AppTab.values.indexOf(activeTabSnapshot.data), + onTap: (index) { + tabController.value = AppTab.values[index]; + }, + items: AppTab.values.map((tab) { + return BottomNavigationBarItem( + icon: Icon( + tab == AppTab.todos ? Icons.list : Icons.show_chart, + key: tab == AppTab.stats + ? ArchSampleKeys.statsTab + : ArchSampleKeys.todoTab, + ), + title: Text( + tab == AppTab.stats + ? ArchSampleLocalizations.of(context).stats + : ArchSampleLocalizations.of(context).todos, + ), + ); + }).toList(), + ), + ), ); } diff --git a/frideos_library/lib/widgets/stats_counter.dart b/frideos_library/lib/widgets/stats_counter.dart index ab25d97e..9c43ab56 100644 --- a/frideos_library/lib/widgets/stats_counter.dart +++ b/frideos_library/lib/widgets/stats_counter.dart @@ -28,10 +28,10 @@ class StatsCounter extends StatelessWidget { child: ValueBuilder( streamed: bloc.numComplete, builder: (context, snapshot) => Text( - '${snapshot.data ?? 0}', - key: ArchSampleKeys.statsNumCompleted, - style: Theme.of(context).textTheme.subhead, - ), + '${snapshot.data ?? 0}', + key: ArchSampleKeys.statsNumCompleted, + style: Theme.of(context).textTheme.subhead, + ), ), ), Padding( diff --git a/frideos_library/lib/widgets/todo_list.dart b/frideos_library/lib/widgets/todo_list.dart index 237105a8..b09e89c1 100644 --- a/frideos_library/lib/widgets/todo_list.dart +++ b/frideos_library/lib/widgets/todo_list.dart @@ -21,34 +21,33 @@ class TodoList extends StatelessWidget { streamed: bloc.visibleTodos, noDataChild: LoadingSpinner(key: ArchSampleKeys.todosLoading), builder: (context, snapshot) => Container( - child: ListView.builder( - key: ArchSampleKeys.todoList, - itemCount: snapshot.data.length, - itemBuilder: (BuildContext context, int index) { - final todo = snapshot.data[index]; + child: ListView.builder( + key: ArchSampleKeys.todoList, + itemCount: snapshot.data.length, + itemBuilder: (BuildContext context, int index) { + final todo = snapshot.data[index]; - return TodoItem( - todo: todo, - onDismissed: (direction) { - _removeTodo(context, todo); - }, - onTap: () { - bloc.currentTodo.value = todo; + return TodoItem( + todo: todo, + onDismissed: (direction) { + _removeTodo(context, todo); + }, + onTap: () { + bloc.currentTodo.value = todo; - Navigator.push( - context, - MaterialPageRoute(builder: (context) => DetailScreen()), - ).then((todo) { - if (todo is Todo) { - _showUndoSnackbar(context, todo); - } - }); - }, - onCheckboxChanged: (complete) => - bloc.onCheckboxChanged(todo), - ); - }), - ), + Navigator.push( + context, + MaterialPageRoute(builder: (context) => DetailScreen()), + ).then((todo) { + if (todo is Todo) { + _showUndoSnackbar(context, todo); + } + }); + }, + onCheckboxChanged: (complete) => bloc.onCheckboxChanged(todo), + ); + }), + ), ); } diff --git a/frideos_library/test_driver/main_test.dart b/frideos_library/test_driver/main_test.dart index 1980ea59..3cc3a0a3 100644 --- a/frideos_library/test_driver/main_test.dart +++ b/frideos_library/test_driver/main_test.dart @@ -17,8 +17,7 @@ void main() { }); tearDownAll(() async { - if (driver != null) - driver.close(); + if (driver != null) driver.close(); }); test('tap on the floating action button; verify counter', () async { diff --git a/inherited_widget/lib/state_container.dart b/inherited_widget/lib/state_container.dart index f328df46..6b357bf2 100644 --- a/inherited_widget/lib/state_container.dart +++ b/inherited_widget/lib/state_container.dart @@ -26,7 +26,8 @@ class StateContainer extends StatefulWidget { }); static StateContainerState of(BuildContext context) { - return context.dependOnInheritedWidgetOfExactType<_InheritedStateContainer>() + return context + .dependOnInheritedWidgetOfExactType<_InheritedStateContainer>() .data; } diff --git a/integration_tests/lib/page_objects/utils.dart b/integration_tests/lib/page_objects/utils.dart index 2ec9d2b3..042f4117 100644 --- a/integration_tests/lib/page_objects/utils.dart +++ b/integration_tests/lib/page_objects/utils.dart @@ -1,5 +1,5 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found // in the LICENSE file. import 'dart:async'; diff --git a/mvc/lib/src/models.dart b/mvc/lib/src/models.dart index 2a41aeec..594ffc45 100644 --- a/mvc/lib/src/models.dart +++ b/mvc/lib/src/models.dart @@ -3,7 +3,8 @@ // in the LICENSE file. import 'package:todos_app_core/todos_app_core.dart' show Uuid; -import 'package:todos_repository_core/todos_repository_core.dart' show TodoEntity; +import 'package:todos_repository_core/todos_repository_core.dart' + show TodoEntity; enum AppTab { todos, stats } diff --git a/mvc/lib/src/widgets/extra_actions_button.dart b/mvc/lib/src/widgets/extra_actions_button.dart index b741b232..e4487374 100644 --- a/mvc/lib/src/widgets/extra_actions_button.dart +++ b/mvc/lib/src/widgets/extra_actions_button.dart @@ -28,19 +28,19 @@ class ExtraActionsButton extends StatelessWidget { } }, itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - key: ArchSampleKeys.toggleAll, - value: ExtraAction.toggleAllComplete, - child: Text(Con.todos.any((it) => !it['complete']) - ? ArchSampleLocalizations.of(context).markAllComplete - : ArchSampleLocalizations.of(context).markAllIncomplete), - ), - PopupMenuItem( - key: ArchSampleKeys.clearCompleted, - value: ExtraAction.clearCompleted, - child: Text(ArchSampleLocalizations.of(context).clearCompleted), - ), - ], + PopupMenuItem( + key: ArchSampleKeys.toggleAll, + value: ExtraAction.toggleAllComplete, + child: Text(Con.todos.any((it) => !it['complete']) + ? ArchSampleLocalizations.of(context).markAllComplete + : ArchSampleLocalizations.of(context).markAllIncomplete), + ), + PopupMenuItem( + key: ArchSampleKeys.clearCompleted, + value: ExtraAction.clearCompleted, + child: Text(ArchSampleLocalizations.of(context).clearCompleted), + ), + ], ); } } diff --git a/mvc/test/todo_list_model_test.dart b/mvc/test/todo_list_model_test.dart index 6789f9c6..cbb74865 100644 --- a/mvc/test/todo_list_model_test.dart +++ b/mvc/test/todo_list_model_test.dart @@ -52,8 +52,7 @@ main() { Todo('c', complete: true), ]; final model = TodoListModel( - repo: MockRepository(todos), - activeFilter: VisibilityFilter.all); + repo: MockRepository(todos), activeFilter: VisibilityFilter.all); await model.loadTodos(); expect(model.filteredTodos, todos); diff --git a/mvu/lib/common/extra_actions_menu.dart b/mvu/lib/common/extra_actions_menu.dart index 2358b21e..e65dd270 100644 --- a/mvu/lib/common/extra_actions_menu.dart +++ b/mvu/lib/common/extra_actions_menu.dart @@ -5,23 +5,22 @@ enum ExtraAction { toggleAll, clearCompleted } Widget buildExtraActionsMenu( void onSelected(ExtraAction action), bool allComplete) { - return new PopupMenuButton( key: ArchSampleKeys.extraActionsButton, onSelected: onSelected, itemBuilder: (BuildContext context) => >[ - new PopupMenuItem( - key: ArchSampleKeys.toggleAll, - value: ExtraAction.toggleAll, - child: new Text(allComplete - ? ArchSampleLocalizations.of(context).markAllIncomplete - : ArchSampleLocalizations.of(context).markAllComplete), - ), - new PopupMenuItem( - key: ArchSampleKeys.clearCompleted, - value: ExtraAction.clearCompleted, - child: new Text(ArchSampleLocalizations.of(context).clearCompleted), - ), - ], + new PopupMenuItem( + key: ArchSampleKeys.toggleAll, + value: ExtraAction.toggleAll, + child: new Text(allComplete + ? ArchSampleLocalizations.of(context).markAllIncomplete + : ArchSampleLocalizations.of(context).markAllComplete), + ), + new PopupMenuItem( + key: ArchSampleKeys.clearCompleted, + value: ExtraAction.clearCompleted, + child: new Text(ArchSampleLocalizations.of(context).clearCompleted), + ), + ], ); -} \ No newline at end of file +} diff --git a/mvu/lib/common/repository_commands.dart b/mvu/lib/common/repository_commands.dart index 8be6bd0b..a01def8f 100644 --- a/mvu/lib/common/repository_commands.dart +++ b/mvu/lib/common/repository_commands.dart @@ -48,8 +48,9 @@ class TodosCmdRepository implements CmdRepository { {T onError(Exception exc)}) => Cmd.ofAsyncFunc(_repo.loadTodos, onSuccess: onSuccess, onError: onError); - Cmd saveAllCmd(List entities, {T onSuccess()}) => Cmd - .ofAsyncAction(() => _repo.saveTodos(entities), onSuccess: onSuccess); + Cmd saveAllCmd(List entities, {T onSuccess()}) => + Cmd.ofAsyncAction(() => _repo.saveTodos(entities), + onSuccess: onSuccess); Cmd removeCmd(TodoEntity todo, {T onSuccess()}) => Cmd.ofAsyncAction(() async { diff --git a/mvu/lib/edit/types.dart b/mvu/lib/edit/types.dart index a5f433e3..4b5d423d 100644 --- a/mvu/lib/edit/types.dart +++ b/mvu/lib/edit/types.dart @@ -5,7 +5,8 @@ import 'package:todos_repository_core/todos_repository_core.dart'; part 'types.g.dart'; -abstract class EditTodoModel implements Built { +abstract class EditTodoModel + implements Built { widgets.TextEditingController get task; widgets.TextEditingController get note; String get id; @@ -15,8 +16,10 @@ abstract class EditTodoModel implements Built update(HomeMessage msg, HomeModel model) { if (msg is OnNewTodoCreated) { if (model.body.tag == AppTab.todos) { - return Upd(model, effects: new Cmd.ofMsg(TodosMsg(OnTodoItemChanged(created: msg.entity)))); + return Upd(model, + effects: + new Cmd.ofMsg(TodosMsg(OnTodoItemChanged(created: msg.entity)))); } else if (model.body.tag == AppTab.stats) { - return Upd(model, effects: new Cmd.ofMsg(StatsMsg(OnNewTaskCreated(msg.entity)))); + return Upd(model, + effects: new Cmd.ofMsg(StatsMsg(OnNewTaskCreated(msg.entity)))); } } diff --git a/mvu/lib/home/types.dart b/mvu/lib/home/types.dart index c21fce04..ae02d08f 100644 --- a/mvu/lib/home/types.dart +++ b/mvu/lib/home/types.dart @@ -7,7 +7,7 @@ import 'package:todos_repository_core/todos_repository_core.dart'; part 'types.g.dart'; enum AppTab { todos, stats } -enum VisibilityFilter {all, active, completed} +enum VisibilityFilter { all, active, completed } abstract class HomeMessage {} @@ -34,7 +34,6 @@ class StatsMsg implements HomeMessage { } abstract class HomeModel implements Built { - BodyModel get body; HomeModel._(); @@ -68,4 +67,4 @@ class StatsBody implements BodyModel { @override StatsModel get model => _model; -} \ No newline at end of file +} diff --git a/mvu/lib/localization.dart b/mvu/lib/localization.dart index 9bd7a6c9..ff5b251d 100644 --- a/mvu/lib/localization.dart +++ b/mvu/lib/localization.dart @@ -13,8 +13,7 @@ class MvuLocalizations { String get appTitle => "MVU Example"; } -class MvuLocalizationsDelegate - extends LocalizationsDelegate { +class MvuLocalizationsDelegate extends LocalizationsDelegate { @override Future load(Locale locale) => new Future(() => new MvuLocalizations()); @@ -25,4 +24,4 @@ class MvuLocalizationsDelegate @override bool isSupported(Locale locale) => locale.languageCode.toLowerCase().contains("en"); -} \ No newline at end of file +} diff --git a/mvu/lib/main.dart b/mvu/lib/main.dart index 6b87835f..5e4adba5 100644 --- a/mvu/lib/main.dart +++ b/mvu/lib/main.dart @@ -29,8 +29,7 @@ class MyApp extends StatelessWidget { }, ), routes: { - ArchSampleRoutes.addTodo: (_) => - edit.createProgram(repoCmds).build() + ArchSampleRoutes.addTodo: (_) => edit.createProgram(repoCmds).build() }, ); } diff --git a/mvu/lib/stats/state.dart b/mvu/lib/stats/state.dart index 2ce1578c..200c0629 100644 --- a/mvu/lib/stats/state.dart +++ b/mvu/lib/stats/state.dart @@ -31,7 +31,8 @@ Upd update( return new Upd(updatedModel, effects: _saveItems(repo, updatedModel)); } if (msg is OnNewTaskCreated) { - var updatedModel = model.rebuild((b) => b.items.add(TodoModel.fromEntity(msg.entity))); + var updatedModel = + model.rebuild((b) => b.items.add(TodoModel.fromEntity(msg.entity))); updatedModel = _calculateStats(updatedModel); return Upd(updatedModel); } diff --git a/mvu/lib/stats/stats.dart b/mvu/lib/stats/stats.dart index d3844aec..9d1a544e 100644 --- a/mvu/lib/stats/stats.dart +++ b/mvu/lib/stats/stats.dart @@ -11,6 +11,5 @@ import 'package:dartea/dartea.dart'; import 'package:mvu/stats/types.dart'; import 'package:mvu/common/extra_actions_menu.dart' as menu; - part 'state.dart'; -part 'view.dart'; \ No newline at end of file +part 'view.dart'; diff --git a/mvu/lib/stats/view.dart b/mvu/lib/stats/view.dart index dceb42d6..a019defd 100644 --- a/mvu/lib/stats/view.dart +++ b/mvu/lib/stats/view.dart @@ -62,4 +62,4 @@ StatsMessage _toMessage(menu.ExtraAction action) { default: return new CleareCompletedMessage(); } -} \ No newline at end of file +} diff --git a/mvu/lib/todos/todos.dart b/mvu/lib/todos/todos.dart index 724ac384..903fc6b2 100644 --- a/mvu/lib/todos/todos.dart +++ b/mvu/lib/todos/todos.dart @@ -14,4 +14,4 @@ import 'package:mvu/common/extra_actions_menu.dart' as menu; import 'package:mvu/common/snackbar.dart' as snackbar; part 'state.dart'; -part 'view.dart'; \ No newline at end of file +part 'view.dart'; diff --git a/mvu/lib/todos/types.dart b/mvu/lib/todos/types.dart index 4098a613..0748336c 100644 --- a/mvu/lib/todos/types.dart +++ b/mvu/lib/todos/types.dart @@ -7,8 +7,6 @@ import 'package:todos_repository_core/todos_repository_core.dart'; part 'types.g.dart'; - - abstract class TodosModel implements Built { bool get isLoading; BuiltList get items; diff --git a/mvu/lib/todos/view.dart b/mvu/lib/todos/view.dart index b795392c..8a0d98f1 100644 --- a/mvu/lib/todos/view.dart +++ b/mvu/lib/todos/view.dart @@ -19,8 +19,7 @@ Widget buildExtraActionsMenu( Widget buildFilterMenu( BuildContext context, Dispatch dispatch, TodosModel model) { final defaultStyle = Theme.of(context).textTheme.body1; - final activeStyle = Theme - .of(context) + final activeStyle = Theme.of(context) .textTheme .body1 .copyWith(color: Theme.of(context).accentColor); @@ -30,37 +29,36 @@ Widget buildFilterMenu( tooltip: ArchSampleLocalizations.of(context).filterTodos, onSelected: (val) => dispatch(new FilterChanged(val)), itemBuilder: (BuildContext context) => >[ - new PopupMenuItem( - key: ArchSampleKeys.allFilter, - value: VisibilityFilter.all, - child: new Text( - ArchSampleLocalizations.of(context).showAll, - style: model.filter == VisibilityFilter.all - ? activeStyle - : defaultStyle, - ), - ), - new PopupMenuItem( - key: ArchSampleKeys.activeFilter, - value: VisibilityFilter.active, - child: new Text( - ArchSampleLocalizations.of(context).showActive, - style: model.filter == VisibilityFilter.active - ? activeStyle - : defaultStyle, - ), - ), - new PopupMenuItem( - key: ArchSampleKeys.completedFilter, - value: VisibilityFilter.completed, - child: new Text( - ArchSampleLocalizations.of(context).showCompleted, - style: model.filter == VisibilityFilter.completed - ? activeStyle - : defaultStyle, - ), - ), - ], + new PopupMenuItem( + key: ArchSampleKeys.allFilter, + value: VisibilityFilter.all, + child: new Text( + ArchSampleLocalizations.of(context).showAll, + style: + model.filter == VisibilityFilter.all ? activeStyle : defaultStyle, + ), + ), + new PopupMenuItem( + key: ArchSampleKeys.activeFilter, + value: VisibilityFilter.active, + child: new Text( + ArchSampleLocalizations.of(context).showActive, + style: model.filter == VisibilityFilter.active + ? activeStyle + : defaultStyle, + ), + ), + new PopupMenuItem( + key: ArchSampleKeys.completedFilter, + value: VisibilityFilter.completed, + child: new Text( + ArchSampleLocalizations.of(context).showCompleted, + style: model.filter == VisibilityFilter.completed + ? activeStyle + : defaultStyle, + ), + ), + ], icon: new Icon(Icons.filter_list), ); } diff --git a/mvu/test/details_screen_test.dart b/mvu/test/details_screen_test.dart index 80e364bd..05ff9bc4 100644 --- a/mvu/test/details_screen_test.dart +++ b/mvu/test/details_screen_test.dart @@ -54,7 +54,8 @@ void main() { _cmdRepo.createdEffects, orderedEquals([ predicate((x) => - x is RemoveTodoEffect && x.entity == updatedModel.todo.toEntity()) + x is RemoveTodoEffect && + x.entity == updatedModel.todo.toEntity()) ])); expect(_cmdRunner.producedMessages, isEmpty); }); diff --git a/redux/lib/presentation/extra_actions_button.dart b/redux/lib/presentation/extra_actions_button.dart index 8f302acd..5170a554 100644 --- a/redux/lib/presentation/extra_actions_button.dart +++ b/redux/lib/presentation/extra_actions_button.dart @@ -21,19 +21,19 @@ class ExtraActionsButton extends StatelessWidget { return PopupMenuButton( onSelected: onSelected, itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - key: ArchSampleKeys.toggleAll, - value: ExtraAction.toggleAllComplete, - child: Text(allComplete - ? ArchSampleLocalizations.of(context).markAllIncomplete - : ArchSampleLocalizations.of(context).markAllComplete), - ), - PopupMenuItem( - key: ArchSampleKeys.clearCompleted, - value: ExtraAction.clearCompleted, - child: Text(ArchSampleLocalizations.of(context).clearCompleted), - ), - ], + PopupMenuItem( + key: ArchSampleKeys.toggleAll, + value: ExtraAction.toggleAllComplete, + child: Text(allComplete + ? ArchSampleLocalizations.of(context).markAllIncomplete + : ArchSampleLocalizations.of(context).markAllComplete), + ), + PopupMenuItem( + key: ArchSampleKeys.clearCompleted, + value: ExtraAction.clearCompleted, + child: Text(ArchSampleLocalizations.of(context).clearCompleted), + ), + ], ); } } diff --git a/redux/lib/presentation/filter_button.dart b/redux/lib/presentation/filter_button.dart index fd39d750..03345913 100644 --- a/redux/lib/presentation/filter_button.dart +++ b/redux/lib/presentation/filter_button.dart @@ -57,37 +57,37 @@ class _Button extends StatelessWidget { tooltip: ArchSampleLocalizations.of(context).filterTodos, onSelected: onSelected, itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - key: ArchSampleKeys.allFilter, - value: VisibilityFilter.all, - child: Text( - ArchSampleLocalizations.of(context).showAll, - style: activeFilter == VisibilityFilter.all - ? activeStyle - : defaultStyle, - ), - ), - PopupMenuItem( - key: ArchSampleKeys.activeFilter, - value: VisibilityFilter.active, - child: Text( - ArchSampleLocalizations.of(context).showActive, - style: activeFilter == VisibilityFilter.active - ? activeStyle - : defaultStyle, - ), - ), - PopupMenuItem( - key: ArchSampleKeys.completedFilter, - value: VisibilityFilter.completed, - child: Text( - ArchSampleLocalizations.of(context).showCompleted, - style: activeFilter == VisibilityFilter.completed - ? activeStyle - : defaultStyle, - ), - ), - ], + PopupMenuItem( + key: ArchSampleKeys.allFilter, + value: VisibilityFilter.all, + child: Text( + ArchSampleLocalizations.of(context).showAll, + style: activeFilter == VisibilityFilter.all + ? activeStyle + : defaultStyle, + ), + ), + PopupMenuItem( + key: ArchSampleKeys.activeFilter, + value: VisibilityFilter.active, + child: Text( + ArchSampleLocalizations.of(context).showActive, + style: activeFilter == VisibilityFilter.active + ? activeStyle + : defaultStyle, + ), + ), + PopupMenuItem( + key: ArchSampleKeys.completedFilter, + value: VisibilityFilter.completed, + child: Text( + ArchSampleLocalizations.of(context).showCompleted, + style: activeFilter == VisibilityFilter.completed + ? activeStyle + : defaultStyle, + ), + ), + ], icon: Icon(Icons.filter_list), ); } diff --git a/redux/lib/presentation/todo_list.dart b/redux/lib/presentation/todo_list.dart index 1d1dcfd4..75b76fb1 100644 --- a/redux/lib/presentation/todo_list.dart +++ b/redux/lib/presentation/todo_list.dart @@ -72,11 +72,10 @@ class TodoList extends StatelessWidget { } void _onTodoTap(BuildContext context, Todo todo) { - Navigator - .of(context) + Navigator.of(context) .push(MaterialPageRoute( - builder: (_) => TodoDetails(id: todo.id), - )) + builder: (_) => TodoDetails(id: todo.id), + )) .then((removedTodo) { if (removedTodo != null) { Scaffold.of(context).showSnackBar(SnackBar( diff --git a/scoped_model/lib/todo_list_model.dart b/scoped_model/lib/todo_list_model.dart index 2d973138..de001144 100644 --- a/scoped_model/lib/todo_list_model.dart +++ b/scoped_model/lib/todo_list_model.dart @@ -63,16 +63,16 @@ class TodoListModel extends Model { } List get filteredTodos => _todos.where((todo) { - switch (activeFilter) { - case VisibilityFilter.active: - return !todo.complete; - case VisibilityFilter.completed: - return todo.complete; - case VisibilityFilter.all: - default: - return true; - } - }).toList(); + switch (activeFilter) { + case VisibilityFilter.active: + return !todo.complete; + case VisibilityFilter.completed: + return todo.complete; + case VisibilityFilter.all: + default: + return true; + } + }).toList(); void clearCompleted() { _todos.removeWhere((todo) => todo.complete); diff --git a/scoped_model/lib/widgets/extra_actions_button.dart b/scoped_model/lib/widgets/extra_actions_button.dart index 243588b9..4a024228 100644 --- a/scoped_model/lib/widgets/extra_actions_button.dart +++ b/scoped_model/lib/widgets/extra_actions_button.dart @@ -27,19 +27,19 @@ class ExtraActionsButton extends StatelessWidget { } }, itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - key: ArchSampleKeys.toggleAll, - value: ExtraAction.toggleAllComplete, - child: Text(model.todos.any((it) => !it.complete) - ? ArchSampleLocalizations.of(context).markAllIncomplete - : ArchSampleLocalizations.of(context).markAllComplete), - ), - PopupMenuItem( - key: ArchSampleKeys.clearCompleted, - value: ExtraAction.clearCompleted, - child: Text(ArchSampleLocalizations.of(context).clearCompleted), - ), - ], + PopupMenuItem( + key: ArchSampleKeys.toggleAll, + value: ExtraAction.toggleAllComplete, + child: Text(model.todos.any((it) => !it.complete) + ? ArchSampleLocalizations.of(context).markAllIncomplete + : ArchSampleLocalizations.of(context).markAllComplete), + ), + PopupMenuItem( + key: ArchSampleKeys.clearCompleted, + value: ExtraAction.clearCompleted, + child: Text(ArchSampleLocalizations.of(context).clearCompleted), + ), + ], ); }); } diff --git a/scoped_model/lib/widgets/filter_button.dart b/scoped_model/lib/widgets/filter_button.dart index 24c1dd80..690ee73b 100644 --- a/scoped_model/lib/widgets/filter_button.dart +++ b/scoped_model/lib/widgets/filter_button.dart @@ -35,8 +35,7 @@ class FilterButton extends StatelessWidget { List> _items( BuildContext context, TodoListModel model) { - final activeStyle = Theme - .of(context) + final activeStyle = Theme.of(context) .textTheme .body1 .copyWith(color: Theme.of(context).accentColor); diff --git a/scoped_model/lib/widgets/todo_list.dart b/scoped_model/lib/widgets/todo_list.dart index b3087bfa..2e07afea 100644 --- a/scoped_model/lib/widgets/todo_list.dart +++ b/scoped_model/lib/widgets/todo_list.dart @@ -78,22 +78,22 @@ class TodoList extends StatelessWidget { void _showUndoSnackbar(BuildContext context, Todo todo) { Scaffold.of(context).showSnackBar( - SnackBar( - key: ArchSampleKeys.snackbar, - duration: Duration(seconds: 2), - content: Text( - ArchSampleLocalizations.of(context).todoDeleted(todo.task), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - action: SnackBarAction( - key: ArchSampleKeys.snackbarAction(todo.id), - label: ArchSampleLocalizations.of(context).undo, - onPressed: () { - TodoListModel.of(context).addTodo(todo); - }, - ), - ), - ); + SnackBar( + key: ArchSampleKeys.snackbar, + duration: Duration(seconds: 2), + content: Text( + ArchSampleLocalizations.of(context).todoDeleted(todo.task), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + action: SnackBarAction( + key: ArchSampleKeys.snackbarAction(todo.id), + label: ArchSampleLocalizations.of(context).undo, + onPressed: () { + TodoListModel.of(context).addTodo(todo); + }, + ), + ), + ); } } diff --git a/simple_bloc_flutter/lib/widgets/stats_counter.dart b/simple_bloc_flutter/lib/widgets/stats_counter.dart index 18b1a65c..2d6cb6f2 100644 --- a/simple_bloc_flutter/lib/widgets/stats_counter.dart +++ b/simple_bloc_flutter/lib/widgets/stats_counter.dart @@ -47,10 +47,10 @@ class StatsCounterState extends State { child: StreamBuilder( stream: bloc.numComplete, builder: (context, snapshot) => Text( - '${snapshot.data ?? 0}', - key: ArchSampleKeys.statsNumCompleted, - style: Theme.of(context).textTheme.subhead, - ), + '${snapshot.data ?? 0}', + key: ArchSampleKeys.statsNumCompleted, + style: Theme.of(context).textTheme.subhead, + ), ), ), Padding( diff --git a/simple_bloc_flutter/lib/widgets/todo_list.dart b/simple_bloc_flutter/lib/widgets/todo_list.dart index 182cca20..c6665825 100644 --- a/simple_bloc_flutter/lib/widgets/todo_list.dart +++ b/simple_bloc_flutter/lib/widgets/todo_list.dart @@ -54,8 +54,7 @@ class TodoList extends StatelessWidget { }); }, onCheckboxChanged: (complete) { - TodosBlocProvider - .of(context) + TodosBlocProvider.of(context) .updateTodo(todo.copyWith(complete: !todo.complete)); }, ); diff --git a/simple_bloc_flutter/lib/widgets/todos_bloc_provider.dart b/simple_bloc_flutter/lib/widgets/todos_bloc_provider.dart index c81fc007..c0319bfa 100644 --- a/simple_bloc_flutter/lib/widgets/todos_bloc_provider.dart +++ b/simple_bloc_flutter/lib/widgets/todos_bloc_provider.dart @@ -17,7 +17,8 @@ class TodosBlocProvider extends StatefulWidget { _TodosBlocProviderState createState() => _TodosBlocProviderState(); static TodosListBloc of(BuildContext context) { - return context.dependOnInheritedWidgetOfExactType<_TodosBlocProvider>() + return context + .dependOnInheritedWidgetOfExactType<_TodosBlocProvider>() .bloc; } } diff --git a/todos_app_core/lib/src/routes.dart b/todos_app_core/lib/src/routes.dart index d7264816..ecd0ea33 100644 --- a/todos_app_core/lib/src/routes.dart +++ b/todos_app_core/lib/src/routes.dart @@ -1,5 +1,5 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found // in the LICENSE file. class ArchSampleRoutes { diff --git a/todos_app_core/lib/todos_app_core.dart b/todos_app_core/lib/todos_app_core.dart index e5bfbd00..b7e01e75 100644 --- a/todos_app_core/lib/todos_app_core.dart +++ b/todos_app_core/lib/todos_app_core.dart @@ -1,4 +1,3 @@ - library todos_app_base; export 'src/keys.dart'; diff --git a/vanilla/lib/widgets/extra_actions_button.dart b/vanilla/lib/widgets/extra_actions_button.dart index 18ea7a29..bc2aff03 100644 --- a/vanilla/lib/widgets/extra_actions_button.dart +++ b/vanilla/lib/widgets/extra_actions_button.dart @@ -24,19 +24,19 @@ class ExtraActionsButton extends StatelessWidget { key: ArchSampleKeys.extraActionsButton, onSelected: onSelected, itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - key: ArchSampleKeys.toggleAll, - value: ExtraAction.toggleAllComplete, - child: Text(allComplete - ? ArchSampleLocalizations.of(context).markAllIncomplete - : ArchSampleLocalizations.of(context).markAllComplete), - ), - PopupMenuItem( - key: ArchSampleKeys.clearCompleted, - value: ExtraAction.clearCompleted, - child: Text(ArchSampleLocalizations.of(context).clearCompleted), - ), - ], + PopupMenuItem( + key: ArchSampleKeys.toggleAll, + value: ExtraAction.toggleAllComplete, + child: Text(allComplete + ? ArchSampleLocalizations.of(context).markAllIncomplete + : ArchSampleLocalizations.of(context).markAllComplete), + ), + PopupMenuItem( + key: ArchSampleKeys.clearCompleted, + value: ExtraAction.clearCompleted, + child: Text(ArchSampleLocalizations.of(context).clearCompleted), + ), + ], ); } } diff --git a/vanilla/lib/widgets/filter_button.dart b/vanilla/lib/widgets/filter_button.dart index 40ef2dc4..e44fadb4 100644 --- a/vanilla/lib/widgets/filter_button.dart +++ b/vanilla/lib/widgets/filter_button.dart @@ -57,37 +57,37 @@ class _Button extends StatelessWidget { tooltip: ArchSampleLocalizations.of(context).filterTodos, onSelected: onSelected, itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - key: ArchSampleKeys.allFilter, - value: VisibilityFilter.all, - child: Text( - ArchSampleLocalizations.of(context).showAll, - style: activeFilter == VisibilityFilter.all - ? activeStyle - : defaultStyle, - ), - ), - PopupMenuItem( - key: ArchSampleKeys.activeFilter, - value: VisibilityFilter.active, - child: Text( - ArchSampleLocalizations.of(context).showActive, - style: activeFilter == VisibilityFilter.active - ? activeStyle - : defaultStyle, - ), - ), - PopupMenuItem( - key: ArchSampleKeys.completedFilter, - value: VisibilityFilter.completed, - child: Text( - ArchSampleLocalizations.of(context).showCompleted, - style: activeFilter == VisibilityFilter.completed - ? activeStyle - : defaultStyle, - ), - ), - ], + PopupMenuItem( + key: ArchSampleKeys.allFilter, + value: VisibilityFilter.all, + child: Text( + ArchSampleLocalizations.of(context).showAll, + style: activeFilter == VisibilityFilter.all + ? activeStyle + : defaultStyle, + ), + ), + PopupMenuItem( + key: ArchSampleKeys.activeFilter, + value: VisibilityFilter.active, + child: Text( + ArchSampleLocalizations.of(context).showActive, + style: activeFilter == VisibilityFilter.active + ? activeStyle + : defaultStyle, + ), + ), + PopupMenuItem( + key: ArchSampleKeys.completedFilter, + value: VisibilityFilter.completed, + child: Text( + ArchSampleLocalizations.of(context).showCompleted, + style: activeFilter == VisibilityFilter.completed + ? activeStyle + : defaultStyle, + ), + ), + ], icon: Icon(Icons.filter_list), ); } diff --git a/vanilla/lib/widgets/todo_list.dart b/vanilla/lib/widgets/todo_list.dart index cbc79bfa..2483f7fd 100644 --- a/vanilla/lib/widgets/todo_list.dart +++ b/vanilla/lib/widgets/todo_list.dart @@ -71,21 +71,21 @@ class TodoList extends StatelessWidget { removeTodo(todo); Scaffold.of(context).showSnackBar( - SnackBar( - key: ArchSampleKeys.snackbar, - duration: Duration(seconds: 2), - content: Text( - ArchSampleLocalizations.of(context).todoDeleted(todo.task), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - action: SnackBarAction( - label: ArchSampleLocalizations.of(context).undo, - onPressed: () { - addTodo(todo); - }, - ), - ), - ); + SnackBar( + key: ArchSampleKeys.snackbar, + duration: Duration(seconds: 2), + content: Text( + ArchSampleLocalizations.of(context).todoDeleted(todo.task), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + action: SnackBarAction( + label: ArchSampleLocalizations.of(context).undo, + onPressed: () { + addTodo(todo); + }, + ), + ), + ); } } From 937fbe227f8f81d6940ff56d836a5b135d99e018 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Tue, 7 Jan 2020 18:10:22 +0100 Subject: [PATCH 05/77] Apply pedantic analysis options to all examples and run it on CI --- analysis_options.yaml | 61 +++++++++-- bloc_flutter/lib/localization.dart | 4 +- bloc_flutter/lib/widgets/stats_counter.dart | 2 +- bloc_flutter/test_driver/todo_app_test.dart | 6 +- bloc_library/lib/blocs/stats/stats_bloc.dart | 4 +- bloc_library/lib/blocs/todos/todos_bloc.dart | 20 ++-- bloc_library/lib/localization.dart | 4 +- bloc_library/lib/main.dart | 2 +- bloc_library/lib/models/todo.dart | 4 +- bloc_library/lib/screens/add_edit_screen.dart | 2 +- bloc_library/lib/widgets/extra_actions.dart | 2 +- bloc_library/lib/widgets/filter_button.dart | 3 +- bloc_library/lib/widgets/stats.dart | 4 +- bloc_library/test/all_tests.dart | 100 +++++++++--------- .../test/blocs/simple_bloc_delegate_test.dart | 2 +- bloc_library/test/blocs/stats_bloc_test.dart | 4 +- bloc_library/test/blocs/todos_bloc_test.dart | 56 +++++----- bloc_library/test/localization_test.dart | 2 +- .../widgets/delete_todo_snack_bar_test.dart | 4 +- .../test/widgets/filter_button_test.dart | 10 +- .../test/widgets/tab_selector_test.dart | 7 +- bloc_library/test_driver/todo_app_test.dart | 4 +- blocs/test/all_tests.dart | 2 +- blocs/test/stats_bloc_test.dart | 8 +- blocs/test/todos_interactor_test.dart | 58 +++++----- built_redux/lib/actions/actions.g.dart | 81 +++++++------- built_redux/lib/containers/add_todo.dart | 2 +- built_redux/lib/containers/edit_todo.dart | 2 +- .../lib/containers/filter_selector.dart | 5 +- .../lib/containers/filter_selector.g.dart | 25 ++--- built_redux/lib/containers/stats.dart | 2 +- built_redux/lib/containers/stats.g.dart | 26 ++--- built_redux/lib/containers/todo_details.dart | 2 +- built_redux/lib/containers/typedefs.dart | 2 +- built_redux/lib/localization.dart | 4 +- built_redux/lib/main.dart | 2 - built_redux/lib/models/app_state.dart | 27 ++--- built_redux/lib/models/app_state.g.dart | 51 ++++----- built_redux/lib/models/app_tab.g.dart | 14 +-- built_redux/lib/models/extra_actions.g.dart | 15 ++- built_redux/lib/models/serializers.dart | 2 +- built_redux/lib/models/serializers.g.dart | 7 +- built_redux/lib/models/todo.dart | 2 +- built_redux/lib/models/todo.g.dart | 33 +++--- .../lib/models/visibility_filter.g.dart | 16 +-- .../lib/presentation/add_edit_screen.dart | 2 +- .../lib/presentation/stats_counter.dart | 2 +- built_redux/test/all_tests.dart | 14 +-- built_redux/test/app_state_test.dart | 2 +- built_redux/test/file_storage_test.dart | 4 +- built_redux/test/middleware_test.dart | 16 +-- built_redux/test/reducer_test.dart | 22 ++-- built_redux/test/todos_repository_test.dart | 14 +-- built_redux/test_driver/todo_app_test.dart | 6 +- .../firebase_flutter_repository_test.dart | 5 +- .../firebase_flutter_repository_test.dart | 4 +- firestore_redux/lib/localization.dart | 4 +- .../middleware/store_todos_middleware.dart | 6 +- firestore_redux/lib/models/todo.dart | 4 +- .../lib/presentation/add_edit_screen.dart | 2 +- .../lib/presentation/stats_counter.dart | 2 +- .../lib/presentation/typedefs.dart | 6 +- firestore_redux/test/all_tests.dart | 2 +- firestore_redux/test/middleware_test.dart | 24 ++--- firestore_redux/test/reducer_test.dart | 2 +- firestore_redux/test/selectors_test.dart | 10 +- .../test_driver/todo_app_test.dart | 6 +- frideos_library/lib/app_state.dart | 6 +- frideos_library/lib/blocs/todos_bloc.dart | 9 +- frideos_library/lib/localization.dart | 4 +- frideos_library/lib/models/todo.dart | 4 +- .../lib/screens/add_edit_screen.dart | 3 +- .../lib/screens/detail_screen.dart | 3 +- frideos_library/lib/screens/homescreen.dart | 2 +- .../lib/widgets/stats_counter.dart | 2 +- frideos_library/test/stats_bloc_test.dart | 10 +- frideos_library/test/todos_bloc_test.dart | 4 +- frideos_library/test_driver/main_test.dart | 4 +- .../test_driver/todo_app_test.dart | 6 +- inherited_widget/lib/localization.dart | 4 +- inherited_widget/lib/models.dart | 20 ++-- inherited_widget/lib/screens/home_screen.dart | 2 +- inherited_widget/lib/state_container.dart | 4 +- .../lib/widgets/stats_counter.dart | 2 +- inherited_widget/test/app_state_test.dart | 2 +- .../test_driver/todo_app_test.dart | 6 +- integration_tests/lib/integration_tests.dart | 8 +- .../elements/todo_item_element.dart | 2 +- .../elements/todo_list_element.dart | 4 +- .../screens/details_test_screen.dart | 2 +- .../screens/home_test_screen.dart | 19 ++-- mobx/analysis_options.yaml | 5 - mobx/lib/localization.dart | 4 +- mobx/pubspec.yaml | 5 +- mobx/test/home_screen_test.dart | 2 +- mobx/test_driver/todo_app_test.dart | 6 +- mvc/lib/src/App.dart | 1 + mvc/lib/src/Controller.dart | 3 +- mvc/lib/src/models.dart | 2 +- mvc/lib/src/screens/add_edit_screen.dart | 2 +- mvc/lib/src/screens/home_screen.dart | 2 +- mvc/lib/src/todo_list_model.dart | 24 +++-- mvc/lib/src/widgets/stats_counter.dart | 2 +- mvc/test/todo_list_model_test.dart | 4 +- mvc/test_driver/todo_app_test.dart | 6 +- mvi_base/test/all_tests.dart | 2 +- mvi_base/test/mvi_todo_test.dart | 6 +- mvi_base/test/mvi_todos_list_test.dart | 32 +++--- mvi_base/test/todos_interactor_test.dart | 58 +++++----- mvi_flutter/lib/localization.dart | 4 +- mvi_flutter/lib/widgets/stats_counter.dart | 2 +- mvi_flutter/test_driver/todo_app_test.dart | 6 +- mvu/lib/common/extra_actions_menu.dart | 12 +-- mvu/lib/common/repository_commands.dart | 68 +++++++----- mvu/lib/common/router.dart | 9 +- mvu/lib/common/snackbar.dart | 14 +-- mvu/lib/common/todo_model.dart | 8 +- mvu/lib/common/todo_model.g.dart | 6 +- mvu/lib/details/state.dart | 10 +- mvu/lib/details/types.dart | 3 +- mvu/lib/details/types.g.dart | 6 +- mvu/lib/details/view.dart | 44 ++++---- mvu/lib/edit/state.dart | 14 +-- mvu/lib/edit/view.dart | 28 ++--- mvu/lib/home/home.dart | 5 +- mvu/lib/home/state.dart | 37 ++++--- mvu/lib/home/types.dart | 2 +- mvu/lib/home/types.g.dart | 6 +- mvu/lib/home/view.dart | 40 +++---- mvu/lib/localization.dart | 6 +- mvu/lib/main.dart | 10 +- mvu/lib/stats/state.dart | 14 +-- mvu/lib/stats/types.dart | 3 +- mvu/lib/stats/types.g.dart | 6 +- mvu/lib/stats/view.dart | 38 +++---- mvu/lib/todos/state.dart | 26 ++--- mvu/lib/todos/types.dart | 3 +- mvu/lib/todos/types.g.dart | 6 +- mvu/lib/todos/view.dart | 46 ++++---- mvu/test/all_tests.dart | 26 ++--- mvu/test/cmd_runner.dart | 2 +- mvu/test/data.dart | 27 +++-- mvu/test/home_screen_test.dart | 9 +- mvu/test/repository_commads_test.dart | 5 + mvu/test/stats_screen_test.dart | 6 +- mvu/test/todos_screen_test.dart | 53 +++++----- mvu/test_driver/todo_app_test.dart | 6 +- redux/lib/localization.dart | 4 +- .../middleware/store_todos_middleware.dart | 2 +- redux/lib/models/todo.dart | 4 +- redux/lib/presentation/add_edit_screen.dart | 2 +- redux/lib/presentation/home_screen.dart | 4 +- redux/lib/presentation/stats_counter.dart | 2 +- redux/lib/presentation/typedefs.dart | 6 +- redux/test/all_tests.dart | 2 +- redux/test/middleware_test.dart | 12 +-- redux/test/reducer_test.dart | 22 ++-- redux/test/selectors_test.dart | 10 +- redux/test_driver/todo_app_test.dart | 6 +- scoped_model/lib/localization.dart | 4 +- scoped_model/lib/main.dart | 2 +- scoped_model/lib/models.dart | 2 +- scoped_model/lib/screens/home_screen.dart | 2 +- scoped_model/lib/todo_list_model.dart | 2 +- scoped_model/lib/widgets/stats_counter.dart | 2 +- scoped_model/lib/widgets/typedefs.dart | 6 +- scoped_model/test/app_state_test.dart | 4 +- scoped_model/test_driver/todo_app_test.dart | 6 +- scripts/runTests.sh | 7 +- simple_bloc_flutter/lib/localization.dart | 4 +- .../lib/widgets/stats_counter.dart | 2 +- .../test_driver/todo_app_test.dart | 6 +- simple_blocs/test/stats_bloc_test.dart | 8 +- simple_blocs/test/todos_interactor_test.dart | 58 +++++----- todos_app_core/lib/src/keys.dart | 56 +++++----- todos_app_core/lib/src/localization.dart | 2 +- .../lib/src/localizations/messages_all.dart | 2 +- .../lib/src/localizations/messages_en.dart | 74 ++++++------- todos_app_core/lib/src/optional.dart | 19 ++-- todos_app_core/lib/src/routes.dart | 4 +- todos_app_core/lib/src/uuid.dart | 2 +- .../lib/src/todo_entity.dart | 16 +-- .../lib/src/reactive_repository.dart | 10 +- .../lib/src/repository.dart | 2 +- todos_repository_simple/pubspec.yaml | 2 +- todos_repository_simple/test/all_tests.dart | 10 +- .../test/file_storage_test.dart | 4 +- .../test/reactive_repository_test.dart | 14 +-- .../test/repository_test.dart | 8 +- vanilla/lib/localization.dart | 4 +- vanilla/lib/main.dart | 2 +- vanilla/lib/models.dart | 4 +- vanilla/lib/screens/home_screen.dart | 4 +- vanilla/lib/widgets/filter_button.dart | 2 +- vanilla/lib/widgets/stats_counter.dart | 2 +- vanilla/lib/widgets/typedefs.dart | 6 +- vanilla/test/app_state_test.dart | 2 +- vanilla/test_driver/todo_app_test.dart | 6 +- 198 files changed, 1142 insertions(+), 1074 deletions(-) delete mode 100644 mobx/analysis_options.yaml diff --git a/analysis_options.yaml b/analysis_options.yaml index b1683884..962f9342 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,15 +1,56 @@ -analyzer: -# exclude: -# - path/to/excluded/files/** +# Pedantic 1.9.0 +# +# Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. +# +# Google internally enforced rules. See README.md for more information, +# including a list of lints that are intentionally _not_ enforced. -# Lint rules and documentation, see http://dart-lang.github.io/linter/lints linter: rules: - - cancel_subscriptions - - close_sinks - - hash_and_equals - - iterable_contains_unrelated_type - - list_remove_unrelated_type - - test_types_in_equals + - always_declare_return_types + - always_require_non_null_named_parameters + - annotate_overrides + - avoid_empty_else + - avoid_init_to_null + - avoid_null_checks_in_equality_operators + - avoid_relative_lib_imports + - avoid_return_types_on_setters + - avoid_shadowing_type_parameters + - avoid_types_as_parameter_names + - camel_case_extensions + - curly_braces_in_flow_control_structures + - empty_catches + - empty_constructor_bodies + - library_names + - library_prefixes + - no_duplicate_case_values + - null_closures + - omit_local_variable_types + - prefer_adjacent_string_concatenation + - prefer_collection_literals + - prefer_conditional_assignment + - prefer_contains + - prefer_equal_for_default_values + - prefer_final_fields + - prefer_for_elements_to_map_fromIterable + - prefer_generic_function_type_aliases + - prefer_if_null_operators + - prefer_is_empty + - prefer_is_not_empty + - prefer_iterable_whereType + - prefer_single_quotes + - prefer_spread_collections + - recursive_getters + - slash_for_doc_comments + - type_init_formals + - unawaited_futures + - unnecessary_const + - unnecessary_new + - unnecessary_null_in_if_null_operators + - unnecessary_this - unrelated_type_equality_checks + - use_function_type_syntax_for_parameters + - use_rethrow_when_possible - valid_regexps diff --git a/bloc_flutter/lib/localization.dart b/bloc_flutter/lib/localization.dart index 8fb4c0b0..78698325 100644 --- a/bloc_flutter/lib/localization.dart +++ b/bloc_flutter/lib/localization.dart @@ -11,7 +11,7 @@ class BlocLocalizations { return Localizations.of(context, BlocLocalizations); } - String get appTitle => "Bloc Example"; + String get appTitle => 'Bloc Example'; } class InheritedWidgetLocalizationsDelegate @@ -25,5 +25,5 @@ class InheritedWidgetLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/bloc_flutter/lib/widgets/stats_counter.dart b/bloc_flutter/lib/widgets/stats_counter.dart index d75c0b40..8780d73a 100644 --- a/bloc_flutter/lib/widgets/stats_counter.dart +++ b/bloc_flutter/lib/widgets/stats_counter.dart @@ -66,7 +66,7 @@ class StatsCounterState extends State { stream: bloc.numActive, builder: (context, snapshot) { return Text( - "${snapshot.data ?? 0}", + '${snapshot.data ?? 0}', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subhead, ); diff --git a/bloc_flutter/test_driver/todo_app_test.dart b/bloc_flutter/test_driver/todo_app_test.dart index 14ddb566..ad93f5a5 100644 --- a/bloc_flutter/test_driver/todo_app_test.dart +++ b/bloc_flutter/test_driver/todo_app_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } diff --git a/bloc_library/lib/blocs/stats/stats_bloc.dart b/bloc_library/lib/blocs/stats/stats_bloc.dart index 1b1d9af8..e6b4ae77 100644 --- a/bloc_library/lib/blocs/stats/stats_bloc.dart +++ b/bloc_library/lib/blocs/stats/stats_bloc.dart @@ -21,9 +21,9 @@ class StatsBloc extends Bloc { @override Stream mapEventToState(StatsEvent event) async* { if (event is UpdateStats) { - int numActive = + var numActive = event.todos.where((todo) => !todo.complete).toList().length; - int numCompleted = + var numCompleted = event.todos.where((todo) => todo.complete).toList().length; yield StatsLoaded(numActive, numCompleted); } diff --git a/bloc_library/lib/blocs/todos/todos_bloc.dart b/bloc_library/lib/blocs/todos/todos_bloc.dart index ab728a50..f39a98f5 100644 --- a/bloc_library/lib/blocs/todos/todos_bloc.dart +++ b/bloc_library/lib/blocs/todos/todos_bloc.dart @@ -37,7 +37,7 @@ class TodosBloc extends Bloc { Stream _mapLoadTodosToState() async* { try { - final todos = await this.todosRepository.loadTodos(); + final todos = await todosRepository.loadTodos(); yield TodosLoaded( todos.map(Todo.fromEntity).toList(), ); @@ -48,20 +48,20 @@ class TodosBloc extends Bloc { Stream _mapAddTodoToState(AddTodo event) async* { if (state is TodosLoaded) { - final List updatedTodos = List.from((state as TodosLoaded).todos) + final updatedTodos = List.from((state as TodosLoaded).todos) ..add(event.todo); yield TodosLoaded(updatedTodos); - _saveTodos(updatedTodos); + await _saveTodos(updatedTodos); } } Stream _mapUpdateTodoToState(UpdateTodo event) async* { if (state is TodosLoaded) { - final List updatedTodos = (state as TodosLoaded).todos.map((todo) { + final updatedTodos = (state as TodosLoaded).todos.map((todo) { return todo.id == event.updatedTodo.id ? event.updatedTodo : todo; }).toList(); yield TodosLoaded(updatedTodos); - _saveTodos(updatedTodos); + await _saveTodos(updatedTodos); } } @@ -72,7 +72,7 @@ class TodosBloc extends Bloc { .where((todo) => todo.id != event.todo.id) .toList(); yield TodosLoaded(updatedTodos); - _saveTodos(updatedTodos); + await _saveTodos(updatedTodos); } } @@ -80,21 +80,21 @@ class TodosBloc extends Bloc { if (state is TodosLoaded) { final allComplete = (state as TodosLoaded).todos.every((todo) => todo.complete); - final List updatedTodos = (state as TodosLoaded) + final updatedTodos = (state as TodosLoaded) .todos .map((todo) => todo.copyWith(complete: !allComplete)) .toList(); yield TodosLoaded(updatedTodos); - _saveTodos(updatedTodos); + await _saveTodos(updatedTodos); } } Stream _mapClearCompletedToState() async* { if (state is TodosLoaded) { - final List updatedTodos = + final updatedTodos = (state as TodosLoaded).todos.where((todo) => !todo.complete).toList(); yield TodosLoaded(updatedTodos); - _saveTodos(updatedTodos); + await _saveTodos(updatedTodos); } } diff --git a/bloc_library/lib/localization.dart b/bloc_library/lib/localization.dart index 68e2b548..3ccb24e3 100644 --- a/bloc_library/lib/localization.dart +++ b/bloc_library/lib/localization.dart @@ -14,7 +14,7 @@ class FlutterBlocLocalizations { ); } - String get appTitle => "Bloc Library Example"; + String get appTitle => 'Bloc Library Example'; } class FlutterBlocLocalizationsDelegate @@ -28,5 +28,5 @@ class FlutterBlocLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/bloc_library/lib/main.dart b/bloc_library/lib/main.dart index db6b6452..1164d217 100644 --- a/bloc_library/lib/main.dart +++ b/bloc_library/lib/main.dart @@ -23,7 +23,7 @@ void main() { create: (context) { return TodosBloc( todosRepository: const TodosRepositoryFlutter( - fileStorage: const FileStorage( + fileStorage: FileStorage( '__flutter_bloc_app__', getApplicationDocumentsDirectory, ), diff --git a/bloc_library/lib/models/todo.dart b/bloc_library/lib/models/todo.dart index 922c4de4..025120dc 100644 --- a/bloc_library/lib/models/todo.dart +++ b/bloc_library/lib/models/todo.dart @@ -14,8 +14,8 @@ class Todo { final String task; Todo(this.task, {this.complete = false, String note = '', String id}) - : this.note = note ?? '', - this.id = id ?? Uuid().generateV4(); + : note = note ?? '', + id = id ?? Uuid().generateV4(); Todo copyWith({bool complete, String id, String note, String task}) { return Todo( diff --git a/bloc_library/lib/screens/add_edit_screen.dart b/bloc_library/lib/screens/add_edit_screen.dart index c5f2ad39..8c67e96a 100644 --- a/bloc_library/lib/screens/add_edit_screen.dart +++ b/bloc_library/lib/screens/add_edit_screen.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; import 'package:todos_app_core/todos_app_core.dart'; import 'package:bloc_library/models/models.dart'; -typedef OnSaveCallback = Function(String task, String note); +typedef OnSaveCallback = void Function(String task, String note); class AddEditScreen extends StatefulWidget { final bool isEditing; diff --git a/bloc_library/lib/widgets/extra_actions.dart b/bloc_library/lib/widgets/extra_actions.dart index 1d4df6be..cb9992d8 100644 --- a/bloc_library/lib/widgets/extra_actions.dart +++ b/bloc_library/lib/widgets/extra_actions.dart @@ -21,7 +21,7 @@ class ExtraActions extends StatelessWidget { bloc: todosBloc, builder: (BuildContext context, TodosState state) { if (state is TodosLoaded) { - bool allComplete = (todosBloc.state as TodosLoaded) + final allComplete = (todosBloc.state as TodosLoaded) .todos .every((todo) => todo.complete); return PopupMenuButton( diff --git a/bloc_library/lib/widgets/filter_button.dart b/bloc_library/lib/widgets/filter_button.dart index fa9c1923..f81ace89 100644 --- a/bloc_library/lib/widgets/filter_button.dart +++ b/bloc_library/lib/widgets/filter_button.dart @@ -20,8 +20,7 @@ class FilterButton extends StatelessWidget { .textTheme .body1 .copyWith(color: Theme.of(context).accentColor); - final FilteredTodosBloc filteredTodosBloc = - BlocProvider.of(context); + final filteredTodosBloc = BlocProvider.of(context); return BlocBuilder( bloc: filteredTodosBloc, builder: (BuildContext context, FilteredTodosState state) { diff --git a/bloc_library/lib/widgets/stats.dart b/bloc_library/lib/widgets/stats.dart index 64e6b5bb..59b6940d 100644 --- a/bloc_library/lib/widgets/stats.dart +++ b/bloc_library/lib/widgets/stats.dart @@ -16,7 +16,7 @@ class Stats extends StatelessWidget { @override Widget build(BuildContext context) { - final StatsBloc statsBloc = BlocProvider.of(context); + final statsBloc = BlocProvider.of(context); return BlocBuilder( bloc: statsBloc, builder: (BuildContext context, StatsState state) { @@ -52,7 +52,7 @@ class Stats extends StatelessWidget { Padding( padding: EdgeInsets.only(bottom: 24.0), child: Text( - "${state.numActive}", + '${state.numActive}', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subhead, ), diff --git a/bloc_library/test/all_tests.dart b/bloc_library/test/all_tests.dart index 9763b08b..07be21c9 100644 --- a/bloc_library/test/all_tests.dart +++ b/bloc_library/test/all_tests.dart @@ -1,62 +1,62 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import './blocs/filtered_todos_bloc_test.dart' as filteredTodosBloc; -import './blocs/filtered_todos_event_test.dart' as filteredTodosEvent; -import './blocs/simple_bloc_delegate_test.dart' as simpleBlocDelegate; -import './blocs/tab_bloc_test.dart' as tabBloc; -import './blocs/tab_event_test.dart' as tabEvent; -import './blocs/todos_bloc_test.dart' as todosBloc; -import './blocs/todos_event_test.dart' as todosEvent; -import './blocs/todos_state_test.dart' as todosState; +// _copyright 2018 _the _flutter _architecture _sample _authors. _all rights reserved. +// _use of this source code is governed by the _m_i_t license that can be found +// in the _l_i_c_e_n_s_e file. + +import './blocs/filtered_todos_bloc_test.dart' as filtered_todos_bloc; +import './blocs/filtered_todos_event_test.dart' as filtered_todos_event; +import './blocs/simple_bloc_delegate_test.dart' as simple_bloc_delegate; +import './blocs/tab_bloc_test.dart' as tab_bloc; +import './blocs/tab_event_test.dart' as tab_event; +import './blocs/todos_bloc_test.dart' as todos_bloc; +import './blocs/todos_event_test.dart' as todos_event; +import './blocs/todos_state_test.dart' as todos_state; import './models/todo_test.dart' as todo; -import './screens//add_edit_screen_test.dart' as addEditScreen; -import './screens/details_screen_test.dart' as detailsScreen; -import './screens/home_screen_test.dart' as homeScreen; +import './screens//add_edit_screen_test.dart' as add_edit_screen; +import './screens/details_screen_test.dart' as details_screen; +import './screens/home_screen_test.dart' as home_screen; -import './widgets/delete_todo_snack_bar_test.dart' as deleteTodoSnackbar; -import './widgets/extra_actions_test.dart' as extraActions; -import './widgets/filter_button_test.dart' as filterButton; -import './widgets/filtered_todos_test.dart' as filteredTodos; -import './widgets/loading_indicator_test.dart' as loadingIndicator; -import './widgets/stats_tab_test.dart' as statsTab; -import './widgets/tab_selector_test.dart' as tabSelector; -import './widgets/todo_item_test.dart' as todoItem; +import './widgets/delete_todo_snack_bar_test.dart' as delete_todo_snackbar; +import './widgets/extra_actions_test.dart' as extra_actions; +import './widgets/filter_button_test.dart' as filter_button; +import './widgets/filtered_todos_test.dart' as filtered_todos; +import './widgets/loading_indicator_test.dart' as loading_indicator; +import './widgets/stats_tab_test.dart' as stats_tab; +import './widgets/tab_selector_test.dart' as tab_selector; +import './widgets/todo_item_test.dart' as todo_item; import './localization_test.dart' as localization; void main() { - // Blocs - filteredTodosBloc.main(); - filteredTodosEvent.main(); - simpleBlocDelegate.main(); - tabBloc.main(); - tabEvent.main(); - todosBloc.main(); - todosEvent.main(); - todosState.main(); - - // Models + // _blocs + filtered_todos_bloc.main(); + filtered_todos_event.main(); + simple_bloc_delegate.main(); + tab_bloc.main(); + tab_event.main(); + todos_bloc.main(); + todos_event.main(); + todos_state.main(); + + // _models todo.main(); - // Screens - addEditScreen.main(); - detailsScreen.main(); - homeScreen.main(); - - // Widgets - deleteTodoSnackbar.main(); - extraActions.main(); - filterButton.main(); - filteredTodos.main(); - loadingIndicator.main(); - statsTab.main(); - tabSelector.main(); - todoItem.main(); - - // Localization + // _screens + add_edit_screen.main(); + details_screen.main(); + home_screen.main(); + + // _widgets + delete_todo_snackbar.main(); + extra_actions.main(); + filter_button.main(); + filtered_todos.main(); + loading_indicator.main(); + stats_tab.main(); + tab_selector.main(); + todo_item.main(); + + // _localization localization.main(); } diff --git a/bloc_library/test/blocs/simple_bloc_delegate_test.dart b/bloc_library/test/blocs/simple_bloc_delegate_test.dart index 2b71826e..3a248422 100644 --- a/bloc_library/test/blocs/simple_bloc_delegate_test.dart +++ b/bloc_library/test/blocs/simple_bloc_delegate_test.dart @@ -51,7 +51,7 @@ void main() { }); } -dynamic overridePrint(dynamic testFn()) => () { +dynamic overridePrint(dynamic Function() testFn) => () { var spec = ZoneSpecification(print: (_, __, ___, String msg) { // Add to log instead of printing to stdout printLog.add(msg); diff --git a/bloc_library/test/blocs/stats_bloc_test.dart b/bloc_library/test/blocs/stats_bloc_test.dart index 1a65b22f..87a985a0 100644 --- a/bloc_library/test/blocs/stats_bloc_test.dart +++ b/bloc_library/test/blocs/stats_bloc_test.dart @@ -15,8 +15,8 @@ class MockTodosBloc extends MockBloc void main() { group('StatsBloc', () { - final todo1 = Todo("Hallo"); - final todo2 = Todo("Hallo2", complete: true); + final todo1 = Todo('Hallo'); + final todo2 = Todo('Hallo2', complete: true); TodosBloc todosBloc; StatsBloc statsBloc; diff --git a/bloc_library/test/blocs/todos_bloc_test.dart b/bloc_library/test/blocs/todos_bloc_test.dart index fd8e85b0..6408c18a 100644 --- a/bloc_library/test/blocs/todos_bloc_test.dart +++ b/bloc_library/test/blocs/todos_bloc_test.dart @@ -39,11 +39,11 @@ void main() { 'should add a todo to the list in response to an AddTodo Event', build: () => todosBloc, act: (TodosBloc bloc) async => - bloc..add(LoadTodos())..add(AddTodo(Todo("Hallo", id: '0'))), + bloc..add(LoadTodos())..add(AddTodo(Todo('Hallo', id: '0'))), expect: [ TodosLoading(), TodosLoaded([]), - TodosLoaded([Todo("Hallo", id: '0')]), + TodosLoaded([Todo('Hallo', id: '0')]), ], ); @@ -54,13 +54,13 @@ void main() { return todosBloc; }, act: (TodosBloc bloc) async { - final todo = Todo("Hallo", id: '0'); + final todo = Todo('Hallo', id: '0'); bloc..add(LoadTodos())..add(AddTodo(todo))..add(DeleteTodo(todo)); }, expect: [ TodosLoading(), TodosLoaded([]), - TodosLoaded([Todo("Hallo", id: '0')]), + TodosLoaded([Todo('Hallo', id: '0')]), TodosLoaded([]), ], ); @@ -69,17 +69,17 @@ void main() { 'should update a todo in response to an UpdateTodoAction', build: () => todosBloc, act: (TodosBloc bloc) async { - final todo = Todo("Hallo", id: '0'); + final todo = Todo('Hallo', id: '0'); bloc ..add(LoadTodos()) ..add(AddTodo(todo)) - ..add(UpdateTodo(todo.copyWith(task: "Tschüss"))); + ..add(UpdateTodo(todo.copyWith(task: 'Tschüss'))); }, expect: [ TodosLoading(), TodosLoaded([]), - TodosLoaded([Todo("Hallo", id: '0')]), - TodosLoaded([Todo("Tschüss", id: '0')]), + TodosLoaded([Todo('Hallo', id: '0')]), + TodosLoaded([Todo('Tschüss', id: '0')]), ], ); @@ -87,8 +87,8 @@ void main() { 'should clear completed todos', build: () => todosBloc, act: (TodosBloc bloc) async { - final todo1 = Todo("Hallo", id: '0'); - final todo2 = Todo("Tschüss", complete: true, id: '1'); + final todo1 = Todo('Hallo', id: '0'); + final todo2 = Todo('Tschüss', complete: true, id: '1'); bloc ..add(LoadTodos()) ..add(AddTodo(todo1)) @@ -99,12 +99,12 @@ void main() { expect: [ TodosLoading(), TodosLoaded([]), - TodosLoaded([Todo("Hallo", id: '0')]), + TodosLoaded([Todo('Hallo', id: '0')]), TodosLoaded([ - Todo("Hallo", id: '0'), - Todo("Tschüss", id: '1', complete: true), + Todo('Hallo', id: '0'), + Todo('Tschüss', id: '1', complete: true), ]), - TodosLoaded([Todo("Hallo", id: '0')]), + TodosLoaded([Todo('Hallo', id: '0')]), ], ); @@ -112,8 +112,8 @@ void main() { 'should mark all as completed if some todos are incomplete', build: () => todosBloc, act: (TodosBloc bloc) async { - final todo1 = Todo("Hallo", id: '0'); - final todo2 = Todo("Tschüss", complete: true, id: '1'); + final todo1 = Todo('Hallo', id: '0'); + final todo2 = Todo('Tschüss', complete: true, id: '1'); bloc ..add(LoadTodos()) ..add(AddTodo(todo1)) @@ -124,14 +124,14 @@ void main() { expect: [ TodosLoading(), TodosLoaded([]), - TodosLoaded([Todo("Hallo", id: '0')]), + TodosLoaded([Todo('Hallo', id: '0')]), TodosLoaded([ - Todo("Hallo", id: '0'), - Todo("Tschüss", id: '1', complete: true), + Todo('Hallo', id: '0'), + Todo('Tschüss', id: '1', complete: true), ]), TodosLoaded([ - Todo("Hallo", id: '0', complete: true), - Todo("Tschüss", id: '1', complete: true), + Todo('Hallo', id: '0', complete: true), + Todo('Tschüss', id: '1', complete: true), ]), ], ); @@ -140,8 +140,8 @@ void main() { 'should mark all as incomplete if all todos are complete', build: () => todosBloc, act: (TodosBloc bloc) async { - final todo1 = Todo("Hallo", complete: true, id: '0'); - final todo2 = Todo("Tschüss", complete: true, id: '1'); + final todo1 = Todo('Hallo', complete: true, id: '0'); + final todo2 = Todo('Tschüss', complete: true, id: '1'); bloc ..add(LoadTodos()) ..add(AddTodo(todo1)) @@ -152,14 +152,14 @@ void main() { expect: [ TodosLoading(), TodosLoaded([]), - TodosLoaded([Todo("Hallo", id: '0', complete: true)]), + TodosLoaded([Todo('Hallo', id: '0', complete: true)]), TodosLoaded([ - Todo("Hallo", id: '0', complete: true), - Todo("Tschüss", id: '1', complete: true), + Todo('Hallo', id: '0', complete: true), + Todo('Tschüss', id: '1', complete: true), ]), TodosLoaded([ - Todo("Hallo", id: '0'), - Todo("Tschüss", id: '1'), + Todo('Hallo', id: '0'), + Todo('Tschüss', id: '1'), ]), ], ); diff --git a/bloc_library/test/localization_test.dart b/bloc_library/test/localization_test.dart index b929816a..73c8e1ba 100644 --- a/bloc_library/test/localization_test.dart +++ b/bloc_library/test/localization_test.dart @@ -17,7 +17,7 @@ void main() { }); test('App Title is correct', () { - expect(localizations.appTitle, "Bloc Library Example"); + expect(localizations.appTitle, 'Bloc Library Example'); }); test('shouldReload returns false', () { diff --git a/bloc_library/test/widgets/delete_todo_snack_bar_test.dart b/bloc_library/test/widgets/delete_todo_snack_bar_test.dart index e70bfe52..ebfd057b 100644 --- a/bloc_library/test/widgets/delete_todo_snack_bar_test.dart +++ b/bloc_library/test/widgets/delete_todo_snack_bar_test.dart @@ -38,7 +38,7 @@ void main() { await tester.tap(find.byKey(tapTarget)); await tester.pump(); - Finder snackBarFinder = find.byKey(snackBarKey); + var snackBarFinder = find.byKey(snackBarKey); expect(snackBarFinder, findsOneWidget); expect( @@ -51,7 +51,7 @@ void main() { testWidgets('should call onUndo when undo tapped', (WidgetTester tester) async { - int tapCount = 0; + var tapCount = 0; await tester.pumpWidget(MaterialApp( home: Scaffold( body: Builder(builder: (BuildContext context) { diff --git a/bloc_library/test/widgets/filter_button_test.dart b/bloc_library/test/widgets/filter_button_test.dart index 4ae2b355..46a85340 100644 --- a/bloc_library/test/widgets/filter_button_test.dart +++ b/bloc_library/test/widgets/filter_button_test.dart @@ -48,7 +48,7 @@ void main() { ), ); await tester.pumpAndSettle(); - Finder filterButtonFinder = find.byKey(ArchSampleKeys.filterButton); + var filterButtonFinder = find.byKey(ArchSampleKeys.filterButton); expect(filterButtonFinder, findsOneWidget); await tester.tap(filterButtonFinder); await tester.pumpAndSettle(); @@ -79,7 +79,7 @@ void main() { ), ); await tester.pumpAndSettle(); - Finder filterButtonFinder = find.byKey(ArchSampleKeys.filterButton); + var filterButtonFinder = find.byKey(ArchSampleKeys.filterButton); expect(filterButtonFinder, findsOneWidget); await tester.tap(filterButtonFinder); await tester.pumpAndSettle(); @@ -110,7 +110,7 @@ void main() { ), ); await tester.pumpAndSettle(); - Finder filterButtonFinder = find.byKey(ArchSampleKeys.filterButton); + var filterButtonFinder = find.byKey(ArchSampleKeys.filterButton); expect(filterButtonFinder, findsOneWidget); await tester.tap(filterButtonFinder); await tester.pumpAndSettle(); @@ -143,8 +143,8 @@ void main() { ), ); await tester.pumpAndSettle(); - Finder filterButtonFinder = find.byKey(ArchSampleKeys.filterButton); - Finder allFilterFinder = find.byKey(ArchSampleKeys.allFilter); + var filterButtonFinder = find.byKey(ArchSampleKeys.filterButton); + var allFilterFinder = find.byKey(ArchSampleKeys.allFilter); expect(filterButtonFinder, findsOneWidget); await tester.tap(filterButtonFinder); await tester.pumpAndSettle(); diff --git a/bloc_library/test/widgets/tab_selector_test.dart b/bloc_library/test/widgets/tab_selector_test.dart index 365f7e65..98a3e7c3 100644 --- a/bloc_library/test/widgets/tab_selector_test.dart +++ b/bloc_library/test/widgets/tab_selector_test.dart @@ -34,7 +34,8 @@ void main() { testWidgets('should call onTabSelected with correct index when tab tapped', (WidgetTester tester) async { - AppTab selectedTab = null; + AppTab selectedTab; + await tester.pumpWidget( MaterialApp( home: Scaffold( @@ -53,8 +54,8 @@ void main() { ), ); await tester.pumpAndSettle(); - Finder todoTabFinder = find.byKey(ArchSampleKeys.todoTab); - Finder statsTabFinder = find.byKey(ArchSampleKeys.statsTab); + final todoTabFinder = find.byKey(ArchSampleKeys.todoTab); + final statsTabFinder = find.byKey(ArchSampleKeys.statsTab); expect(todoTabFinder, findsOneWidget); expect(statsTabFinder, findsOneWidget); await tester.tap(todoTabFinder); diff --git a/bloc_library/test_driver/todo_app_test.dart b/bloc_library/test_driver/todo_app_test.dart index 3196e2ba..ad93f5a5 100644 --- a/bloc_library/test_driver/todo_app_test.dart +++ b/bloc_library/test_driver/todo_app_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; void main() { - integrationTests.main(); + integration_tests.main(); } diff --git a/blocs/test/all_tests.dart b/blocs/test/all_tests.dart index 1f5575f7..416b9d98 100644 --- a/blocs/test/all_tests.dart +++ b/blocs/test/all_tests.dart @@ -3,7 +3,7 @@ import 'todo_bloc_test.dart' as todoBloc; import 'todos_bloc_test.dart' as todosBloc; import 'todos_interactor_test.dart' as todosInteractor; -main() { +void main() { statsBloc.main(); todoBloc.main(); todosBloc.main(); diff --git a/blocs/test/stats_bloc_test.dart b/blocs/test/stats_bloc_test.dart index d8f0cb6d..d91973b1 100644 --- a/blocs/test/stats_bloc_test.dart +++ b/blocs/test/stats_bloc_test.dart @@ -14,8 +14,8 @@ void main() { test('should stream the number of active todos', () { final interactor = MockTodosInteractor(); final todos = [ - Todo("Hallo", complete: true), - Todo("Friend"), + Todo('Hallo', complete: true), + Todo('Friend'), ]; final source = BehaviorSubject>.seeded(todos); @@ -29,8 +29,8 @@ void main() { test('should stream the number of completed todos', () { final interactor = MockTodosInteractor(); final todos = [ - Todo("Hallo", complete: true), - Todo("Friend", complete: true), + Todo('Hallo', complete: true), + Todo('Friend', complete: true), ]; final source = BehaviorSubject>.seeded(todos); diff --git a/blocs/test/todos_interactor_test.dart b/blocs/test/todos_interactor_test.dart index 74ae80c9..66eef7c7 100644 --- a/blocs/test/todos_interactor_test.dart +++ b/blocs/test/todos_interactor_test.dart @@ -18,7 +18,7 @@ void main() { test('should convert repo entities into Todos', () { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); - final todos = [TodoEntity("Hallo", "1", "Note", false)]; + final todos = [TodoEntity('Hallo', '1', "Note", false)]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -29,8 +29,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", false), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", false), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -42,8 +42,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", true), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", true), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -54,8 +54,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", true), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", true), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -67,8 +67,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", false), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", false), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -80,8 +80,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", false), - TodoEntity("Friend", "2", "Note", false), + TodoEntity('Hallo', '1', "Note", false), + TodoEntity('Friend', '2', "Note", false), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -108,35 +108,35 @@ void main() { final interactor = TodosInteractor(repository); when(repository.todos()).thenAnswer((_) => Stream.empty()); - when(repository.deleteTodo(["1"])).thenAnswer((_) => Future.value()); + when(repository.deleteTodo(['1'])).thenAnswer((_) => Future.value()); - interactor.deleteTodo("1"); + interactor.deleteTodo('1'); - verify(repository.deleteTodo(["1"])); + verify(repository.deleteTodo(['1'])); }); test('should remove completed todos from the repo', () async { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", false), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", false), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); - when(repository.deleteTodo(["2"])).thenAnswer((_) => Future.sync(() {})); + when(repository.deleteTodo(['2'])).thenAnswer((_) => Future.sync(() {})); await interactor.clearCompleted(); - verify(repository.deleteTodo(["2"])); + verify(repository.deleteTodo(['2'])); }); test('if some todos incomplete, should toggle todos complete', () async { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); - final e1 = TodoEntity("Hallo", "1", "Note", false); - final e1Update = TodoEntity("Hallo", "1", "Note", true); - final e2 = TodoEntity("Friend", "2", "Note", true); + final e1 = TodoEntity('Hallo', '1', "Note", false); + final e1Update = TodoEntity('Hallo', '1', "Note", true); + final e2 = TodoEntity('Friend', '2', "Note", true); final todos = [e1, e2]; final source = BehaviorSubject>.seeded( todos, @@ -155,10 +155,10 @@ void main() { test('if all todos incomplete, should toggle all todos complete', () async { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); - final e1 = TodoEntity("Hallo", "1", "Note", false); - final e1Update = TodoEntity("Hallo", "1", "Note", true); - final e2 = TodoEntity("Friend", "2", "Note", false); - final e2Update = TodoEntity("Friend", "2", "Note", true); + final e1 = TodoEntity('Hallo', '1', "Note", false); + final e1Update = TodoEntity('Hallo', '1', "Note", true); + final e2 = TodoEntity('Friend', '2', "Note", false); + final e2Update = TodoEntity('Friend', '2', "Note", true); final todos = [e1, e2]; final source = BehaviorSubject>.seeded( todos, @@ -180,10 +180,10 @@ void main() { test('if all todos complete, should toggle todos incomplete', () async { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); - final e1 = TodoEntity("Hallo", "1", "Note", true); - final e1Update = TodoEntity("Hallo", "1", "Note", false); - final e2 = TodoEntity("Friend", "2", "Note", true); - final e2Update = TodoEntity("Friend", "2", "Note", false); + final e1 = TodoEntity('Hallo', '1', "Note", true); + final e1Update = TodoEntity('Hallo', '1', "Note", false); + final e2 = TodoEntity('Friend', '2', "Note", true); + final e2Update = TodoEntity('Friend', '2', "Note", false); final todos = [e1, e2]; final source = BehaviorSubject>.seeded( todos, diff --git a/built_redux/lib/actions/actions.g.dart b/built_redux/lib/actions/actions.g.dart index 88cc2edc..44c1cd37 100644 --- a/built_redux/lib/actions/actions.g.dart +++ b/built_redux/lib/actions/actions.g.dart @@ -7,30 +7,29 @@ part of actions; // ************************************************************************** class _$AppActions extends AppActions { - factory _$AppActions() => new _$AppActions._(); + factory _$AppActions() => _$AppActions._(); _$AppActions._() : super._(); final ActionDispatcher addTodoAction = - new ActionDispatcher('AppActions-addTodoAction'); + ActionDispatcher('AppActions-addTodoAction'); final ActionDispatcher clearCompletedAction = - new ActionDispatcher('AppActions-clearCompletedAction'); + ActionDispatcher('AppActions-clearCompletedAction'); final ActionDispatcher deleteTodoAction = - new ActionDispatcher('AppActions-deleteTodoAction'); + ActionDispatcher('AppActions-deleteTodoAction'); final ActionDispatcher fetchTodosAction = - new ActionDispatcher('AppActions-fetchTodosAction'); + ActionDispatcher('AppActions-fetchTodosAction'); final ActionDispatcher toggleAllAction = - new ActionDispatcher('AppActions-toggleAllAction'); + ActionDispatcher('AppActions-toggleAllAction'); final ActionDispatcher> loadTodosSuccess = - new ActionDispatcher>('AppActions-loadTodosSuccess'); + ActionDispatcher>('AppActions-loadTodosSuccess'); final ActionDispatcher loadTodosFailure = - new ActionDispatcher('AppActions-loadTodosFailure'); + ActionDispatcher('AppActions-loadTodosFailure'); final ActionDispatcher updateFilterAction = - new ActionDispatcher('AppActions-updateFilterAction'); + ActionDispatcher('AppActions-updateFilterAction'); final ActionDispatcher updateTabAction = - new ActionDispatcher('AppActions-updateTabAction'); + ActionDispatcher('AppActions-updateTabAction'); final ActionDispatcher updateTodoAction = - new ActionDispatcher( - 'AppActions-updateTodoAction'); + ActionDispatcher('AppActions-updateTodoAction'); @override void setDispatcher(Dispatcher dispatcher) { @@ -49,25 +48,25 @@ class _$AppActions extends AppActions { class AppActionsNames { static final ActionName addTodoAction = - new ActionName('AppActions-addTodoAction'); + ActionName('AppActions-addTodoAction'); static final ActionName clearCompletedAction = - new ActionName('AppActions-clearCompletedAction'); + ActionName('AppActions-clearCompletedAction'); static final ActionName deleteTodoAction = - new ActionName('AppActions-deleteTodoAction'); + ActionName('AppActions-deleteTodoAction'); static final ActionName fetchTodosAction = - new ActionName('AppActions-fetchTodosAction'); + ActionName('AppActions-fetchTodosAction'); static final ActionName toggleAllAction = - new ActionName('AppActions-toggleAllAction'); + ActionName('AppActions-toggleAllAction'); static final ActionName> loadTodosSuccess = - new ActionName>('AppActions-loadTodosSuccess'); + ActionName>('AppActions-loadTodosSuccess'); static final ActionName loadTodosFailure = - new ActionName('AppActions-loadTodosFailure'); + ActionName('AppActions-loadTodosFailure'); static final ActionName updateFilterAction = - new ActionName('AppActions-updateFilterAction'); + ActionName('AppActions-updateFilterAction'); static final ActionName updateTabAction = - new ActionName('AppActions-updateTabAction'); + ActionName('AppActions-updateTabAction'); static final ActionName updateTodoAction = - new ActionName('AppActions-updateTodoAction'); + ActionName('AppActions-updateTodoAction'); } // ************************************************************************** @@ -83,7 +82,7 @@ class AppActionsNames { // ignore_for_file: sort_constructors_first Serializer _$updateTodoActionPayloadSerializer = - new _$UpdateTodoActionPayloadSerializer(); + _$UpdateTodoActionPayloadSerializer(); class _$UpdateTodoActionPayloadSerializer implements StructuredSerializer { @@ -97,7 +96,7 @@ class _$UpdateTodoActionPayloadSerializer @override Iterable serialize(Serializers serializers, UpdateTodoActionPayload object, - {FullType specifiedType: FullType.unspecified}) { + {FullType specifiedType = FullType.unspecified}) { final result = [ 'id', serializers.serialize(object.id, specifiedType: const FullType(String)), @@ -112,8 +111,8 @@ class _$UpdateTodoActionPayloadSerializer @override UpdateTodoActionPayload deserialize( Serializers serializers, Iterable serialized, - {FullType specifiedType: FullType.unspecified}) { - final result = new UpdateTodoActionPayloadBuilder(); + {FullType specifiedType = FullType.unspecified}) { + final result = UpdateTodoActionPayloadBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -143,25 +142,26 @@ class _$UpdateTodoActionPayload extends UpdateTodoActionPayload { final Todo updatedTodo; factory _$UpdateTodoActionPayload( - [void updates(UpdateTodoActionPayloadBuilder b)]) => - (new UpdateTodoActionPayloadBuilder()..update(updates)).build(); + [void Function(UpdateTodoActionPayloadBuilder b) updates]) => + (UpdateTodoActionPayloadBuilder()..update(updates)).build(); _$UpdateTodoActionPayload._({this.id, this.updatedTodo}) : super._() { - if (id == null) - throw new BuiltValueNullFieldError('UpdateTodoActionPayload', 'id'); - if (updatedTodo == null) - throw new BuiltValueNullFieldError( - 'UpdateTodoActionPayload', 'updatedTodo'); + if (id == null) { + throw BuiltValueNullFieldError('UpdateTodoActionPayload', 'id'); + } + if (updatedTodo == null) { + throw BuiltValueNullFieldError('UpdateTodoActionPayload', 'updatedTodo'); + } } @override UpdateTodoActionPayload rebuild( - void updates(UpdateTodoActionPayloadBuilder b)) => + void Function(UpdateTodoActionPayloadBuilder b) updates) => (toBuilder()..update(updates)).build(); @override UpdateTodoActionPayloadBuilder toBuilder() => - new UpdateTodoActionPayloadBuilder()..replace(this); + UpdateTodoActionPayloadBuilder()..replace(this); @override bool operator ==(dynamic other) { @@ -194,7 +194,7 @@ class UpdateTodoActionPayloadBuilder set id(String id) => _$this._id = id; TodoBuilder _updatedTodo; - TodoBuilder get updatedTodo => _$this._updatedTodo ??= new TodoBuilder(); + TodoBuilder get updatedTodo => _$this._updatedTodo ??= TodoBuilder(); set updatedTodo(TodoBuilder updatedTodo) => _$this._updatedTodo = updatedTodo; UpdateTodoActionPayloadBuilder(); @@ -210,12 +210,12 @@ class UpdateTodoActionPayloadBuilder @override void replace(UpdateTodoActionPayload other) { - if (other == null) throw new ArgumentError.notNull('other'); + if (other == null) throw ArgumentError.notNull('other'); _$v = other as _$UpdateTodoActionPayload; } @override - void update(void updates(UpdateTodoActionPayloadBuilder b)) { + void update(void Function(UpdateTodoActionPayloadBuilder b) updates) { if (updates != null) updates(this); } @@ -224,15 +224,14 @@ class UpdateTodoActionPayloadBuilder _$UpdateTodoActionPayload _$result; try { _$result = _$v ?? - new _$UpdateTodoActionPayload._( - id: id, updatedTodo: updatedTodo.build()); + _$UpdateTodoActionPayload._(id: id, updatedTodo: updatedTodo.build()); } catch (_) { String _$failedField; try { _$failedField = 'updatedTodo'; updatedTodo.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( 'UpdateTodoActionPayload', _$failedField, e.toString()); } rethrow; diff --git a/built_redux/lib/containers/add_todo.dart b/built_redux/lib/containers/add_todo.dart index bd7831e0..4433de41 100644 --- a/built_redux/lib/containers/add_todo.dart +++ b/built_redux/lib/containers/add_todo.dart @@ -25,5 +25,5 @@ class AddTodo extends StoreConnector { } @override - connect(AppState state) {} + Null connect(AppState state) {} } diff --git a/built_redux/lib/containers/edit_todo.dart b/built_redux/lib/containers/edit_todo.dart index 90f7f576..0e7db71b 100644 --- a/built_redux/lib/containers/edit_todo.dart +++ b/built_redux/lib/containers/edit_todo.dart @@ -31,5 +31,5 @@ class EditTodo extends StoreConnector { } @override - connect(AppState state) {} + Null connect(AppState state) {} } diff --git a/built_redux/lib/containers/filter_selector.dart b/built_redux/lib/containers/filter_selector.dart index 69979a6b..20c3ddd4 100644 --- a/built_redux/lib/containers/filter_selector.dart +++ b/built_redux/lib/containers/filter_selector.dart @@ -14,7 +14,7 @@ import 'package:flutter_built_redux/flutter_built_redux.dart'; part 'filter_selector.g.dart'; -typedef OnFilterSelected = Function(VisibilityFilter filter); +typedef OnFilterSelected = void Function(VisibilityFilter filter); abstract class FilterSelectorViewModel implements Built { @@ -24,7 +24,8 @@ abstract class FilterSelectorViewModel VisibilityFilter get activeFilter; - factory FilterSelectorViewModel([updates(FilterSelectorViewModelBuilder b)]) = + factory FilterSelectorViewModel( + [void Function(FilterSelectorViewModelBuilder b) updates]) = _$FilterSelectorViewModel; factory FilterSelectorViewModel.from( diff --git a/built_redux/lib/containers/filter_selector.g.dart b/built_redux/lib/containers/filter_selector.g.dart index 022db013..0d450cc8 100644 --- a/built_redux/lib/containers/filter_selector.g.dart +++ b/built_redux/lib/containers/filter_selector.g.dart @@ -21,27 +21,28 @@ class _$FilterSelectorViewModel extends FilterSelectorViewModel { final VisibilityFilter activeFilter; factory _$FilterSelectorViewModel( - [void updates(FilterSelectorViewModelBuilder b)]) => - (new FilterSelectorViewModelBuilder()..update(updates)).build(); + [void Function(FilterSelectorViewModelBuilder b) updates]) => + (FilterSelectorViewModelBuilder()..update(updates)).build(); _$FilterSelectorViewModel._({this.onFilterSelected, this.activeFilter}) : super._() { - if (onFilterSelected == null) - throw new BuiltValueNullFieldError( + if (onFilterSelected == null) { + throw BuiltValueNullFieldError( 'FilterSelectorViewModel', 'onFilterSelected'); - if (activeFilter == null) - throw new BuiltValueNullFieldError( - 'FilterSelectorViewModel', 'activeFilter'); + } + if (activeFilter == null) { + throw BuiltValueNullFieldError('FilterSelectorViewModel', 'activeFilter'); + } } @override FilterSelectorViewModel rebuild( - void updates(FilterSelectorViewModelBuilder b)) => + void Function(FilterSelectorViewModelBuilder b) updates) => (toBuilder()..update(updates)).build(); @override FilterSelectorViewModelBuilder toBuilder() => - new FilterSelectorViewModelBuilder()..replace(this); + FilterSelectorViewModelBuilder()..replace(this); @override bool operator ==(dynamic other) { @@ -93,19 +94,19 @@ class FilterSelectorViewModelBuilder @override void replace(FilterSelectorViewModel other) { - if (other == null) throw new ArgumentError.notNull('other'); + if (other == null) throw ArgumentError.notNull('other'); _$v = other as _$FilterSelectorViewModel; } @override - void update(void updates(FilterSelectorViewModelBuilder b)) { + void update(void Function(FilterSelectorViewModelBuilder b) updates) { if (updates != null) updates(this); } @override _$FilterSelectorViewModel build() { final _$result = _$v ?? - new _$FilterSelectorViewModel._( + _$FilterSelectorViewModel._( onFilterSelected: onFilterSelected, activeFilter: activeFilter); replace(_$result); return _$result; diff --git a/built_redux/lib/containers/stats.dart b/built_redux/lib/containers/stats.dart index e0fbd1e6..3f417a1e 100644 --- a/built_redux/lib/containers/stats.dart +++ b/built_redux/lib/containers/stats.dart @@ -20,7 +20,7 @@ abstract class StatsProps implements Built { StatsProps._(); - factory StatsProps([updates(StatsPropsBuilder b)]) = _$StatsProps; + factory StatsProps([Function(StatsPropsBuilder b) updates]) = _$StatsProps; } class Stats extends StoreConnector { diff --git a/built_redux/lib/containers/stats.g.dart b/built_redux/lib/containers/stats.g.dart index dceca1c5..09497158 100644 --- a/built_redux/lib/containers/stats.g.dart +++ b/built_redux/lib/containers/stats.g.dart @@ -20,22 +20,24 @@ class _$StatsProps extends StatsProps { @override final int numActive; - factory _$StatsProps([void updates(StatsPropsBuilder b)]) => - (new StatsPropsBuilder()..update(updates)).build(); + factory _$StatsProps([void Function(StatsPropsBuilder b) updates]) => + (StatsPropsBuilder()..update(updates)).build(); _$StatsProps._({this.numCompleted, this.numActive}) : super._() { - if (numCompleted == null) - throw new BuiltValueNullFieldError('StatsProps', 'numCompleted'); - if (numActive == null) - throw new BuiltValueNullFieldError('StatsProps', 'numActive'); + if (numCompleted == null) { + throw BuiltValueNullFieldError('StatsProps', 'numCompleted'); + } + if (numActive == null) { + throw BuiltValueNullFieldError('StatsProps', 'numActive'); + } } @override - StatsProps rebuild(void updates(StatsPropsBuilder b)) => + StatsProps rebuild(void Function(StatsPropsBuilder b) updates) => (toBuilder()..update(updates)).build(); @override - StatsPropsBuilder toBuilder() => new StatsPropsBuilder()..replace(this); + StatsPropsBuilder toBuilder() => StatsPropsBuilder()..replace(this); @override bool operator ==(dynamic other) { @@ -82,19 +84,19 @@ class StatsPropsBuilder implements Builder { @override void replace(StatsProps other) { - if (other == null) throw new ArgumentError.notNull('other'); + if (other == null) throw ArgumentError.notNull('other'); _$v = other as _$StatsProps; } @override - void update(void updates(StatsPropsBuilder b)) { + void update(void Function(StatsPropsBuilder b) updates) { if (updates != null) updates(this); } @override _$StatsProps build() { - final _$result = _$v ?? - new _$StatsProps._(numCompleted: numCompleted, numActive: numActive); + final _$result = + _$v ?? _$StatsProps._(numCompleted: numCompleted, numActive: numActive); replace(_$result); return _$result; } diff --git a/built_redux/lib/containers/todo_details.dart b/built_redux/lib/containers/todo_details.dart index 15aa94b3..2b46373a 100644 --- a/built_redux/lib/containers/todo_details.dart +++ b/built_redux/lib/containers/todo_details.dart @@ -32,7 +32,7 @@ class TodoDetails extends StoreConnector { Todo connect(AppState state) { return state.todos.firstWhere( (todo) => todo.id == id, - orElse: () => Todo("Nothing Here"), + orElse: () => Todo('Nothing Here'), ); } } diff --git a/built_redux/lib/containers/typedefs.dart b/built_redux/lib/containers/typedefs.dart index 603df17a..77ec69c8 100644 --- a/built_redux/lib/containers/typedefs.dart +++ b/built_redux/lib/containers/typedefs.dart @@ -4,5 +4,5 @@ import 'package:flutter/src/widgets/framework.dart'; -typedef ViewModelBuilder = Function( +typedef ViewModelBuilder = Widget Function( BuildContext context, ViewModel vm); diff --git a/built_redux/lib/localization.dart b/built_redux/lib/localization.dart index 0bd9594e..eb48df86 100644 --- a/built_redux/lib/localization.dart +++ b/built_redux/lib/localization.dart @@ -14,7 +14,7 @@ class BuiltReduxLocalizations { ); } - String get appTitle => "Built Redux Example"; + String get appTitle => 'Built Redux Example'; } class BuiltReduxLocalizationsDelegate @@ -28,5 +28,5 @@ class BuiltReduxLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/built_redux/lib/main.dart b/built_redux/lib/main.dart index 5e5c8d1a..1801b2e0 100644 --- a/built_redux/lib/main.dart +++ b/built_redux/lib/main.dart @@ -39,8 +39,6 @@ class BuiltReduxApp extends StatefulWidget { class BuiltReduxAppState extends State { Store store; - BuiltReduxApp() {} - @override void initState() { store = widget.store; diff --git a/built_redux/lib/models/app_state.dart b/built_redux/lib/models/app_state.dart index 7611b236..09caa3dc 100644 --- a/built_redux/lib/models/app_state.dart +++ b/built_redux/lib/models/app_state.dart @@ -27,12 +27,13 @@ abstract class AppState implements Built { AppState._(); - factory AppState([updates(AppStateBuilder b)]) => _$AppState((b) => b - ..isLoading = false - ..todos = ListBuilder([]) - ..activeTab = AppTab.todos - ..activeFilter = VisibilityFilter.all - ..update(updates)); + factory AppState([void Function(AppStateBuilder b) updates]) => + _$AppState((b) => b + ..isLoading = false + ..todos = ListBuilder([]) + ..activeTab = AppTab.todos + ..activeFilter = VisibilityFilter.all + ..update(updates)); factory AppState.loading() => AppState((b) => b..isLoading = true); @@ -58,12 +59,14 @@ abstract class AppState implements Built { @memoized List get filteredTodosSelector => todos.where((todo) { - if (activeFilter == VisibilityFilter.all) { - return true; - } else if (activeFilter == VisibilityFilter.active) { - return !todo.complete; - } else if (activeFilter == VisibilityFilter.completed) { - return todo.complete; + switch (activeFilter) { + case VisibilityFilter.active: + return !todo.complete; + case VisibilityFilter.completed: + return todo.complete; + case VisibilityFilter.all: + default: + return true; } }).toList(); diff --git a/built_redux/lib/models/app_state.g.dart b/built_redux/lib/models/app_state.g.dart index 27746966..d6a6ed60 100644 --- a/built_redux/lib/models/app_state.g.dart +++ b/built_redux/lib/models/app_state.g.dart @@ -14,7 +14,7 @@ part of app_state; // ignore_for_file: prefer_expression_function_bodies // ignore_for_file: sort_constructors_first -Serializer _$appStateSerializer = new _$AppStateSerializer(); +Serializer _$appStateSerializer = _$AppStateSerializer(); class _$AppStateSerializer implements StructuredSerializer { @override @@ -24,15 +24,14 @@ class _$AppStateSerializer implements StructuredSerializer { @override Iterable serialize(Serializers serializers, AppState object, - {FullType specifiedType: FullType.unspecified}) { + {FullType specifiedType = FullType.unspecified}) { final result = [ 'isLoading', serializers.serialize(object.isLoading, specifiedType: const FullType(bool)), 'todos', serializers.serialize(object.todos, - specifiedType: - const FullType(BuiltList, const [const FullType(Todo)])), + specifiedType: const FullType(BuiltList, [FullType(Todo)])), 'activeTab', serializers.serialize(object.activeTab, specifiedType: const FullType(AppTab)), @@ -46,8 +45,8 @@ class _$AppStateSerializer implements StructuredSerializer { @override AppState deserialize(Serializers serializers, Iterable serialized, - {FullType specifiedType: FullType.unspecified}) { - final result = new AppStateBuilder(); + {FullType specifiedType = FullType.unspecified}) { + final result = AppStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -61,8 +60,7 @@ class _$AppStateSerializer implements StructuredSerializer { break; case 'todos': result.todos.replace(serializers.deserialize(value, - specifiedType: - const FullType(BuiltList, const [const FullType(Todo)])) + specifiedType: const FullType(BuiltList, [FullType(Todo)])) as BuiltList); break; case 'activeTab': @@ -95,18 +93,23 @@ class _$AppState extends AppState { bool __allCompleteSelector; List __filteredTodosSelector; - factory _$AppState([void updates(AppStateBuilder b)]) => - (new AppStateBuilder()..update(updates)).build(); + factory _$AppState([void Function(AppStateBuilder b) updates]) => + (AppStateBuilder()..update(updates)).build(); _$AppState._({this.isLoading, this.todos, this.activeTab, this.activeFilter}) : super._() { - if (isLoading == null) - throw new BuiltValueNullFieldError('AppState', 'isLoading'); - if (todos == null) throw new BuiltValueNullFieldError('AppState', 'todos'); - if (activeTab == null) - throw new BuiltValueNullFieldError('AppState', 'activeTab'); - if (activeFilter == null) - throw new BuiltValueNullFieldError('AppState', 'activeFilter'); + if (isLoading == null) { + throw BuiltValueNullFieldError('AppState', 'isLoading'); + } + if (todos == null) { + throw BuiltValueNullFieldError('AppState', 'todos'); + } + if (activeTab == null) { + throw BuiltValueNullFieldError('AppState', 'activeTab'); + } + if (activeFilter == null) { + throw BuiltValueNullFieldError('AppState', 'activeFilter'); + } } @override @@ -125,11 +128,11 @@ class _$AppState extends AppState { __filteredTodosSelector ??= super.filteredTodosSelector; @override - AppState rebuild(void updates(AppStateBuilder b)) => + AppState rebuild(void Function(AppStateBuilder b) updates) => (toBuilder()..update(updates)).build(); @override - AppStateBuilder toBuilder() => new AppStateBuilder()..replace(this); + AppStateBuilder toBuilder() => AppStateBuilder()..replace(this); @override bool operator ==(dynamic other) { @@ -168,7 +171,7 @@ class AppStateBuilder implements Builder { set isLoading(bool isLoading) => _$this._isLoading = isLoading; ListBuilder _todos; - ListBuilder get todos => _$this._todos ??= new ListBuilder(); + ListBuilder get todos => _$this._todos ??= ListBuilder(); set todos(ListBuilder todos) => _$this._todos = todos; AppTab _activeTab; @@ -195,12 +198,12 @@ class AppStateBuilder implements Builder { @override void replace(AppState other) { - if (other == null) throw new ArgumentError.notNull('other'); + if (other == null) throw ArgumentError.notNull('other'); _$v = other as _$AppState; } @override - void update(void updates(AppStateBuilder b)) { + void update(void Function(AppStateBuilder b) updates) { if (updates != null) updates(this); } @@ -209,7 +212,7 @@ class AppStateBuilder implements Builder { _$AppState _$result; try { _$result = _$v ?? - new _$AppState._( + _$AppState._( isLoading: isLoading, todos: todos.build(), activeTab: activeTab, @@ -220,7 +223,7 @@ class AppStateBuilder implements Builder { _$failedField = 'todos'; todos.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( 'AppState', _$failedField, e.toString()); } rethrow; diff --git a/built_redux/lib/models/app_tab.g.dart b/built_redux/lib/models/app_tab.g.dart index 9d3071c2..2334d445 100644 --- a/built_redux/lib/models/app_tab.g.dart +++ b/built_redux/lib/models/app_tab.g.dart @@ -14,8 +14,8 @@ part of app_tab; // ignore_for_file: prefer_expression_function_bodies // ignore_for_file: sort_constructors_first -const AppTab _$todos = const AppTab._('todos'); -const AppTab _$stats = const AppTab._('stats'); +const AppTab _$todos = AppTab._('todos'); +const AppTab _$stats = AppTab._('stats'); AppTab _$appTabValueOf(String name) { switch (name) { @@ -24,16 +24,16 @@ AppTab _$appTabValueOf(String name) { case 'stats': return _$stats; default: - throw new ArgumentError(name); + throw ArgumentError(name); } } -final BuiltSet _$appTabValues = new BuiltSet(const [ +final BuiltSet _$appTabValues = BuiltSet(const [ _$todos, _$stats, ]); -Serializer _$appTabSerializer = new _$AppTabSerializer(); +Serializer _$appTabSerializer = _$AppTabSerializer(); class _$AppTabSerializer implements PrimitiveSerializer { @override @@ -43,11 +43,11 @@ class _$AppTabSerializer implements PrimitiveSerializer { @override Object serialize(Serializers serializers, AppTab object, - {FullType specifiedType: FullType.unspecified}) => + {FullType specifiedType = FullType.unspecified}) => object.name; @override AppTab deserialize(Serializers serializers, Object serialized, - {FullType specifiedType: FullType.unspecified}) => + {FullType specifiedType = FullType.unspecified}) => AppTab.valueOf(serialized as String); } diff --git a/built_redux/lib/models/extra_actions.g.dart b/built_redux/lib/models/extra_actions.g.dart index 2d2f6828..e678e33c 100644 --- a/built_redux/lib/models/extra_actions.g.dart +++ b/built_redux/lib/models/extra_actions.g.dart @@ -14,9 +14,8 @@ part of extra_actions; // ignore_for_file: prefer_expression_function_bodies // ignore_for_file: sort_constructors_first -const ExtraAction _$toggleAllComplete = - const ExtraAction._('toggleAllComplete'); -const ExtraAction _$clearCompleted = const ExtraAction._('clearCompleted'); +const ExtraAction _$toggleAllComplete = ExtraAction._('toggleAllComplete'); +const ExtraAction _$clearCompleted = ExtraAction._('clearCompleted'); ExtraAction _$extraActionValueOf(String name) { switch (name) { @@ -25,17 +24,17 @@ ExtraAction _$extraActionValueOf(String name) { case 'clearCompleted': return _$clearCompleted; default: - throw new ArgumentError(name); + throw ArgumentError(name); } } final BuiltSet _$extraActionValues = - new BuiltSet(const [ + BuiltSet(const [ _$toggleAllComplete, _$clearCompleted, ]); -Serializer _$extraActionSerializer = new _$ExtraActionSerializer(); +Serializer _$extraActionSerializer = _$ExtraActionSerializer(); class _$ExtraActionSerializer implements PrimitiveSerializer { @override @@ -45,11 +44,11 @@ class _$ExtraActionSerializer implements PrimitiveSerializer { @override Object serialize(Serializers serializers, ExtraAction object, - {FullType specifiedType: FullType.unspecified}) => + {FullType specifiedType = FullType.unspecified}) => object.name; @override ExtraAction deserialize(Serializers serializers, Object serialized, - {FullType specifiedType: FullType.unspecified}) => + {FullType specifiedType = FullType.unspecified}) => ExtraAction.valueOf(serialized as String); } diff --git a/built_redux/lib/models/serializers.dart b/built_redux/lib/models/serializers.dart index d796e654..242371fc 100644 --- a/built_redux/lib/models/serializers.dart +++ b/built_redux/lib/models/serializers.dart @@ -10,7 +10,7 @@ import 'package:built_value/serializer.dart'; part 'serializers.g.dart'; -@SerializersFor(const [ +@SerializersFor([ AppTab, ExtraAction, VisibilityFilter, diff --git a/built_redux/lib/models/serializers.g.dart b/built_redux/lib/models/serializers.g.dart index 8635e6fc..ae587a0f 100644 --- a/built_redux/lib/models/serializers.g.dart +++ b/built_redux/lib/models/serializers.g.dart @@ -14,13 +14,12 @@ part of serializers; // ignore_for_file: prefer_expression_function_bodies // ignore_for_file: sort_constructors_first -Serializers _$serializers = (new Serializers().toBuilder() +Serializers _$serializers = (Serializers().toBuilder() ..add(AppState.serializer) ..add(AppTab.serializer) ..add(ExtraAction.serializer) ..add(Todo.serializer) ..add(VisibilityFilter.serializer) - ..addBuilderFactory( - const FullType(BuiltList, const [const FullType(Todo)]), - () => new ListBuilder())) + ..addBuilderFactory(const FullType(BuiltList, [FullType(Todo)]), + () => ListBuilder())) .build(); diff --git a/built_redux/lib/models/todo.dart b/built_redux/lib/models/todo.dart index f005e200..750582cf 100644 --- a/built_redux/lib/models/todo.dart +++ b/built_redux/lib/models/todo.dart @@ -32,7 +32,7 @@ abstract class Todo implements Built { ); } - factory Todo.builder([updates(TodoBuilder b)]) { + factory Todo.builder([void Function(TodoBuilder b) updates]) { final builder = TodoBuilder() ..id = Uuid().generateV4() ..complete = false diff --git a/built_redux/lib/models/todo.g.dart b/built_redux/lib/models/todo.g.dart index 74aeeff4..a1c9b106 100644 --- a/built_redux/lib/models/todo.g.dart +++ b/built_redux/lib/models/todo.g.dart @@ -14,7 +14,7 @@ part of todo; // ignore_for_file: prefer_expression_function_bodies // ignore_for_file: sort_constructors_first -Serializer _$todoSerializer = new _$TodoSerializer(); +Serializer _$todoSerializer = _$TodoSerializer(); class _$TodoSerializer implements StructuredSerializer { @override @@ -24,7 +24,7 @@ class _$TodoSerializer implements StructuredSerializer { @override Iterable serialize(Serializers serializers, Todo object, - {FullType specifiedType: FullType.unspecified}) { + {FullType specifiedType = FullType.unspecified}) { final result = [ 'complete', serializers.serialize(object.complete, @@ -42,8 +42,8 @@ class _$TodoSerializer implements StructuredSerializer { @override Todo deserialize(Serializers serializers, Iterable serialized, - {FullType specifiedType: FullType.unspecified}) { - final result = new TodoBuilder(); + {FullType specifiedType = FullType.unspecified}) { + final result = TodoBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -84,23 +84,24 @@ class _$Todo extends Todo { @override final String task; - factory _$Todo([void updates(TodoBuilder b)]) => - (new TodoBuilder()..update(updates)).build(); + factory _$Todo([void Function(TodoBuilder b) updates]) => + (TodoBuilder()..update(updates)).build(); _$Todo._({this.complete, this.id, this.note, this.task}) : super._() { - if (complete == null) - throw new BuiltValueNullFieldError('Todo', 'complete'); - if (id == null) throw new BuiltValueNullFieldError('Todo', 'id'); - if (note == null) throw new BuiltValueNullFieldError('Todo', 'note'); - if (task == null) throw new BuiltValueNullFieldError('Todo', 'task'); + if (complete == null) { + throw BuiltValueNullFieldError('Todo', 'complete'); + } + if (id == null) throw BuiltValueNullFieldError('Todo', 'id'); + if (note == null) throw BuiltValueNullFieldError('Todo', 'note'); + if (task == null) throw BuiltValueNullFieldError('Todo', 'task'); } @override - Todo rebuild(void updates(TodoBuilder b)) => + Todo rebuild(void Function(TodoBuilder b) updates) => (toBuilder()..update(updates)).build(); @override - TodoBuilder toBuilder() => new TodoBuilder()..replace(this); + TodoBuilder toBuilder() => TodoBuilder()..replace(this); @override bool operator ==(dynamic other) { @@ -164,19 +165,19 @@ class TodoBuilder implements Builder { @override void replace(Todo other) { - if (other == null) throw new ArgumentError.notNull('other'); + if (other == null) throw ArgumentError.notNull('other'); _$v = other as _$Todo; } @override - void update(void updates(TodoBuilder b)) { + void update(void Function(TodoBuilder b) updates) { if (updates != null) updates(this); } @override _$Todo build() { final _$result = - _$v ?? new _$Todo._(complete: complete, id: id, note: note, task: task); + _$v ?? _$Todo._(complete: complete, id: id, note: note, task: task); replace(_$result); return _$result; } diff --git a/built_redux/lib/models/visibility_filter.g.dart b/built_redux/lib/models/visibility_filter.g.dart index 339982fb..56773185 100644 --- a/built_redux/lib/models/visibility_filter.g.dart +++ b/built_redux/lib/models/visibility_filter.g.dart @@ -14,9 +14,9 @@ part of visibility_filter; // ignore_for_file: prefer_expression_function_bodies // ignore_for_file: sort_constructors_first -const VisibilityFilter _$all = const VisibilityFilter._('all'); -const VisibilityFilter _$active = const VisibilityFilter._('active'); -const VisibilityFilter _$completed = const VisibilityFilter._('completed'); +const VisibilityFilter _$all = VisibilityFilter._('all'); +const VisibilityFilter _$active = VisibilityFilter._('active'); +const VisibilityFilter _$completed = VisibilityFilter._('completed'); VisibilityFilter _$visibilityFilterValueOf(String name) { switch (name) { @@ -27,19 +27,19 @@ VisibilityFilter _$visibilityFilterValueOf(String name) { case 'completed': return _$completed; default: - throw new ArgumentError(name); + throw ArgumentError(name); } } final BuiltSet _$visibilityFilterValues = - new BuiltSet(const [ + BuiltSet(const [ _$all, _$active, _$completed, ]); Serializer _$visibilityFilterSerializer = - new _$VisibilityFilterSerializer(); + _$VisibilityFilterSerializer(); class _$VisibilityFilterSerializer implements PrimitiveSerializer { @@ -50,11 +50,11 @@ class _$VisibilityFilterSerializer @override Object serialize(Serializers serializers, VisibilityFilter object, - {FullType specifiedType: FullType.unspecified}) => + {FullType specifiedType = FullType.unspecified}) => object.name; @override VisibilityFilter deserialize(Serializers serializers, Object serialized, - {FullType specifiedType: FullType.unspecified}) => + {FullType specifiedType = FullType.unspecified}) => VisibilityFilter.valueOf(serialized as String); } diff --git a/built_redux/lib/presentation/add_edit_screen.dart b/built_redux/lib/presentation/add_edit_screen.dart index 8e984cba..0f5b9b87 100644 --- a/built_redux/lib/presentation/add_edit_screen.dart +++ b/built_redux/lib/presentation/add_edit_screen.dart @@ -7,7 +7,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:todos_app_core/todos_app_core.dart'; -typedef OnSaveCallback = Function(String task, String note); +typedef OnSaveCallback = void Function(String task, String note); class AddEditScreen extends StatefulWidget { final bool isEditing; diff --git a/built_redux/lib/presentation/stats_counter.dart b/built_redux/lib/presentation/stats_counter.dart index 16002f16..4218058b 100644 --- a/built_redux/lib/presentation/stats_counter.dart +++ b/built_redux/lib/presentation/stats_counter.dart @@ -55,7 +55,7 @@ class StatsCounter extends StatelessWidget { Padding( padding: EdgeInsets.only(bottom: 24.0), child: Text( - "$numActive", + '$numActive', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subhead, ), diff --git a/built_redux/test/all_tests.dart b/built_redux/test/all_tests.dart index 6f1ac2d9..45d9ff51 100644 --- a/built_redux/test/all_tests.dart +++ b/built_redux/test/all_tests.dart @@ -1,13 +1,13 @@ -import 'app_state_test.dart' as appState; -import 'file_storage_test.dart' as fileStorage; +import 'app_state_test.dart' as app_state; +import 'file_storage_test.dart' as file_storage; import 'middleware_test.dart' as middleware; import 'reducer_test.dart' as reducer; -import 'todos_repository_test.dart' as todosRepository; +import 'todos_repository_test.dart' as todos_repository; -main() { - appState.main(); - fileStorage.main(); +void main() { + app_state.main(); + file_storage.main(); middleware.main(); reducer.main(); - todosRepository.main(); + todos_repository.main(); } diff --git a/built_redux/test/app_state_test.dart b/built_redux/test/app_state_test.dart index a4e847e5..52b9d095 100644 --- a/built_redux/test/app_state_test.dart +++ b/built_redux/test/app_state_test.dart @@ -5,7 +5,7 @@ import 'package:built_redux_sample/models/models.dart'; import 'package:test/test.dart'; -main() { +void main() { group('Selector Tests', () { test('should calculate the number of active todos', () { final state = AppState.fromTodos([ diff --git a/built_redux/test/file_storage_test.dart b/built_redux/test/file_storage_test.dart index c43585aa..48328e22 100644 --- a/built_redux/test/file_storage_test.dart +++ b/built_redux/test/file_storage_test.dart @@ -8,9 +8,9 @@ import 'package:built_redux_sample/data/file_storage.dart'; import 'package:built_redux_sample/models/todo.dart'; import 'package:test/test.dart'; -main() { +void main() { group('FileStorage', () { - final todos = [Todo("Yep")]; + final todos = [Todo('Yep')]; final directory = Directory.systemTemp.createTemp('__storage_test__'); final storage = FileStorage( '_test_tag_', diff --git a/built_redux/test/middleware_test.dart b/built_redux/test/middleware_test.dart index 8d4d640d..687acacc 100644 --- a/built_redux/test/middleware_test.dart +++ b/built_redux/test/middleware_test.dart @@ -17,7 +17,7 @@ import 'package:test/test.dart'; /// mock classes to verify the behavior of the TodosService. class MockTodosService extends Mock implements TodosRepository {} -main() { +void main() { group('TodosMiddleware', () { test( 'should load todos when the app dispatches a fetch action and the app is loading', @@ -30,7 +30,7 @@ main() { AppActions(), middleware: [middleware], ); - final todos = [Todo("Task")]; + final todos = [Todo('Task')]; // We'll use our mock throughout the tests to set certain conditions. In // this first test, we want to mock out our file storage to return a @@ -53,7 +53,7 @@ main() { AppActions(), middleware: [middleware], ); - final todos = [Todo("Task")]; + final todos = [Todo('Task')]; // We'll use our mock throughout the tests to set certain conditions. In // this first test, we want to mock out our file storage to return a @@ -74,19 +74,19 @@ main() { AppActions(), middleware: [middleware], ); - final todos = [Todo("Task")]; + final todos = [Todo('Task')]; when(service.saveTodos(todos)).thenAnswer((_) => Future.value(todos)); // Dispatch all actions that update our Todos. We expect each to // trigger a call to our Storage Service. - store.actions.addTodoAction(Todo("Wat")); + store.actions.addTodoAction(Todo('Wat')); store.actions.clearCompletedAction(); - store.actions.deleteTodoAction(""); + store.actions.deleteTodoAction(''); store.actions.toggleAllAction(); store.actions.updateTodoAction(UpdateTodoActionPayload( - "", - Todo("Update"), + '', + Todo('Update'), )); verify(service.saveTodos(any)).called(5); diff --git a/built_redux/test/reducer_test.dart b/built_redux/test/reducer_test.dart index b4df46c0..668d5498 100644 --- a/built_redux/test/reducer_test.dart +++ b/built_redux/test/reducer_test.dart @@ -8,10 +8,10 @@ import 'package:built_redux_sample/models/models.dart'; import 'package:built_redux_sample/reducers/reducers.dart'; import 'package:test/test.dart'; -main() { +void main() { group('State Reducer', () { test('should add a todo to the list in response to an AddTodoAction', () { - final todo = Todo("Hallo"); + final todo = Todo('Hallo'); final store = Store( reducerBuilder.build(), AppState(), @@ -24,7 +24,7 @@ main() { }); test('should remove from the list in response to a DeleteTodoAction', () { - final todo = Todo("Hallo"); + final todo = Todo('Hallo'); final store = Store( reducerBuilder.build(), AppState.fromTodos([todo]), @@ -39,8 +39,8 @@ main() { }); test('should update a todo in response to an UpdateTodoAction', () { - final todo = Todo("Hallo"); - final updatedTodo = todo.rebuild((b) => b.task = "Tschuss"); + final todo = Todo('Hallo'); + final updatedTodo = todo.rebuild((b) => b.task = 'Tschuss'); final store = Store( reducerBuilder.build(), AppState.fromTodos([todo]), @@ -54,10 +54,10 @@ main() { }); test('should clear completed todos', () { - final todo1 = Todo("Hallo"); + final todo1 = Todo('Hallo'); final todo2 = Todo.builder( (b) => b - ..task = "Tschüss" + ..task = 'Tschüss' ..complete = true, ); final store = Store( @@ -74,10 +74,10 @@ main() { }); test('should mark all as completed if some todos are incomplete', () { - final todo1 = Todo("Hallo"); + final todo1 = Todo('Hallo'); final todo2 = Todo.builder( (b) => b - ..task = "Tschüss" + ..task = 'Tschüss' ..complete = true, ); final store = Store( @@ -96,12 +96,12 @@ main() { test('should mark all as incomplete if all todos are complete', () { final todo1 = Todo.builder( (b) => b - ..task = "Hallo" + ..task = 'Hallo' ..complete = true, ); final todo2 = Todo.builder( (b) => b - ..task = "Tschüss" + ..task = 'Tschüss' ..complete = true, ); final store = Store( diff --git a/built_redux/test/todos_repository_test.dart b/built_redux/test/todos_repository_test.dart index 906f7a09..518dca45 100644 --- a/built_redux/test/todos_repository_test.dart +++ b/built_redux/test/todos_repository_test.dart @@ -17,7 +17,7 @@ class MockFileStorage extends Mock implements FileStorage {} class MockWebService extends Mock implements WebClient {} -main() { +void main() { group('TodosRepository', () { test( 'should load todos from File Storage if they exist without calling the web service', @@ -28,7 +28,7 @@ main() { fileStorage: fileStorage, webClient: webService, ); - final todos = [Todo("Task")]; + final todos = [Todo('Task')]; // We'll use our mock throughout the tests to set certain conditions. In // this first test, we want to mock out our file storage to return a @@ -48,12 +48,12 @@ main() { fileStorage: fileStorage, webClient: webService, ); - final todos = [Todo("Task")]; + final todos = [Todo('Task')]; // In this instance, we'll ask our Mock to throw an error. When it does, // we expect the web service to be called instead. when(fileStorage.loadTodos()) - .thenAnswer((_) => Future>.error("Oh no")); + .thenAnswer((_) => Future>.error('Oh no')); when(webService.fetchTodos()).thenAnswer((_) => Future.value(todos)); // We check that the correct todos were returned, and that the @@ -71,10 +71,10 @@ main() { fileStorage: fileStorage, webClient: webService, ); - final todos = [Todo("Task")]; + final todos = [Todo('Task')]; when(fileStorage.loadTodos()) - .thenAnswer((_) => Future>.error("Oh no")); + .thenAnswer((_) => Future>.error('Oh no')); when(webService.fetchTodos()).thenAnswer((_) => Future.value(todos)); expect(await todosService.loadTodos(), todos); @@ -88,7 +88,7 @@ main() { fileStorage: fileStorage, webClient: webService, ); - final todos = [Todo("Task")]; + final todos = [Todo('Task')]; when(fileStorage.saveTodos(todos)).thenAnswer((_) async => null); when(webService.postTodos(todos)).thenAnswer((_) async => true); diff --git a/built_redux/test_driver/todo_app_test.dart b/built_redux/test_driver/todo_app_test.dart index 14ddb566..ad93f5a5 100644 --- a/built_redux/test_driver/todo_app_test.dart +++ b/built_redux/test_driver/todo_app_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } diff --git a/firebase_flutter_repository/test/firebase_flutter_repository_test.dart b/firebase_flutter_repository/test/firebase_flutter_repository_test.dart index 17fda5ba..2023577e 100644 --- a/firebase_flutter_repository/test/firebase_flutter_repository_test.dart +++ b/firebase_flutter_repository/test/firebase_flutter_repository_test.dart @@ -12,7 +12,7 @@ import 'package:mockito/mockito.dart'; import 'package:test/test.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -main() { +void main() { group('FirebaseUserRepository', () { test('should log the user in anonymously', () async { final auth = MockFirebaseAuth(); @@ -109,10 +109,12 @@ class MockFirestore extends Mock implements Firestore {} class MockCollectionReference extends Mock implements CollectionReference {} class MockDocumentSnapshot extends Mock implements DocumentSnapshot { + @override final Map data; MockDocumentSnapshot([this.data]); + @override dynamic operator [](String key) => data[key]; } @@ -121,6 +123,7 @@ class MockDocumentReference extends Mock implements DocumentReference {} class MockQuerySnapshot extends Mock implements QuerySnapshot {} class MockAuthResult extends Mock implements AuthResult { + @override final user = MockFirebaseUser(); } diff --git a/firebase_rtdb_flutter_repository/test/firebase_flutter_repository_test.dart b/firebase_rtdb_flutter_repository/test/firebase_flutter_repository_test.dart index 34d3281a..66f8eae1 100644 --- a/firebase_rtdb_flutter_repository/test/firebase_flutter_repository_test.dart +++ b/firebase_rtdb_flutter_repository/test/firebase_flutter_repository_test.dart @@ -12,7 +12,7 @@ import 'package:mockito/mockito.dart'; import 'package:test/test.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -main() { +void main() { group('FirebaseUserRepository', () { test('should log the user in anonymously', () async { final auth = MockFirebaseAuth(); @@ -73,7 +73,7 @@ main() { final documentMap = {todo.id: document}; final event = MockEvent(); final eventIterator = Stream.fromIterable([event]); - final data = {"key": todo.id, "value": documentMap}; + final data = {'key': todo.id, 'value': documentMap}; final snapshot = MockDataSnapshot(data); final repository = FirebaseReactiveTodosRepository(firebaseDatabase); diff --git a/firestore_redux/lib/localization.dart b/firestore_redux/lib/localization.dart index 3267ee2f..c2715fb6 100644 --- a/firestore_redux/lib/localization.dart +++ b/firestore_redux/lib/localization.dart @@ -14,7 +14,7 @@ class FirestoreReduxLocalizations { ); } - String get appTitle => "Firestore Redux Example"; + String get appTitle => 'Firestore Redux Example'; } class FirestoreReduxLocalizationsDelegate @@ -28,5 +28,5 @@ class FirestoreReduxLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/firestore_redux/lib/middleware/store_todos_middleware.dart b/firestore_redux/lib/middleware/store_todos_middleware.dart index 1f66be73..01f95629 100644 --- a/firestore_redux/lib/middleware/store_todos_middleware.dart +++ b/firestore_redux/lib/middleware/store_todos_middleware.dart @@ -121,11 +121,13 @@ void Function( for (var todo in todos) { if (allCompleteSelector(todos)) { - if (todo.complete) + if (todo.complete) { repository.updateTodo(todo.copyWith(complete: false).toEntity()); + } } else { - if (!todo.complete) + if (!todo.complete) { repository.updateTodo(todo.copyWith(complete: true).toEntity()); + } } } }; diff --git a/firestore_redux/lib/models/todo.dart b/firestore_redux/lib/models/todo.dart index 88917717..25ca0bd6 100644 --- a/firestore_redux/lib/models/todo.dart +++ b/firestore_redux/lib/models/todo.dart @@ -14,8 +14,8 @@ class Todo { final String task; Todo(this.task, {this.complete = false, String note = '', String id}) - : this.note = note ?? '', - this.id = id ?? Uuid().generateV4(); + : note = note ?? '', + id = id ?? Uuid().generateV4(); Todo copyWith({bool complete, String id, String note, String task}) { return Todo( diff --git a/firestore_redux/lib/presentation/add_edit_screen.dart b/firestore_redux/lib/presentation/add_edit_screen.dart index 57c775f4..fa15f4b7 100644 --- a/firestore_redux/lib/presentation/add_edit_screen.dart +++ b/firestore_redux/lib/presentation/add_edit_screen.dart @@ -7,7 +7,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:todos_app_core/todos_app_core.dart'; -typedef OnSaveCallback = Function(String task, String note); +typedef OnSaveCallback = void Function(String task, String note); class AddEditScreen extends StatefulWidget { final bool isEditing; diff --git a/firestore_redux/lib/presentation/stats_counter.dart b/firestore_redux/lib/presentation/stats_counter.dart index 90ed4dd3..95346166 100644 --- a/firestore_redux/lib/presentation/stats_counter.dart +++ b/firestore_redux/lib/presentation/stats_counter.dart @@ -57,7 +57,7 @@ class StatsCounter extends StatelessWidget { Padding( padding: EdgeInsets.only(bottom: 24.0), child: Text( - "$numActive", + '$numActive', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subhead, ), diff --git a/firestore_redux/lib/presentation/typedefs.dart b/firestore_redux/lib/presentation/typedefs.dart index 90fcaa0a..1ac56175 100644 --- a/firestore_redux/lib/presentation/typedefs.dart +++ b/firestore_redux/lib/presentation/typedefs.dart @@ -4,8 +4,8 @@ import 'package:fire_redux_sample/models/models.dart'; -typedef TodoAdder(Todo todo); +typedef TodoAdder = void Function(Todo todo); -typedef TodoRemover(String id); +typedef TodoRemover = void Function(String id); -typedef TodoUpdater(String id, Todo todo); +typedef TodoUpdater = void Function(String id, Todo todo); diff --git a/firestore_redux/test/all_tests.dart b/firestore_redux/test/all_tests.dart index a92d5d02..53c95150 100644 --- a/firestore_redux/test/all_tests.dart +++ b/firestore_redux/test/all_tests.dart @@ -2,7 +2,7 @@ import 'middleware_test.dart' as middleware; import 'reducer_test.dart' as reducer; import 'selectors_test.dart' as selector; -main() { +void main() { middleware.main(); reducer.main(); selector.main(); diff --git a/firestore_redux/test/middleware_test.dart b/firestore_redux/test/middleware_test.dart index 974ae461..f2d37ed8 100644 --- a/firestore_redux/test/middleware_test.dart +++ b/firestore_redux/test/middleware_test.dart @@ -21,7 +21,7 @@ class MockUserRepository extends Mock implements UserRepository {} class MockMiddleware extends Mock implements MiddlewareClass {} -main() { +void main() { group('Middleware', () { test('should log in and start listening for changes', () { final todosRepository = MockReactiveTodosRepository(); @@ -76,7 +76,7 @@ main() { }); test('should send todos to the repository', () { - final todo = Todo("T"); + final todo = Todo('T'); final todosRepository = MockReactiveTodosRepository(); final userRepository = MockUserRepository(); final store = Store( @@ -90,9 +90,9 @@ main() { }); test('should clear the completed todos from the repository', () { - final todoA = Todo("A"); - final todoB = Todo("B", complete: true); - final todoC = Todo("C", complete: true); + final todoA = Todo('A'); + final todoB = Todo('B', complete: true); + final todoC = Todo('C', complete: true); final todosRepository = MockReactiveTodosRepository(); final userRepository = MockUserRepository(); final store = Store( @@ -111,8 +111,8 @@ main() { }); test('should inform the repository to toggle all todos active', () { - final todoA = Todo("A", complete: true); - final todoB = Todo("B", complete: true); + final todoA = Todo('A', complete: true); + final todoB = Todo('B', complete: true); final todosRepository = MockReactiveTodosRepository(); final userRepository = MockUserRepository(); final store = Store( @@ -133,8 +133,8 @@ main() { }); test('should inform the repository to toggle all todos complete', () { - final todoA = Todo("A"); - final todoB = Todo("B", complete: true); + final todoA = Todo('A'); + final todoB = Todo('B', complete: true); final todosRepository = MockReactiveTodosRepository(); final userRepository = MockUserRepository(); final store = Store( @@ -153,8 +153,8 @@ main() { }); test('should update a todo on firestore', () { - final todo = Todo("A"); - final update = todo.copyWith(task: "B"); + final todo = Todo('A'); + final update = todo.copyWith(task: 'B'); final todosRepository = MockReactiveTodosRepository(); final userRepository = MockUserRepository(); final store = Store( @@ -169,7 +169,7 @@ main() { }); test('should delete a todo on firestore', () { - final todo = Todo("A"); + final todo = Todo('A'); final todosRepository = MockReactiveTodosRepository(); final userRepository = MockUserRepository(); final store = Store( diff --git a/firestore_redux/test/reducer_test.dart b/firestore_redux/test/reducer_test.dart index 98cb6c67..2fee7a79 100644 --- a/firestore_redux/test/reducer_test.dart +++ b/firestore_redux/test/reducer_test.dart @@ -9,7 +9,7 @@ import 'package:fire_redux_sample/selectors/selectors.dart'; import 'package:redux/redux.dart'; import 'package:test/test.dart'; -main() { +void main() { group('State Reducer', () { test('should load todos into store', () { final todo1 = Todo('a'); diff --git a/firestore_redux/test/selectors_test.dart b/firestore_redux/test/selectors_test.dart index 0de98eb7..46011cfb 100644 --- a/firestore_redux/test/selectors_test.dart +++ b/firestore_redux/test/selectors_test.dart @@ -7,7 +7,7 @@ import 'package:fire_redux_sample/selectors/selectors.dart'; import 'package:quiver/core.dart'; import 'package:test/test.dart'; -main() { +void main() { group('Selectors', () { test('should list the active todos', () { final todoA = Todo('a'); @@ -93,7 +93,7 @@ main() { }); test('should return an Optional todo based on id', () { - final todo1 = Todo('a', id: "1"); + final todo1 = Todo('a', id: '1'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); final todos = [ @@ -102,11 +102,11 @@ main() { todo3, ]; - expect(todoSelector(todos, "1"), Optional.of(todo1)); + expect(todoSelector(todos, '1'), Optional.of(todo1)); }); test('should return an absent Optional if the id is not found', () { - final todo1 = Todo('a', id: "1"); + final todo1 = Todo('a', id: '1'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); final todos = [ @@ -115,7 +115,7 @@ main() { todo3, ]; - expect(todoSelector(todos, "2"), Optional.absent()); + expect(todoSelector(todos, '2'), Optional.absent()); }); }); } diff --git a/firestore_redux/test_driver/todo_app_test.dart b/firestore_redux/test_driver/todo_app_test.dart index 14ddb566..ad93f5a5 100644 --- a/firestore_redux/test_driver/todo_app_test.dart +++ b/firestore_redux/test_driver/todo_app_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } diff --git a/frideos_library/lib/app_state.dart b/frideos_library/lib/app_state.dart index fb08e6e1..9484416c 100644 --- a/frideos_library/lib/app_state.dart +++ b/frideos_library/lib/app_state.dart @@ -23,9 +23,9 @@ class AppState extends AppStateModel { final tabController = StreamedValue(initialData: AppTab.todos); @override - init() { + void init() { respository = const TodosRepositoryFlutter( - fileStorage: const FileStorage( + fileStorage: FileStorage( 'frideos_library', getApplicationDocumentsDirectory, ), @@ -38,7 +38,7 @@ class AppState extends AppStateModel { } @override - dispose() { + void dispose() { todosBloc.dispose(); statsBloc.dispose(); tabController.dispose(); diff --git a/frideos_library/lib/blocs/todos_bloc.dart b/frideos_library/lib/blocs/todos_bloc.dart index 3acf9c7b..6f791446 100644 --- a/frideos_library/lib/blocs/todos_bloc.dart +++ b/frideos_library/lib/blocs/todos_bloc.dart @@ -11,7 +11,7 @@ class TodosBloc { _init(); } - _init() async { + void _init() async { // Load the todos from the repository await loadTodos(); @@ -47,7 +47,7 @@ class TodosBloc { // void loadTodos() async { var todos = await repository.loadTodos(); - todosItems.value = todos?.map(Todo.fromEntity).toList() ?? []; + todosItems.value = todos.map(Todo.fromEntity).toList() ?? []; todosSender.send(todosItems.value); } @@ -139,12 +139,13 @@ class TodosBloc { static List filterTodos(List todos, VisibilityFilter filter) { return todos.where((todo) { switch (filter) { - case VisibilityFilter.all: - return true; case VisibilityFilter.active: return !todo.complete; case VisibilityFilter.completed: return todo.complete; + case VisibilityFilter.all: + default: + return true; } }).toList(); } diff --git a/frideos_library/lib/localization.dart b/frideos_library/lib/localization.dart index 2bb02799..50f117bd 100644 --- a/frideos_library/lib/localization.dart +++ b/frideos_library/lib/localization.dart @@ -8,7 +8,7 @@ class FrideosLocalizations { context, FrideosLocalizations); } - String get appTitle => "Frideos Example"; + String get appTitle => 'Frideos Example'; } class FrideosLocalizationsDelegate @@ -22,5 +22,5 @@ class FrideosLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/frideos_library/lib/models/todo.dart b/frideos_library/lib/models/todo.dart index 3a169765..53ce9976 100644 --- a/frideos_library/lib/models/todo.dart +++ b/frideos_library/lib/models/todo.dart @@ -8,8 +8,8 @@ class Todo { final String task; Todo(this.task, {this.complete = false, String note = '', String id}) - : this.note = note ?? '', - this.id = id ?? Uuid().generateV4(); + : note = note ?? '', + id = id ?? Uuid().generateV4(); Todo copyWith({bool complete, String id, String note, String task}) { return Todo( diff --git a/frideos_library/lib/screens/add_edit_screen.dart b/frideos_library/lib/screens/add_edit_screen.dart index f1e8ecd1..872a18f9 100644 --- a/frideos_library/lib/screens/add_edit_screen.dart +++ b/frideos_library/lib/screens/add_edit_screen.dart @@ -7,7 +7,6 @@ import 'package:todos_app_core/todos_app_core.dart'; import 'package:frideos/frideos.dart'; import 'package:frideos_library/app_state.dart'; -import 'package:frideos_library/blocs/todos_bloc.dart'; import 'package:frideos_library/models/models.dart'; class AddEditScreen extends StatefulWidget { @@ -33,7 +32,7 @@ class _AddEditScreenState extends State { @override Widget build(BuildContext context) { - final TodosBloc bloc = AppStateProvider.of(context).todosBloc; + final bloc = AppStateProvider.of(context).todosBloc; var isEditing = widget.isEditing; return ValueBuilder( diff --git a/frideos_library/lib/screens/detail_screen.dart b/frideos_library/lib/screens/detail_screen.dart index df21816c..3d5c7929 100644 --- a/frideos_library/lib/screens/detail_screen.dart +++ b/frideos_library/lib/screens/detail_screen.dart @@ -5,7 +5,6 @@ import 'package:todos_app_core/todos_app_core.dart'; import 'package:frideos/frideos.dart'; import 'package:frideos_library/app_state.dart'; -import 'package:frideos_library/blocs/todos_bloc.dart'; import 'package:frideos_library/models/models.dart'; import 'package:frideos_library/screens/add_edit_screen.dart'; import 'package:frideos_library/widgets/loading.dart'; @@ -15,7 +14,7 @@ class DetailScreen extends StatelessWidget { @override Widget build(BuildContext context) { - TodosBloc bloc = AppStateProvider.of(context).todosBloc; + final bloc = AppStateProvider.of(context).todosBloc; return ValueBuilder( streamed: bloc.currentTodo, diff --git a/frideos_library/lib/screens/homescreen.dart b/frideos_library/lib/screens/homescreen.dart index 325e1bdc..5da926b9 100644 --- a/frideos_library/lib/screens/homescreen.dart +++ b/frideos_library/lib/screens/homescreen.dart @@ -16,7 +16,7 @@ import 'package:frideos_library/widgets/stats_counter.dart'; class HomeScreen extends StatelessWidget { @override Widget build(BuildContext context) { - final TodosBloc bloc = AppStateProvider.of(context).todosBloc; + final bloc = AppStateProvider.of(context).todosBloc; final tabController = AppStateProvider.of(context).tabController; return ValueBuilder( diff --git a/frideos_library/lib/widgets/stats_counter.dart b/frideos_library/lib/widgets/stats_counter.dart index 9c43ab56..6014fd4b 100644 --- a/frideos_library/lib/widgets/stats_counter.dart +++ b/frideos_library/lib/widgets/stats_counter.dart @@ -47,7 +47,7 @@ class StatsCounter extends StatelessWidget { streamed: bloc.numActive, builder: (context, snapshot) { return Text( - "${snapshot.data ?? 0}", + '${snapshot.data ?? 0}', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subhead, ); diff --git a/frideos_library/test/stats_bloc_test.dart b/frideos_library/test/stats_bloc_test.dart index b3caea52..2fbeae2b 100644 --- a/frideos_library/test/stats_bloc_test.dart +++ b/frideos_library/test/stats_bloc_test.dart @@ -12,7 +12,7 @@ class MockRepository extends TodosRepository { List entities; MockRepository(List todos) - : this.entities = todos.map((it) => it.toEntity()).toList(); + : entities = todos.map((it) => it.toEntity()).toList(); @override Future> loadTodos() { @@ -25,7 +25,7 @@ class MockRepository extends TodosRepository { } } -main() { +void main() { group('StatsBloc', () { test('should stream the number of active todos', () async { final statsBloc = StatsBloc(); @@ -51,9 +51,9 @@ main() { final todos = [ Todo('a'), Todo('b'), - Todo("Hallo", complete: true), - Todo("Friend", complete: true), - Todo("Flutter", complete: true), + Todo('Hallo', complete: true), + Todo('Friend', complete: true), + Todo('Flutter', complete: true), ]; final todosBloc = TodosBloc(repository: MockRepository(todos)); diff --git a/frideos_library/test/todos_bloc_test.dart b/frideos_library/test/todos_bloc_test.dart index 229ce99e..e3179f58 100644 --- a/frideos_library/test/todos_bloc_test.dart +++ b/frideos_library/test/todos_bloc_test.dart @@ -12,7 +12,7 @@ class MockRepository extends TodosRepository { List entities; MockRepository(List todos) - : this.entities = todos.map((it) => it.toEntity()).toList(); + : entities = todos.map((it) => it.toEntity()).toList(); @override Future> loadTodos() { @@ -25,7 +25,7 @@ class MockRepository extends TodosRepository { } } -main() { +void main() { group('TodosBloc', () { test('Add a new todo', () async { final todosBloc = TodosBloc( diff --git a/frideos_library/test_driver/main_test.dart b/frideos_library/test_driver/main_test.dart index 3cc3a0a3..da7a453e 100644 --- a/frideos_library/test_driver/main_test.dart +++ b/frideos_library/test_driver/main_test.dart @@ -17,12 +17,12 @@ void main() { }); tearDownAll(() async { - if (driver != null) driver.close(); + if (driver != null) await driver.close(); }); test('tap on the floating action button; verify counter', () async { // Finds the floating action button (fab) to tap on - SerializableFinder fab = find.byTooltip('Increment'); + final fab = find.byTooltip('Increment'); // Wait for the floating action button to appear await driver.waitFor(fab); diff --git a/frideos_library/test_driver/todo_app_test.dart b/frideos_library/test_driver/todo_app_test.dart index c159812d..1c5a586c 100644 --- a/frideos_library/test_driver/todo_app_test.dart +++ b/frideos_library/test_driver/todo_app_test.dart @@ -1,5 +1,5 @@ -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } diff --git a/inherited_widget/lib/localization.dart b/inherited_widget/lib/localization.dart index 9a4b3f1e..e28c3f10 100644 --- a/inherited_widget/lib/localization.dart +++ b/inherited_widget/lib/localization.dart @@ -12,7 +12,7 @@ class InheritedWidgetLocalizations { context, InheritedWidgetLocalizations); } - String get appTitle => "InheritedWidget Example"; + String get appTitle => 'InheritedWidget Example'; } class InheritedWidgetLocalizationsDelegate @@ -26,5 +26,5 @@ class InheritedWidgetLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/inherited_widget/lib/models.dart b/inherited_widget/lib/models.dart index 4ae4ce1e..3fedbd05 100644 --- a/inherited_widget/lib/models.dart +++ b/inherited_widget/lib/models.dart @@ -21,12 +21,14 @@ class AppState { bool get allComplete => todos.every((todo) => todo.complete); List get filteredTodos => todos.where((todo) { - if (activeFilter == VisibilityFilter.all) { - return true; - } else if (activeFilter == VisibilityFilter.active) { - return !todo.complete; - } else if (activeFilter == VisibilityFilter.completed) { - return todo.complete; + switch (activeFilter) { + case VisibilityFilter.active: + return !todo.complete; + case VisibilityFilter.completed: + return todo.complete; + case VisibilityFilter.all: + default: + return true; } }).toList(); @@ -54,9 +56,9 @@ class AppState { } void toggleAll() { - final allCompleted = this.allComplete; + final allCurrentlyComplete = allComplete; - todos.forEach((todo) => todo.complete = !allCompleted); + todos.forEach((todo) => todo.complete = !allCurrentlyComplete); } @override @@ -76,7 +78,7 @@ class Todo { String task; Todo(this.task, {this.complete = false, this.note = '', String id}) - : this.id = id ?? Uuid().generateV4(); + : id = id ?? Uuid().generateV4(); @override int get hashCode => diff --git a/inherited_widget/lib/screens/home_screen.dart b/inherited_widget/lib/screens/home_screen.dart index 1538d2ba..ab19a8ba 100644 --- a/inherited_widget/lib/screens/home_screen.dart +++ b/inherited_widget/lib/screens/home_screen.dart @@ -85,7 +85,7 @@ class HomeScreenState extends State { ); } - _updateTab(AppTab tab) { + void _updateTab(AppTab tab) { setState(() { activeTab = tab; }); diff --git a/inherited_widget/lib/state_container.dart b/inherited_widget/lib/state_container.dart index 6b357bf2..ad8ca0f0 100644 --- a/inherited_widget/lib/state_container.dart +++ b/inherited_widget/lib/state_container.dart @@ -17,7 +17,7 @@ class StateContainer extends StatefulWidget { StateContainer({ @required this.child, this.repository = const TodosRepositoryFlutter( - fileStorage: const FileStorage( + fileStorage: FileStorage( 'inherited_widget_sample', getApplicationDocumentsDirectory, ), @@ -142,7 +142,7 @@ class _InheritedStateContainer extends InheritedWidget { bool updateShouldNotify(_InheritedStateContainer old) => true; } -typedef TodoUpdater( +typedef TodoUpdater = void Function( Todo todo, { bool complete, String id, diff --git a/inherited_widget/lib/widgets/stats_counter.dart b/inherited_widget/lib/widgets/stats_counter.dart index bbde5f58..b73add39 100644 --- a/inherited_widget/lib/widgets/stats_counter.dart +++ b/inherited_widget/lib/widgets/stats_counter.dart @@ -45,7 +45,7 @@ class StatsCounter extends StatelessWidget { Padding( padding: EdgeInsets.only(bottom: 24.0), child: Text( - "$numActive", + '$numActive', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subhead, ), diff --git a/inherited_widget/test/app_state_test.dart b/inherited_widget/test/app_state_test.dart index 78c6fb41..ba99318c 100644 --- a/inherited_widget/test/app_state_test.dart +++ b/inherited_widget/test/app_state_test.dart @@ -5,7 +5,7 @@ import 'package:inherited_widget_sample/models.dart'; import 'package:test/test.dart'; -main() { +void main() { group('AppState', () { test('should check if there are completed todos', () { final state = AppState(todos: [ diff --git a/inherited_widget/test_driver/todo_app_test.dart b/inherited_widget/test_driver/todo_app_test.dart index 14ddb566..ad93f5a5 100644 --- a/inherited_widget/test_driver/todo_app_test.dart +++ b/inherited_widget/test_driver/todo_app_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } diff --git a/integration_tests/lib/integration_tests.dart b/integration_tests/lib/integration_tests.dart index 7d9fe8a6..dda79c03 100644 --- a/integration_tests/lib/integration_tests.dart +++ b/integration_tests/lib/integration_tests.dart @@ -9,19 +9,19 @@ import 'package:test/test.dart'; import 'page_objects/page_objects.dart'; -main() { +void main() { group('Todo App Test', () { FlutterDriver driver; HomeTestScreen homeScreen; setUpAll(() async { driver = await FlutterDriver.connect(); - homeScreen = new HomeTestScreen(driver); + homeScreen = HomeTestScreen(driver); }); tearDownAll(() async { if (driver != null) { - driver.close(); + await driver.close(); } }); @@ -51,7 +51,7 @@ main() { }); test('should be able to delete a todo on the details screen', () async { - final detailsScreen = new DetailsTestScreen(driver); + final detailsScreen = DetailsTestScreen(driver); await detailsScreen.tapDeleteButton(); diff --git a/integration_tests/lib/page_objects/elements/todo_item_element.dart b/integration_tests/lib/page_objects/elements/todo_item_element.dart index c2bb1105..87dcc40e 100644 --- a/integration_tests/lib/page_objects/elements/todo_item_element.dart +++ b/integration_tests/lib/page_objects/elements/todo_item_element.dart @@ -42,6 +42,6 @@ class TodoItemElement extends TestElement { DetailsTestScreen tap() { driver.tap(_taskFinder); - return new DetailsTestScreen(driver); + return DetailsTestScreen(driver); } } diff --git a/integration_tests/lib/page_objects/elements/todo_list_element.dart b/integration_tests/lib/page_objects/elements/todo_list_element.dart index b998d7a4..6a8f7657 100644 --- a/integration_tests/lib/page_objects/elements/todo_list_element.dart +++ b/integration_tests/lib/page_objects/elements/todo_list_element.dart @@ -30,7 +30,7 @@ class TodoListElement extends TestElement { Future get isReady => widgetExists(driver, _todoListFinder); - TodoItemElement todoItem(String id) => new TodoItemElement(id, driver); + TodoItemElement todoItem(String id) => TodoItemElement(id, driver); - TodoItemElement todoItemAbsent(String id) => new TodoItemElement(id, driver); + TodoItemElement todoItemAbsent(String id) => TodoItemElement(id, driver); } diff --git a/integration_tests/lib/page_objects/screens/details_test_screen.dart b/integration_tests/lib/page_objects/screens/details_test_screen.dart index 1c118b66..f934b787 100644 --- a/integration_tests/lib/page_objects/screens/details_test_screen.dart +++ b/integration_tests/lib/page_objects/screens/details_test_screen.dart @@ -38,7 +38,7 @@ class DetailsTestScreen extends TestScreen { EditTestScreen tapEditTodoButton() { driver.tap(_editTodoFabFinder); - return new EditTestScreen(driver); + return EditTestScreen(driver); } Future tapDeleteButton() async { diff --git a/integration_tests/lib/page_objects/screens/home_test_screen.dart b/integration_tests/lib/page_objects/screens/home_test_screen.dart index f94c04dc..16628e65 100644 --- a/integration_tests/lib/page_objects/screens/home_test_screen.dart +++ b/integration_tests/lib/page_objects/screens/home_test_screen.dart @@ -26,42 +26,41 @@ class HomeTestScreen extends TestScreen { @override Future isLoading({Duration timeout}) async => - new TodoListElement(driver).isLoading; + TodoListElement(driver).isLoading; @override - Future isReady({Duration timeout}) => - new TodoListElement(driver).isReady; + Future isReady({Duration timeout}) => TodoListElement(driver).isReady; TodoListElement get todoList { - return new TodoListElement(driver); + return TodoListElement(driver); } StatsElement get stats { - return new StatsElement(driver); + return StatsElement(driver); } TodoListElement tapTodosTab() { driver.tap(_todosTabFinder); - return new TodoListElement(driver); + return TodoListElement(driver); } StatsElement tapStatsTab() { driver.tap(_statsTabFinder); - return new StatsElement(driver); + return StatsElement(driver); } FiltersElement tapFilterButton() { driver.tap(_filterButtonFinder); - return new FiltersElement(driver); + return FiltersElement(driver); } ExtraActionsElement tapExtraActionsButton() { driver.tap(_extraActionsButtonFinder); - return new ExtraActionsElement(driver); + return ExtraActionsElement(driver); } Future get snackbarVisible { @@ -71,7 +70,7 @@ class HomeTestScreen extends TestScreen { AddTestScreen tapAddTodoButton() { driver.tap(_addTodoButtonFinder); - return new AddTestScreen(driver); + return AddTestScreen(driver); } DetailsTestScreen tapTodo(String text) { diff --git a/mobx/analysis_options.yaml b/mobx/analysis_options.yaml deleted file mode 100644 index ce73f66e..00000000 --- a/mobx/analysis_options.yaml +++ /dev/null @@ -1,5 +0,0 @@ -include: package:lint/analysis_options.yaml - -linter: - rules: - prefer_constructors_over_static_methods: false diff --git a/mobx/lib/localization.dart b/mobx/lib/localization.dart index 8183786a..a83b2f36 100644 --- a/mobx/lib/localization.dart +++ b/mobx/lib/localization.dart @@ -11,7 +11,7 @@ class MobxLocalizations { return Localizations.of(context, MobxLocalizations); } - String get appTitle => "Todos with MobX"; + String get appTitle => 'Todos with MobX'; } class MobxLocalizationsDelegate @@ -25,5 +25,5 @@ class MobxLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/mobx/pubspec.yaml b/mobx/pubspec.yaml index c748fc79..d2d189c2 100644 --- a/mobx/pubspec.yaml +++ b/mobx/pubspec.yaml @@ -31,9 +31,8 @@ dependencies: sdk: flutter dev_dependencies: - lint: 1.1.0 - mobx_codegen: ^0.3.13 - build_runner: ^1.7.0 + mobx_codegen: ^0.4.0+1 + build_runner: ^1.7.3 test: flutter_driver: sdk: flutter diff --git a/mobx/test/home_screen_test.dart b/mobx/test/home_screen_test.dart index 662aaaad..7795c53e 100644 --- a/mobx/test/home_screen_test.dart +++ b/mobx/test/home_screen_test.dart @@ -28,7 +28,7 @@ void main() { }); testWidgets('should display a list after loading todos', (tester) async { - final SemanticsHandle handle = tester.ensureSemantics(); + final handle = tester.ensureSemantics(); await tester.pumpWidget(_TestWidget()); await tester.pumpAndSettle(); diff --git a/mobx/test_driver/todo_app_test.dart b/mobx/test_driver/todo_app_test.dart index 14ddb566..ad93f5a5 100644 --- a/mobx/test_driver/todo_app_test.dart +++ b/mobx/test_driver/todo_app_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } diff --git a/mvc/lib/src/App.dart b/mvc/lib/src/App.dart index e748c9a6..9d7d32b2 100644 --- a/mvc/lib/src/App.dart +++ b/mvc/lib/src/App.dart @@ -23,6 +23,7 @@ class MVCApp extends AppMVC { static String get title => _app.title.toString(); + @override Widget build(BuildContext context) { _app = MaterialApp( title: 'mvc example', diff --git a/mvc/lib/src/Controller.dart b/mvc/lib/src/Controller.dart index 2c539d0a..31e3ce44 100644 --- a/mvc/lib/src/Controller.dart +++ b/mvc/lib/src/Controller.dart @@ -13,8 +13,7 @@ import 'package:mvc/src/App.dart' show MVCApp; /// The Controller answers & responses to 'the events' while the Model execute 'the rules' and manipulates data. class Con extends ControllerMVC { factory Con() { - if (_this == null) _this = Con._(); - return _this; + return _this ??= Con._(); } static Con _this; diff --git a/mvc/lib/src/models.dart b/mvc/lib/src/models.dart index 594ffc45..e7b2e243 100644 --- a/mvc/lib/src/models.dart +++ b/mvc/lib/src/models.dart @@ -17,7 +17,7 @@ class Todo { final String task; Todo(this.task, {this.complete = false, this.note = '', String id}) - : this.id = id ?? Uuid().generateV4(); + : id = id ?? Uuid().generateV4(); @override int get hashCode => diff --git a/mvc/lib/src/screens/add_edit_screen.dart b/mvc/lib/src/screens/add_edit_screen.dart index 387fa30f..a63eb74c 100644 --- a/mvc/lib/src/screens/add_edit_screen.dart +++ b/mvc/lib/src/screens/add_edit_screen.dart @@ -35,7 +35,7 @@ class _AddEditScreenState extends State { Widget build(BuildContext context) { /// Return the 'universally recognized' Map object. /// The data will only be known through the use of Map objects. - Map todo = _con.todoById(widget.todoId); + final todo = _con.todoById(widget.todoId); return Scaffold( appBar: AppBar( diff --git a/mvc/lib/src/screens/home_screen.dart b/mvc/lib/src/screens/home_screen.dart index 8728487e..96f31926 100644 --- a/mvc/lib/src/screens/home_screen.dart +++ b/mvc/lib/src/screens/home_screen.dart @@ -18,7 +18,7 @@ import 'package:mvc/src/Controller.dart' show Con; class HomeScreen extends StatefulWidget { @protected @override - createState() => HomeView(); + State createState() => HomeView(); } class HomeView extends State { diff --git a/mvc/lib/src/todo_list_model.dart b/mvc/lib/src/todo_list_model.dart index 96bc5f00..c057f642 100644 --- a/mvc/lib/src/todo_list_model.dart +++ b/mvc/lib/src/todo_list_model.dart @@ -11,7 +11,7 @@ import 'package:mvc/src/models.dart'; class TodoListModel { TodoListModel({TodosRepository repo, VisibilityFilter activeFilter}) - : this._activeFilter = activeFilter ?? VisibilityFilter.all { + : _activeFilter = activeFilter ?? VisibilityFilter.all { /// The rest of the app need not know of its existence. repository = repo ?? TodosRepositoryFlutter( @@ -46,12 +46,14 @@ class TodoListModel { } List get filteredTodos => _todos.where((todo) { - if (activeFilter == VisibilityFilter.all) { - return true; - } else if (activeFilter == VisibilityFilter.active) { - return !todo.complete; - } else if (activeFilter == VisibilityFilter.completed) { - return todo.complete; + switch (activeFilter) { + case VisibilityFilter.active: + return !todo.complete; + case VisibilityFilter.completed: + return todo.complete; + case VisibilityFilter.all: + default: + return true; } }).toList(); @@ -106,9 +108,9 @@ class To { /// Used to 'interface' with the View in the MVC design pattern. static Map map(Todo obj) => { - "task": obj == null ? '' : obj.task, - "note": obj == null ? '' : obj.note, - "complete": obj == null ? false : obj.complete, - "id": obj == null ? null : obj.id, + 'task': obj == null ? '' : obj.task, + 'note': obj == null ? '' : obj.note, + 'complete': obj == null ? false : obj.complete, + 'id': obj == null ? null : obj.id, }; } diff --git a/mvc/lib/src/widgets/stats_counter.dart b/mvc/lib/src/widgets/stats_counter.dart index d6db6830..5dab115b 100644 --- a/mvc/lib/src/widgets/stats_counter.dart +++ b/mvc/lib/src/widgets/stats_counter.dart @@ -49,7 +49,7 @@ class StatsCounter extends StatelessWidget { Padding( padding: EdgeInsets.only(bottom: 24.0), child: Text( - "$numActive", + '$numActive', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subhead, ), diff --git a/mvc/test/todo_list_model_test.dart b/mvc/test/todo_list_model_test.dart index cbb74865..560c0326 100644 --- a/mvc/test/todo_list_model_test.dart +++ b/mvc/test/todo_list_model_test.dart @@ -7,7 +7,7 @@ import 'package:mvc/src/models.dart'; import 'package:mvc/src/todo_list_model.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -main() { +void main() { group('TodoListModel', () { test('should check if there are completed todos', () async { final model = TodoListModel( @@ -150,7 +150,7 @@ class MockRepository extends TodosRepository { List entities; MockRepository(List todos) - : this.entities = todos.map((it) => it.toEntity()).toList(); + : entities = todos.map((it) => it.toEntity()).toList(); @override Future> loadTodos() { diff --git a/mvc/test_driver/todo_app_test.dart b/mvc/test_driver/todo_app_test.dart index 14ddb566..ad93f5a5 100644 --- a/mvc/test_driver/todo_app_test.dart +++ b/mvc/test_driver/todo_app_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } diff --git a/mvi_base/test/all_tests.dart b/mvi_base/test/all_tests.dart index 1c7b747c..04018209 100644 --- a/mvi_base/test/all_tests.dart +++ b/mvi_base/test/all_tests.dart @@ -4,7 +4,7 @@ import 'mvi_todos_list_test.dart' as mviTodosList; import 'todos_interactor_test.dart' as todosInteractor; import 'user_interactor_test.dart' as userInteractor; -main() { +void main() { mviStats.main(); mviTodo.main(); mviTodosList.main(); diff --git a/mvi_base/test/mvi_todo_test.dart b/mvi_base/test/mvi_todo_test.dart index 391624f5..d4a158c0 100644 --- a/mvi_base/test/mvi_todo_test.dart +++ b/mvi_base/test/mvi_todo_test.dart @@ -18,7 +18,7 @@ void main() { group('Presenter', () { test('should load a todo', () { final interactor = MockTodosInteractor(); - final todo = Todo("Hallo"); + final todo = Todo('Hallo'); when(interactor.todo(todo.id)) .thenAnswer((_) => Stream.fromIterable([todo])); @@ -34,7 +34,7 @@ void main() { test('should send deletions to the interactor', () async { final interactor = MockTodosInteractor(); - final todo = Todo("Hallo"); + final todo = Todo('Hallo'); final view = MockView(); when(interactor.todo(todo.id)) @@ -53,7 +53,7 @@ void main() { test('should send updates to the interactor', () async { final interactor = MockTodosInteractor(); - final todo = Todo("Hallo"); + final todo = Todo('Hallo'); final view = MockView(); when(interactor.todo(todo.id)) diff --git a/mvi_base/test/mvi_todos_list_test.dart b/mvi_base/test/mvi_todos_list_test.dart index fbabd845..2d983858 100644 --- a/mvi_base/test/mvi_todos_list_test.dart +++ b/mvi_base/test/mvi_todos_list_test.dart @@ -77,8 +77,8 @@ void main() { final interactor = MockTodosListInteractor(); final view = TodosListView(); final todos = [ - Todo("Hallo", complete: false), - Todo("Friend", complete: true), + Todo('Hallo', complete: false), + Todo('Friend', complete: true), ]; when(interactor.todos).thenAnswer((_) => Stream.fromIterable([todos])); @@ -104,8 +104,8 @@ void main() { final interactor = MockTodosListInteractor(); final view = TodosListView(); final todos = [ - Todo("Hallo", complete: false), - Todo("Friend", complete: true), + Todo('Hallo', complete: false), + Todo('Friend', complete: true), ]; when(interactor.todos).thenAnswer((_) => Stream.fromIterable([todos])); @@ -131,8 +131,8 @@ void main() { final interactor = MockTodosListInteractor(); final view = TodosListView(); final todos = [ - Todo("Hallo", complete: false), - Todo("Friend", complete: true), + Todo('Hallo', complete: false), + Todo('Friend', complete: true), ]; when(interactor.todos).thenAnswer((_) => Stream.fromIterable([todos])); @@ -157,8 +157,8 @@ void main() { final interactor = MockTodosListInteractor(); final view = TodosListView(); final todos = [ - Todo("Hallo", complete: false), - Todo("Friend", complete: true), + Todo('Hallo', complete: false), + Todo('Friend', complete: true), ]; when(interactor.todos).thenAnswer((_) => Stream.fromIterable([todos])); @@ -183,8 +183,8 @@ void main() { final interactor = MockTodosListInteractor(); final view = TodosListView(); final todos = [ - Todo("Hallo", complete: false), - Todo("Friend", complete: true), + Todo('Hallo', complete: false), + Todo('Friend', complete: true), ]; when(interactor.todos).thenAnswer((_) => Stream.fromIterable([todos])); @@ -208,8 +208,8 @@ void main() { final interactor = MockTodosListInteractor(); final view = TodosListView(); final todos = [ - Todo("Hallo", complete: false), - Todo("Friend", complete: true), + Todo('Hallo', complete: false), + Todo('Friend', complete: true), ]; when(interactor.todos).thenAnswer((_) => Stream.fromIterable([todos])); @@ -233,8 +233,8 @@ void main() { final interactor = MockTodosListInteractor(); final view = TodosListView(); final todos = [ - Todo("Hallo", complete: false), - Todo("Friend", complete: true), + Todo('Hallo', complete: false), + Todo('Friend', complete: true), ]; when(interactor.todos).thenAnswer((_) => Stream.fromIterable([todos])); @@ -258,8 +258,8 @@ void main() { final interactor = MockTodosListInteractor(); final view = TodosListView(); final todos = [ - Todo("Hallo", complete: false), - Todo("Friend", complete: true), + Todo('Hallo', complete: false), + Todo('Friend', complete: true), ]; when(interactor.todos).thenAnswer((_) => Stream.fromIterable([todos])); diff --git a/mvi_base/test/todos_interactor_test.dart b/mvi_base/test/todos_interactor_test.dart index 6b23af9f..51b891c3 100644 --- a/mvi_base/test/todos_interactor_test.dart +++ b/mvi_base/test/todos_interactor_test.dart @@ -18,7 +18,7 @@ void main() { test('should convert repo entities into Todos', () { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); - final todos = [TodoEntity("Hallo", "1", "Note", false)]; + final todos = [TodoEntity('Hallo', '1', "Note", false)]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -29,8 +29,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", false), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", false), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -42,8 +42,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", true), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", true), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -54,8 +54,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", true), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", true), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -67,8 +67,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", false), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", false), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -80,8 +80,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", false), - TodoEntity("Friend", "2", "Note", false), + TodoEntity('Hallo', '1', "Note", false), + TodoEntity('Friend', '2', "Note", false), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -108,35 +108,35 @@ void main() { final interactor = TodosInteractor(repository); when(repository.todos()).thenAnswer((_) => Stream.empty()); - when(repository.deleteTodo(["1"])).thenAnswer((_) => Future.value()); + when(repository.deleteTodo(['1'])).thenAnswer((_) => Future.value()); - interactor.deleteTodo("1"); + interactor.deleteTodo('1'); - verify(repository.deleteTodo(["1"])); + verify(repository.deleteTodo(['1'])); }); test('should remove completed todos from the repo', () async { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", false), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", false), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); - when(repository.deleteTodo(["2"])).thenAnswer((_) => Future.sync(() {})); + when(repository.deleteTodo(['2'])).thenAnswer((_) => Future.sync(() {})); await interactor.clearCompleted(); - verify(repository.deleteTodo(["2"])); + verify(repository.deleteTodo(['2'])); }); test('if some todos incomplete, should toggle todos complete', () async { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); - final e1 = TodoEntity("Hallo", "1", "Note", false); - final e1Update = TodoEntity("Hallo", "1", "Note", true); - final e2 = TodoEntity("Friend", "2", "Note", true); + final e1 = TodoEntity('Hallo', '1', "Note", false); + final e1Update = TodoEntity('Hallo', '1', "Note", true); + final e2 = TodoEntity('Friend', '2', "Note", true); final todos = [e1, e2]; final source = BehaviorSubject>.seeded( todos, @@ -155,10 +155,10 @@ void main() { test('if all todos incomplete, should toggle all todos complete', () async { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); - final e1 = TodoEntity("Hallo", "1", "Note", false); - final e1Update = TodoEntity("Hallo", "1", "Note", true); - final e2 = TodoEntity("Friend", "2", "Note", false); - final e2Update = TodoEntity("Friend", "2", "Note", true); + final e1 = TodoEntity('Hallo', '1', "Note", false); + final e1Update = TodoEntity('Hallo', '1', "Note", true); + final e2 = TodoEntity('Friend', '2', "Note", false); + final e2Update = TodoEntity('Friend', '2', "Note", true); final todos = [e1, e2]; final source = BehaviorSubject>.seeded( todos, @@ -180,10 +180,10 @@ void main() { test('if all todos complete, should toggle todos incomplete', () async { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); - final e1 = TodoEntity("Hallo", "1", "Note", true); - final e1Update = TodoEntity("Hallo", "1", "Note", false); - final e2 = TodoEntity("Friend", "2", "Note", true); - final e2Update = TodoEntity("Friend", "2", "Note", false); + final e1 = TodoEntity('Hallo', '1', "Note", true); + final e1Update = TodoEntity('Hallo', '1', "Note", false); + final e2 = TodoEntity('Friend', '2', "Note", true); + final e2Update = TodoEntity('Friend', '2', "Note", false); final todos = [e1, e2]; final source = BehaviorSubject>.seeded( todos, diff --git a/mvi_flutter/lib/localization.dart b/mvi_flutter/lib/localization.dart index f96525b5..30b45c3c 100644 --- a/mvi_flutter/lib/localization.dart +++ b/mvi_flutter/lib/localization.dart @@ -11,7 +11,7 @@ class BlocLocalizations { return Localizations.of(context, BlocLocalizations); } - String get appTitle => "MVI Example"; + String get appTitle => 'MVI Example'; } class InheritedWidgetLocalizationsDelegate @@ -25,5 +25,5 @@ class InheritedWidgetLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/mvi_flutter/lib/widgets/stats_counter.dart b/mvi_flutter/lib/widgets/stats_counter.dart index 2c966aa5..1804c569 100644 --- a/mvi_flutter/lib/widgets/stats_counter.dart +++ b/mvi_flutter/lib/widgets/stats_counter.dart @@ -76,7 +76,7 @@ class StatsCounterState extends State { Padding( padding: EdgeInsets.only(bottom: 24.0), child: Text( - "${snapshot.data?.numActive ?? 0}", + '${snapshot.data?.numActive ?? 0}', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subhead, ), diff --git a/mvi_flutter/test_driver/todo_app_test.dart b/mvi_flutter/test_driver/todo_app_test.dart index 14ddb566..ad93f5a5 100644 --- a/mvi_flutter/test_driver/todo_app_test.dart +++ b/mvi_flutter/test_driver/todo_app_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } diff --git a/mvu/lib/common/extra_actions_menu.dart b/mvu/lib/common/extra_actions_menu.dart index e65dd270..2b0cef7f 100644 --- a/mvu/lib/common/extra_actions_menu.dart +++ b/mvu/lib/common/extra_actions_menu.dart @@ -4,22 +4,22 @@ import 'package:todos_app_core/todos_app_core.dart'; enum ExtraAction { toggleAll, clearCompleted } Widget buildExtraActionsMenu( - void onSelected(ExtraAction action), bool allComplete) { - return new PopupMenuButton( + void Function(ExtraAction action) onSelected, bool allComplete) { + return PopupMenuButton( key: ArchSampleKeys.extraActionsButton, onSelected: onSelected, itemBuilder: (BuildContext context) => >[ - new PopupMenuItem( + PopupMenuItem( key: ArchSampleKeys.toggleAll, value: ExtraAction.toggleAll, - child: new Text(allComplete + child: Text(allComplete ? ArchSampleLocalizations.of(context).markAllIncomplete : ArchSampleLocalizations.of(context).markAllComplete), ), - new PopupMenuItem( + PopupMenuItem( key: ArchSampleKeys.clearCompleted, value: ExtraAction.clearCompleted, - child: new Text(ArchSampleLocalizations.of(context).clearCompleted), + child: Text(ArchSampleLocalizations.of(context).clearCompleted), ), ], ); diff --git a/mvu/lib/common/repository_commands.dart b/mvu/lib/common/repository_commands.dart index a01def8f..14022c1b 100644 --- a/mvu/lib/common/repository_commands.dart +++ b/mvu/lib/common/repository_commands.dart @@ -1,8 +1,8 @@ import 'dart:async'; import 'package:dartea/dartea.dart'; -import 'package:todos_app_core/todos_app_core.dart'; import 'package:path_provider/path_provider.dart'; +import 'package:todos_app_core/todos_app_core.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; import 'package:todos_repository_simple/todos_repository_simple.dart'; @@ -10,56 +10,72 @@ abstract class RepositoryEvent {} class RepoOnTodoAdded implements RepositoryEvent { final TodoEntity entity; + RepoOnTodoAdded(this.entity); } class RepoOnTodoRemoved implements RepositoryEvent { final TodoEntity entity; + RepoOnTodoRemoved(this.entity); } class RepoOnTodoChanged implements RepositoryEvent { final TodoEntity entity; + RepoOnTodoChanged(this.entity); } abstract class CmdRepository { - Cmd loadTodosCmd(T onSuccess(List items), - {T onError(Exception exc)}); - Cmd saveAllCmd(List entities, {T onSuccess()}); - Cmd removeCmd(TodoEntity todo, {T onSuccess()}); - Cmd saveCmd(TodoEntity todo, {T onSuccess()}); - Cmd createCmd(T onSuccess(TodoEntity todo), String task, String note); - Cmd updateDetailsCmd( - T onSuccess(TodoEntity todo), String id, String task, String note); + Cmd loadTodosCmd(T Function(List items) onSuccess, + {T Function(Exception exc) onError}); + + Cmd saveAllCmd(List entities, {T Function() onSuccess}); + + Cmd removeCmd(TodoEntity todo, {T Function() onSuccess}); + + Cmd saveCmd(TodoEntity todo, {T Function() onSuccess}); + + Cmd createCmd( + T Function(TodoEntity todo) onSuccess, String task, String note); + + Cmd updateDetailsCmd(T Function(TodoEntity todo) onSuccess, String id, + String task, String note); + Stream get events; } class TodosCmdRepository implements CmdRepository { final TodosRepository _repo; + TodosCmdRepository(this._repo); final StreamController _changesStreamController = - new StreamController.broadcast(); + StreamController.broadcast(); + @override Stream get events => _changesStreamController.stream; - Cmd loadTodosCmd(T onSuccess(List items), - {T onError(Exception exc)}) => + @override + Cmd loadTodosCmd(T Function(List items) onSuccess, + {T Function(Exception exc) onError}) => Cmd.ofAsyncFunc(_repo.loadTodos, onSuccess: onSuccess, onError: onError); - Cmd saveAllCmd(List entities, {T onSuccess()}) => + @override + Cmd saveAllCmd(List entities, {T Function() onSuccess}) => Cmd.ofAsyncAction(() => _repo.saveTodos(entities), onSuccess: onSuccess); - Cmd removeCmd(TodoEntity todo, {T onSuccess()}) => + @override + Cmd removeCmd(TodoEntity todo, {T Function() onSuccess}) => Cmd.ofAsyncAction(() async { var todos = await _repo.loadTodos(); await _repo.saveTodos(todos.where((x) => x.id != todo.id).toList()); _changesStreamController.add(RepoOnTodoRemoved(todo)); }, onSuccess: onSuccess); - Cmd saveCmd(TodoEntity todo, {T onSuccess()}) => + @override + Cmd saveCmd(TodoEntity todo, {T Function() onSuccess}) => Cmd.ofAsyncAction(() async { var todos = await _repo.loadTodos(); await _repo @@ -67,9 +83,11 @@ class TodosCmdRepository implements CmdRepository { _changesStreamController.add(RepoOnTodoChanged(todo)); }, onSuccess: onSuccess); - Cmd createCmd(T onSuccess(TodoEntity todo), String task, String note) => + @override + Cmd createCmd( + T Function(TodoEntity todo) onSuccess, String task, String note) => Cmd.ofAsyncFunc(() async { - var todo = new TodoEntity(task, new Uuid().generateV4(), note, false); + var todo = TodoEntity(task, Uuid().generateV4(), note, false); var todos = await _repo.loadTodos() ..add(todo); await _repo.saveTodos(todos); @@ -77,13 +95,13 @@ class TodosCmdRepository implements CmdRepository { return todo; }, onSuccess: onSuccess); - Cmd updateDetailsCmd( - T onSuccess(TodoEntity todo), String id, String task, String note) => + @override + Cmd updateDetailsCmd(T Function(TodoEntity todo) onSuccess, String id, + String task, String note) => Cmd.ofAsyncFunc(() async { var todos = await _repo.loadTodos(); var updated = todos - .map((x) => - x.id == id ? new TodoEntity(task, id, note, x.complete) : x) + .map((x) => x.id == id ? TodoEntity(task, id, note, x.complete) : x) .toList(); await _repo.saveTodos(updated); var updatedTodo = updated.firstWhere((x) => x.id == id); @@ -92,12 +110,12 @@ class TodosCmdRepository implements CmdRepository { }, onSuccess: onSuccess); } -const _internalRepository = const TodosRepositoryFlutter( - fileStorage: const FileStorage( - "mvu_app", +const _internalRepository = TodosRepositoryFlutter( + fileStorage: FileStorage( + 'mvu_app', getApplicationDocumentsDirectory, ), - webClient: const WebClient(), + webClient: WebClient(), ); final CmdRepository repoCmds = TodosCmdRepository(_internalRepository); diff --git a/mvu/lib/common/router.dart b/mvu/lib/common/router.dart index 745413b8..5c2e1434 100644 --- a/mvu/lib/common/router.dart +++ b/mvu/lib/common/router.dart @@ -13,16 +13,15 @@ void init(BuildContext context) { } Cmd goToDetailsScreen(TodoModel todo) => - Cmd.ofAction(() => _navigator.push(new MaterialPageRoute( + Cmd.ofAction(() => _navigator.push(MaterialPageRoute( builder: (_) => details.createProgram(repoCmds, todo).build()))); Cmd goToEditTodoScreen(TodoModel todo) => - Cmd.ofAction(() => _navigator.push(new MaterialPageRoute( + Cmd.ofAction(() => _navigator.push(MaterialPageRoute( builder: (_) => edit.createProgram(repoCmds, todo: todo.toEntity()).build()))); -Cmd goToCreateNewScreen() => - Cmd.ofAction(() => _navigator.push(new MaterialPageRoute( - builder: (_) => edit.createProgram(repoCmds).build()))); +Cmd goToCreateNewScreen() => Cmd.ofAction(() => _navigator.push( + MaterialPageRoute(builder: (_) => edit.createProgram(repoCmds).build()))); Cmd goBack() => Cmd.ofAction(() => _navigator.pop()); diff --git a/mvu/lib/common/snackbar.dart b/mvu/lib/common/snackbar.dart index d2a28465..8559d5f1 100644 --- a/mvu/lib/common/snackbar.dart +++ b/mvu/lib/common/snackbar.dart @@ -1,5 +1,5 @@ -import 'package:flutter/material.dart'; import 'package:dartea/dartea.dart'; +import 'package:flutter/material.dart'; import 'package:todos_app_core/todos_app_core.dart'; ScaffoldState _scaffoldState; @@ -8,19 +8,19 @@ void init(BuildContext context) { _scaffoldState = Scaffold.of(context); } -Cmd showUndoCmd(String task, TMsg onUndo()) { - return new Cmd.ofEffect((Dispatch dispatch) { +Cmd showUndoCmd(String task, TMsg Function() onUndo) { + return Cmd.ofEffect((Dispatch dispatch) { _scaffoldState.showSnackBar( - new SnackBar( + SnackBar( key: ArchSampleKeys.snackbar, - duration: new Duration(seconds: 2), + duration: Duration(seconds: 2), backgroundColor: Theme.of(_scaffoldState.context).backgroundColor, - content: new Text( + content: Text( ArchSampleLocalizations.of(_scaffoldState.context).todoDeleted(task), maxLines: 1, overflow: TextOverflow.ellipsis, ), - action: new SnackBarAction( + action: SnackBarAction( label: ArchSampleLocalizations.of(_scaffoldState.context).undo, onPressed: () => dispatch(onUndo()), ), diff --git a/mvu/lib/common/todo_model.dart b/mvu/lib/common/todo_model.dart index aaaaeac7..81ad3892 100644 --- a/mvu/lib/common/todo_model.dart +++ b/mvu/lib/common/todo_model.dart @@ -12,18 +12,18 @@ abstract class TodoModel implements Built { String get task; TodoModel._(); - factory TodoModel([updates(TodoModelBuilder b)]) = _$TodoModel; + factory TodoModel([void Function(TodoModelBuilder b) updates]) = _$TodoModel; TodoEntity toEntity() { - return new TodoEntity(task, id, note, complete); + return TodoEntity(task, id, note, complete); } static TodoModel fromEntity(TodoEntity entity) { - var model = new TodoModel((b) => b + var model = TodoModel((b) => b ..task = entity.task ..complete = entity.complete ..note = entity.note - ..id = entity.id ?? new Uuid().generateV4()); + ..id = entity.id ?? Uuid().generateV4()); return model; } } diff --git a/mvu/lib/common/todo_model.g.dart b/mvu/lib/common/todo_model.g.dart index f2502e25..de62d78e 100644 --- a/mvu/lib/common/todo_model.g.dart +++ b/mvu/lib/common/todo_model.g.dart @@ -29,7 +29,7 @@ class _$TodoModel extends TodoModel { @override final String task; - factory _$TodoModel([void updates(TodoModelBuilder b)]) => + factory _$TodoModel([void Function(TodoModelBuilder b) updates]) => (new TodoModelBuilder()..update(updates)).build(); _$TodoModel._({this.id, this.complete, this.note, this.task}) : super._() { @@ -48,7 +48,7 @@ class _$TodoModel extends TodoModel { } @override - TodoModel rebuild(void updates(TodoModelBuilder b)) => + TodoModel rebuild(void Function(TodoModelBuilder b) updates) => (toBuilder()..update(updates)).build(); @override @@ -123,7 +123,7 @@ class TodoModelBuilder implements Builder { } @override - void update(void updates(TodoModelBuilder b)) { + void update(void Function(TodoModelBuilder b) updates) { if (updates != null) updates(this); } diff --git a/mvu/lib/details/state.dart b/mvu/lib/details/state.dart index 23a9881b..f2a080ef 100644 --- a/mvu/lib/details/state.dart +++ b/mvu/lib/details/state.dart @@ -1,20 +1,20 @@ part of details; Upd init(TodoModel todo) { - var model = new DetailsModel((b) => b..todo = todo.toBuilder()); - return new Upd(model); + var model = DetailsModel((b) => b..todo = todo.toBuilder()); + return Upd(model); } Upd update( CmdRepository repo, DetailsMessage msg, DetailsModel model) { if (msg is Remove) { var removeCmd = repo.removeCmd(model.todo.toEntity()); - return new Upd(model, effects: removeCmd); + return Upd(model, effects: removeCmd); } if (msg is ToggleCompleted) { var updatedModel = model.rebuild((b) => b.todo.update((t) => t.complete = !t.complete)); - return new Upd(updatedModel, + return Upd(updatedModel, effects: repo.saveCmd(updatedModel.todo.toEntity())); } if (msg is Edit) { @@ -36,5 +36,5 @@ Upd update( var navigateCmd = router.goBack(); return Upd(model, effects: navigateCmd); } - return new Upd(model); + return Upd(model); } diff --git a/mvu/lib/details/types.dart b/mvu/lib/details/types.dart index 9add2fe7..b8ac0e53 100644 --- a/mvu/lib/details/types.dart +++ b/mvu/lib/details/types.dart @@ -10,7 +10,8 @@ abstract class DetailsModel TodoModel get todo; DetailsModel._(); - factory DetailsModel([updates(DetailsModelBuilder b)]) = _$DetailsModel; + factory DetailsModel([void Function(DetailsModelBuilder b) updates]) = + _$DetailsModel; } abstract class DetailsMessage {} diff --git a/mvu/lib/details/types.g.dart b/mvu/lib/details/types.g.dart index cc3345bf..05b6b54a 100644 --- a/mvu/lib/details/types.g.dart +++ b/mvu/lib/details/types.g.dart @@ -23,7 +23,7 @@ class _$DetailsModel extends DetailsModel { @override final TodoModel todo; - factory _$DetailsModel([void updates(DetailsModelBuilder b)]) => + factory _$DetailsModel([void Function(DetailsModelBuilder b) updates]) => (new DetailsModelBuilder()..update(updates)).build(); _$DetailsModel._({this.todo}) : super._() { @@ -33,7 +33,7 @@ class _$DetailsModel extends DetailsModel { } @override - DetailsModel rebuild(void updates(DetailsModelBuilder b)) => + DetailsModel rebuild(void Function(DetailsModelBuilder b) updates) => (toBuilder()..update(updates)).build(); @override @@ -84,7 +84,7 @@ class DetailsModelBuilder } @override - void update(void updates(DetailsModelBuilder b)) { + void update(void Function(DetailsModelBuilder b) updates) { if (updates != null) updates(this); } diff --git a/mvu/lib/details/view.dart b/mvu/lib/details/view.dart index eadd1a2c..11c4bf9c 100644 --- a/mvu/lib/details/view.dart +++ b/mvu/lib/details/view.dart @@ -4,50 +4,50 @@ Widget view(BuildContext context, Dispatch dispatch, DetailsModel model) { final localizations = ArchSampleLocalizations.of(context); - return new Scaffold( + return Scaffold( key: ArchSampleKeys.todoDetailsScreen, - appBar: new AppBar( - title: new Text(localizations.todoDetails), + appBar: AppBar( + title: Text(localizations.todoDetails), actions: [ - new IconButton( + IconButton( tooltip: localizations.deleteTodo, - icon: new Icon(Icons.delete), + icon: Icon(Icons.delete), key: ArchSampleKeys.deleteTodoButton, - onPressed: () => dispatch(new Remove()), + onPressed: () => dispatch(Remove()), ) ], ), - body: new Padding( - padding: new EdgeInsets.all(16.0), - child: new ListView( + body: Padding( + padding: EdgeInsets.all(16.0), + child: ListView( children: [ - new Row( + Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - new Padding( - padding: new EdgeInsets.only(right: 8.0), - child: new Checkbox( + Padding( + padding: EdgeInsets.only(right: 8.0), + child: Checkbox( key: ArchSampleKeys.detailsTodoItemCheckbox, value: model.todo.complete, - onChanged: (_) => dispatch(new ToggleCompleted()), + onChanged: (_) => dispatch(ToggleCompleted()), ), ), - new Expanded( - child: new Column( + Expanded( + child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - new Padding( - padding: new EdgeInsets.only( + Padding( + padding: EdgeInsets.only( top: 8.0, bottom: 16.0, ), - child: new Text( + child: Text( model.todo.task, key: ArchSampleKeys.detailsTodoItemTask, style: Theme.of(context).textTheme.headline, ), ), - new Text( + Text( model.todo.note, key: ArchSampleKeys.detailsTodoItemNote, style: Theme.of(context).textTheme.subhead, @@ -60,10 +60,10 @@ Widget view(BuildContext context, Dispatch dispatch, ], ), ), - floatingActionButton: new FloatingActionButton( + floatingActionButton: FloatingActionButton( key: ArchSampleKeys.editTodoFab, tooltip: localizations.editTodo, - child: new Icon(Icons.edit), + child: Icon(Icons.edit), onPressed: () => dispatch(Edit()), ), ); diff --git a/mvu/lib/edit/state.dart b/mvu/lib/edit/state.dart index 5922ab48..1ecc52a4 100644 --- a/mvu/lib/edit/state.dart +++ b/mvu/lib/edit/state.dart @@ -1,11 +1,11 @@ part of edit; Upd init(TodoEntity todo) { - var model = new EditTodoModel((b) => b - ..id = todo != null ? todo.id : "" - ..note = new TextEditingController(text: todo != null ? todo.note : "") - ..task = new TextEditingController(text: todo != null ? todo.task : "")); - return new Upd(model); + var model = EditTodoModel((b) => b + ..id = todo != null ? todo.id : '' + ..note = TextEditingController(text: todo != null ? todo.note : '') + ..task = TextEditingController(text: todo != null ? todo.task : '')); + return Upd(model); } Upd update( @@ -15,11 +15,11 @@ Upd update( ? repo.createCmd((t) => OnSaved(t), model.task.text, model.note.text) : repo.updateDetailsCmd( (t) => OnSaved(t), model.id, model.task.text, model.note.text); - return new Upd(model, effects: updateCmd); + return Upd(model, effects: updateCmd); } if (msg is OnSaved && msg.todo != null) { var navCmd = router.goBack(); return Upd(model, effects: navCmd); } - return new Upd(model); + return Upd(model); } diff --git a/mvu/lib/edit/view.dart b/mvu/lib/edit/view.dart index 4275f659..e8af30c4 100644 --- a/mvu/lib/edit/view.dart +++ b/mvu/lib/edit/view.dart @@ -6,37 +6,37 @@ Widget view(BuildContext context, Dispatch dispatch, final textTheme = Theme.of(context).textTheme; final isEditing = model.id.isNotEmpty; - return new Scaffold( + return Scaffold( key: ArchSampleKeys.editTodoScreen, - appBar: new AppBar( - title: new Text( + appBar: AppBar( + title: Text( isEditing ? localizations.editTodo : localizations.addTodo, ), ), - body: new Padding( - padding: new EdgeInsets.all(16.0), - child: new Form( + body: Padding( + padding: EdgeInsets.all(16.0), + child: Form( autovalidate: true, - child: new ListView( + child: ListView( children: [ - new TextFormField( + TextFormField( key: ArchSampleKeys.taskField, controller: model.task, autofocus: !isEditing, style: textTheme.headline, - decoration: new InputDecoration( + decoration: InputDecoration( hintText: localizations.newTodoHint, ), validator: (val) { return val.trim().isEmpty ? localizations.emptyTodoError : null; }, ), - new TextFormField( + TextFormField( key: ArchSampleKeys.noteField, controller: model.note, maxLines: 10, style: textTheme.subhead, - decoration: new InputDecoration( + decoration: InputDecoration( hintText: localizations.notesHint, ), ) @@ -44,11 +44,11 @@ Widget view(BuildContext context, Dispatch dispatch, ), ), ), - floatingActionButton: new FloatingActionButton( + floatingActionButton: FloatingActionButton( key: isEditing ? ArchSampleKeys.saveTodoFab : ArchSampleKeys.saveNewTodo, tooltip: isEditing ? localizations.saveChanges : localizations.addTodo, - child: new Icon(isEditing ? Icons.check : Icons.add), - onPressed: () => dispatch(new Save()), + child: Icon(isEditing ? Icons.check : Icons.add), + onPressed: () => dispatch(Save()), ), ); } diff --git a/mvu/lib/home/home.dart b/mvu/lib/home/home.dart index 0aa2e47c..410e9a15 100644 --- a/mvu/lib/home/home.dart +++ b/mvu/lib/home/home.dart @@ -21,9 +21,8 @@ part 'state.dart'; part 'view.dart'; Program> - createProgram(AppTab initTab) => - new Program(() => init(initTab), update, view, - subscription: _repoSubscription); + createProgram(AppTab initTab) => Program(() => init(initTab), update, view, + subscription: _repoSubscription); StreamSubscription _repoSubscription( StreamSubscription currentSub, diff --git a/mvu/lib/home/state.dart b/mvu/lib/home/state.dart index ddb55224..2cde1ac0 100644 --- a/mvu/lib/home/state.dart +++ b/mvu/lib/home/state.dart @@ -2,19 +2,19 @@ part of home; Upd init(AppTab currentTab) { var body = _initBody(currentTab); - var model = new HomeModel((b) => b..body = body.model); - return new Upd(model, effects: body.effects); + var model = HomeModel((b) => b..body = body.model); + return Upd(model, effects: body.effects); } Upd update(HomeMessage msg, HomeModel model) { if (msg is TabChangedMessage) { if (msg.value == model.body.tag) { - return new Upd(model); + return Upd(model); } var body = _initBody(msg.value); var updated = model.rebuild((b) => b..body = body.model); - return new Upd(updated, effects: body.effects); + return Upd(updated, effects: body.effects); } if (msg is CreateNewTodo) { @@ -25,42 +25,41 @@ Upd update(HomeMessage msg, HomeModel model) { if (msg is OnNewTodoCreated) { if (model.body.tag == AppTab.todos) { return Upd(model, - effects: - new Cmd.ofMsg(TodosMsg(OnTodoItemChanged(created: msg.entity)))); + effects: Cmd.ofMsg(TodosMsg(OnTodoItemChanged(created: msg.entity)))); } else if (model.body.tag == AppTab.stats) { return Upd(model, - effects: new Cmd.ofMsg(StatsMsg(OnNewTaskCreated(msg.entity)))); + effects: Cmd.ofMsg(StatsMsg(OnNewTaskCreated(msg.entity)))); } } if (msg is TodosMsg && model.body.tag == AppTab.todos) { var updatedTodos = todos.update(repoCmds, msg.message, model.body.model); var updatedModel = - model.rebuild((b) => b..body = new TodosBody(updatedTodos.model)); - var effects = Cmd.fmap((m) => new TodosMsg(m), updatedTodos.effects); - return new Upd(updatedModel, effects: effects); + model.rebuild((b) => b..body = TodosBody(updatedTodos.model)); + var effects = Cmd.fmap((m) => TodosMsg(m), updatedTodos.effects); + return Upd(updatedModel, effects: effects); } if (msg is StatsMsg && model.body.tag == AppTab.stats) { var updatedStats = stats.update(repoCmds, msg.message, model.body.model); var updatedModel = - model.rebuild((b) => b..body = new StatsBody(updatedStats.model)); - return new Upd(updatedModel, - effects: Cmd.fmap((m) => new StatsMsg(m), updatedStats.effects)); + model.rebuild((b) => b..body = StatsBody(updatedStats.model)); + return Upd(updatedModel, + effects: Cmd.fmap((m) => StatsMsg(m), updatedStats.effects)); } - return new Upd(model); + return Upd(model); } Upd _initBody(AppTab tag) { switch (tag) { case AppTab.todos: var initedTodos = todos.init(VisibilityFilter.all); - return new Upd(new TodosBody(initedTodos.model), - effects: Cmd.fmap((m) => new TodosMsg(m), initedTodos.effects)); + return Upd(TodosBody(initedTodos.model), + effects: Cmd.fmap((m) => TodosMsg(m), initedTodos.effects)); case AppTab.stats: var initedStats = stats.init(); - return new Upd(new StatsBody(initedStats.model), - effects: Cmd.fmap((m) => new StatsMsg(m), initedStats.effects)); + return Upd(StatsBody(initedStats.model), + effects: Cmd.fmap((m) => StatsMsg(m), initedStats.effects)); } - throw new ArgumentError.value(tag); + throw ArgumentError.value(tag); } diff --git a/mvu/lib/home/types.dart b/mvu/lib/home/types.dart index ae02d08f..a32e9ed9 100644 --- a/mvu/lib/home/types.dart +++ b/mvu/lib/home/types.dart @@ -37,7 +37,7 @@ abstract class HomeModel implements Built { BodyModel get body; HomeModel._(); - factory HomeModel([updates(HomeModelBuilder b)]) = _$HomeModel; + factory HomeModel([void Function(HomeModelBuilder b) updates]) = _$HomeModel; } abstract class BodyModel { diff --git a/mvu/lib/home/types.g.dart b/mvu/lib/home/types.g.dart index d4d4d13e..feda38e6 100644 --- a/mvu/lib/home/types.g.dart +++ b/mvu/lib/home/types.g.dart @@ -23,7 +23,7 @@ class _$HomeModel extends HomeModel { @override final BodyModel body; - factory _$HomeModel([void updates(HomeModelBuilder b)]) => + factory _$HomeModel([void Function(HomeModelBuilder b) updates]) => (new HomeModelBuilder()..update(updates)).build(); _$HomeModel._({this.body}) : super._() { @@ -33,7 +33,7 @@ class _$HomeModel extends HomeModel { } @override - HomeModel rebuild(void updates(HomeModelBuilder b)) => + HomeModel rebuild(void Function(HomeModelBuilder b) updates) => (toBuilder()..update(updates)).build(); @override @@ -83,7 +83,7 @@ class HomeModelBuilder implements Builder { } @override - void update(void updates(HomeModelBuilder b)) { + void update(void Function(HomeModelBuilder b) updates) { if (updates != null) updates(this); } diff --git a/mvu/lib/home/view.dart b/mvu/lib/home/view.dart index 0c3f48c8..71b748bc 100644 --- a/mvu/lib/home/view.dart +++ b/mvu/lib/home/view.dart @@ -2,17 +2,17 @@ part of home; Widget view( BuildContext context, Dispatch dispatch, HomeModel model) { - return new Scaffold( + return Scaffold( key: ArchSampleKeys.homeScreen, - appBar: new AppBar( - title: new Text(new MvuLocalizations().appTitle), + appBar: AppBar( + title: Text(MvuLocalizations().appTitle), actions: _getAppBarActions(context, dispatch, model.body), ), - body: new Builder(builder: (ctx) => _body(ctx, dispatch, model.body)), - floatingActionButton: new FloatingActionButton( + body: Builder(builder: (ctx) => _body(ctx, dispatch, model.body)), + floatingActionButton: FloatingActionButton( key: ArchSampleKeys.addTodoFab, onPressed: () => dispatch(CreateNewTodo()), - child: new Icon(Icons.add), + child: Icon(Icons.add), tooltip: ArchSampleLocalizations.of(context).addTodo, ), bottomNavigationBar: _bottomNavigation(context, dispatch, model.body.tag), @@ -22,35 +22,35 @@ Widget view( List _getAppBarActions( BuildContext context, Dispatch dispatch, BodyModel body) { if (body.tag == AppTab.todos) { - var extraActions = todos.buildExtraActionsMenu( - (m) => dispatch(new TodosMsg(m)), body.model); + var extraActions = + todos.buildExtraActionsMenu((m) => dispatch(TodosMsg(m)), body.model); var filterMenu = todos.buildFilterMenu( - context, (m) => dispatch(new TodosMsg(m)), body.model); + context, (m) => dispatch(TodosMsg(m)), body.model); return [filterMenu, extraActions]; } if (body.tag == AppTab.stats) { - var extraActions = stats.buildExtraActionsMenu( - (m) => dispatch(new StatsMsg(m)), body.model); + var extraActions = + stats.buildExtraActionsMenu((m) => dispatch(StatsMsg(m)), body.model); return [extraActions]; } - return [new Container()]; + return [Container()]; } Widget _bottomNavigation( BuildContext context, Dispatch dispatch, AppTab current) { - return new BottomNavigationBar( + return BottomNavigationBar( key: ArchSampleKeys.tabs, currentIndex: AppTab.values.indexOf(current), - onTap: ((i) => dispatch(new TabChangedMessage(AppTab.values[i]))), + onTap: ((i) => dispatch(TabChangedMessage(AppTab.values[i]))), items: AppTab.values.map((tab) { - return new BottomNavigationBarItem( - icon: new Icon( + return BottomNavigationBarItem( + icon: Icon( tab == AppTab.todos ? Icons.list : Icons.show_chart, key: tab == AppTab.todos ? ArchSampleKeys.todoTab : ArchSampleKeys.statsTab, ), - title: new Text(tab == AppTab.stats + title: Text(tab == AppTab.stats ? ArchSampleLocalizations.of(context).stats : ArchSampleLocalizations.of(context).todos), ); @@ -63,9 +63,9 @@ Widget _body( snackbar.init(context); switch (body.tag) { case AppTab.todos: - return todos.view(context, (m) => dispatch(new TodosMsg(m)), body.model); + return todos.view(context, (m) => dispatch(TodosMsg(m)), body.model); case AppTab.stats: - return stats.view(context, (m) => dispatch(new StatsMsg(m)), body.model); + return stats.view(context, (m) => dispatch(StatsMsg(m)), body.model); } - return new Text("Unknown tag: ${body.tag}"); + return Text('Unknown tag: ${body.tag}'); } diff --git a/mvu/lib/localization.dart b/mvu/lib/localization.dart index ff5b251d..6ab2920e 100644 --- a/mvu/lib/localization.dart +++ b/mvu/lib/localization.dart @@ -10,18 +10,18 @@ class MvuLocalizations { ); } - String get appTitle => "MVU Example"; + String get appTitle => 'MVU Example'; } class MvuLocalizationsDelegate extends LocalizationsDelegate { @override Future load(Locale locale) => - new Future(() => new MvuLocalizations()); + Future(() => MvuLocalizations()); @override bool shouldReload(MvuLocalizationsDelegate old) => false; @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/mvu/lib/main.dart b/mvu/lib/main.dart index 5e4adba5..8b924e5a 100644 --- a/mvu/lib/main.dart +++ b/mvu/lib/main.dart @@ -10,19 +10,19 @@ import 'localization.dart'; import 'package:mvu/common/repository_commands.dart' show repoCmds; void main() { - runApp(new MyApp()); + runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { - return new MaterialApp( + return MaterialApp( theme: ArchSampleTheme.theme, localizationsDelegates: [ - new ArchSampleLocalizationsDelegate(), - new MvuLocalizationsDelegate() + ArchSampleLocalizationsDelegate(), + MvuLocalizationsDelegate() ], - home: new Builder( + home: Builder( builder: (c) { router.init(c); return home.createProgram(AppTab.todos).build(); diff --git a/mvu/lib/stats/state.dart b/mvu/lib/stats/state.dart index 200c0629..64bd992e 100644 --- a/mvu/lib/stats/state.dart +++ b/mvu/lib/stats/state.dart @@ -1,20 +1,20 @@ part of stats; Upd init() { - var model = new StatsModel((b) => b - ..items = new BuiltList().toBuilder() + var model = StatsModel((b) => b + ..items = BuiltList().toBuilder() ..activeCount = 0 ..completedCount = 0 ..loading = false); - return new Upd(model, effects: new Cmd.ofMsg(new LoadStats())); + return Upd(model, effects: Cmd.ofMsg(LoadStats())); } Upd update( CmdRepository repo, StatsMessage msg, StatsModel model) { if (msg is LoadStats) { var updatedModel = model.rebuild((b) => b..loading = true); - var loadCmd = repo.loadTodosCmd((items) => new OnStatsLoaded(items)); - return new Upd(updatedModel, effects: loadCmd); + var loadCmd = repo.loadTodosCmd((items) => OnStatsLoaded(items)); + return Upd(updatedModel, effects: loadCmd); } if (msg is OnStatsLoaded) { var updatedModel = _onItemsChanged(model, msg.todos); @@ -28,7 +28,7 @@ Upd update( if (msg is CleareCompletedMessage) { var updatedModel = model.rebuild((b) => b.items.where((t) => !t.complete)); updatedModel = _calculateStats(updatedModel); - return new Upd(updatedModel, effects: _saveItems(repo, updatedModel)); + return Upd(updatedModel, effects: _saveItems(repo, updatedModel)); } if (msg is OnNewTaskCreated) { var updatedModel = @@ -36,7 +36,7 @@ Upd update( updatedModel = _calculateStats(updatedModel); return Upd(updatedModel); } - return new Upd(model); + return Upd(model); } StatsModel _onItemsChanged(StatsModel model, List newItems) { diff --git a/mvu/lib/stats/types.dart b/mvu/lib/stats/types.dart index 2a3c03eb..e2a75faa 100644 --- a/mvu/lib/stats/types.dart +++ b/mvu/lib/stats/types.dart @@ -31,5 +31,6 @@ abstract class StatsModel implements Built { int get completedCount; StatsModel._(); - factory StatsModel([updates(StatsModelBuilder b)]) = _$StatsModel; + factory StatsModel([void Function(StatsModelBuilder b) updates]) = + _$StatsModel; } diff --git a/mvu/lib/stats/types.g.dart b/mvu/lib/stats/types.g.dart index 2ba05a4e..3c37ed48 100644 --- a/mvu/lib/stats/types.g.dart +++ b/mvu/lib/stats/types.g.dart @@ -29,7 +29,7 @@ class _$StatsModel extends StatsModel { @override final int completedCount; - factory _$StatsModel([void updates(StatsModelBuilder b)]) => + factory _$StatsModel([void Function(StatsModelBuilder b) updates]) => (new StatsModelBuilder()..update(updates)).build(); _$StatsModel._( @@ -50,7 +50,7 @@ class _$StatsModel extends StatsModel { } @override - StatsModel rebuild(void updates(StatsModelBuilder b)) => + StatsModel rebuild(void Function(StatsModelBuilder b) updates) => (toBuilder()..update(updates)).build(); @override @@ -128,7 +128,7 @@ class StatsModelBuilder implements Builder { } @override - void update(void updates(StatsModelBuilder b)) { + void update(void Function(StatsModelBuilder b) updates) { if (updates != null) updates(this); } diff --git a/mvu/lib/stats/view.dart b/mvu/lib/stats/view.dart index a019defd..09a40318 100644 --- a/mvu/lib/stats/view.dart +++ b/mvu/lib/stats/view.dart @@ -10,41 +10,41 @@ Widget buildExtraActionsMenu( Widget view( BuildContext context, Dispatch dispatch, StatsModel model) { return model.loading - ? new Center( + ? Center( key: ArchSampleKeys.statsLoading, - child: new CircularProgressIndicator( + child: CircularProgressIndicator( key: ArchSampleKeys.statsLoading, )) - : new Center( - child: new Column( + : Center( + child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - new Padding( - padding: new EdgeInsets.only(bottom: 8.0), - child: new Text( + Padding( + padding: EdgeInsets.only(bottom: 8.0), + child: Text( ArchSampleLocalizations.of(context).completedTodos, style: Theme.of(context).textTheme.title, ), ), - new Padding( - padding: new EdgeInsets.only(bottom: 24.0), - child: new Text( + Padding( + padding: EdgeInsets.only(bottom: 24.0), + child: Text( '${model.completedCount}', key: ArchSampleKeys.statsNumCompleted, style: Theme.of(context).textTheme.subhead, ), ), - new Padding( - padding: new EdgeInsets.only(bottom: 8.0), - child: new Text( + Padding( + padding: EdgeInsets.only(bottom: 8.0), + child: Text( ArchSampleLocalizations.of(context).activeTodos, style: Theme.of(context).textTheme.title, ), ), - new Padding( - padding: new EdgeInsets.only(bottom: 24.0), - child: new Text( - "${model.activeCount}", + Padding( + padding: EdgeInsets.only(bottom: 24.0), + child: Text( + '${model.activeCount}', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subhead, ), @@ -57,9 +57,9 @@ Widget view( StatsMessage _toMessage(menu.ExtraAction action) { switch (action) { case menu.ExtraAction.toggleAll: - return new ToggleAllMessage(); + return ToggleAllMessage(); case menu.ExtraAction.clearCompleted: default: - return new CleareCompletedMessage(); + return CleareCompletedMessage(); } } diff --git a/mvu/lib/todos/state.dart b/mvu/lib/todos/state.dart index 5018f0d4..392fdde5 100644 --- a/mvu/lib/todos/state.dart +++ b/mvu/lib/todos/state.dart @@ -1,11 +1,11 @@ part of todos; Upd init(VisibilityFilter filter) { - var model = new TodosModel((b) => b + var model = TodosModel((b) => b ..isLoading = false ..filter = filter - ..items = new BuiltList().toBuilder()); - return new Upd(model, effects: new Cmd.ofMsg(new LoadTodos())); + ..items = BuiltList().toBuilder()); + return Upd(model, effects: Cmd.ofMsg(LoadTodos())); } Upd update( @@ -28,18 +28,18 @@ Upd update( } if (msg is UndoRemoveItem) { var updatedModel = model.rebuild((b) => b.items.add(msg.item)); - return new Upd(updatedModel, effects: _saveTodosCmd(repo, updatedModel)); + return Upd(updatedModel, effects: _saveTodosCmd(repo, updatedModel)); } if (msg is FilterChanged) { var updatedModel = model.rebuild((b) => b..filter = msg.value); - return new Upd(updatedModel); + return Upd(updatedModel); } if (msg is ToggleAllMessage) { return _toggleAll(repo, model, msg); } if (msg is CleareCompletedMessage) { var updatedModel = model.rebuild((b) => b.items.where((t) => !t.complete)); - return new Upd(updatedModel, effects: _saveTodosCmd(repo, updatedModel)); + return Upd(updatedModel, effects: _saveTodosCmd(repo, updatedModel)); } if (msg is ShowDetailsMessage) { var navigateCmd = router.goToDetailsScreen(msg.todo); @@ -48,16 +48,16 @@ Upd update( if (msg is OnTodoItemChanged) { return _onRepoEvent(model, msg); } - return new Upd(model); + return Upd(model); } Upd _loadTodos(CmdRepository repo, TodosModel model) { - var loadCmd = repo.loadTodosCmd((items) => new OnTodosLoaded(items), - onError: (exc) => new OnTodosLoadError(exc)); + var loadCmd = repo.loadTodosCmd((items) => OnTodosLoaded(items), + onError: (exc) => OnTodosLoadError(exc)); var updatedModel = model.rebuild((b) => b ..isLoading = true ..loadingError = null); - return new Upd(updatedModel, effects: loadCmd); + return Upd(updatedModel, effects: loadCmd); } Upd _onTodosLoaded( @@ -75,14 +75,14 @@ Upd _onLoadingError( var updatedModel = model.rebuild((b) => b ..isLoading = false ..loadingError = msg.cause.toString()); - return new Upd(updatedModel); + return Upd(updatedModel); } Upd _toggleTodo( CmdRepository repo, TodosModel model, UpdateTodo msg) { var updatedTodo = msg.todo.rebuild((b) => b..complete = msg.value); var updatedModel = _updateTodoItem(model, updatedTodo); - return new Upd(updatedModel, effects: _saveTodosCmd(repo, updatedModel)); + return Upd(updatedModel, effects: _saveTodosCmd(repo, updatedModel)); } Upd _toggleAll( @@ -90,7 +90,7 @@ Upd _toggleAll( var setComplete = model.items.any((x) => !x.complete); var updatedModel = model.rebuild( (b) => b.items.map((t) => t.rebuild((x) => x..complete = setComplete))); - return new Upd(updatedModel, effects: _saveTodosCmd(repo, updatedModel)); + return Upd(updatedModel, effects: _saveTodosCmd(repo, updatedModel)); } TodosModel _removeTodo(TodosModel model, String id) => diff --git a/mvu/lib/todos/types.dart b/mvu/lib/todos/types.dart index 0748336c..de511b23 100644 --- a/mvu/lib/todos/types.dart +++ b/mvu/lib/todos/types.dart @@ -15,7 +15,8 @@ abstract class TodosModel implements Built { String get loadingError; TodosModel._(); - factory TodosModel([updates(TodosModelBuilder b)]) = _$TodosModel; + factory TodosModel([void Function(TodosModelBuilder b) updates]) = + _$TodosModel; } abstract class TodosMessage {} diff --git a/mvu/lib/todos/types.g.dart b/mvu/lib/todos/types.g.dart index 5632616a..a47403fb 100644 --- a/mvu/lib/todos/types.g.dart +++ b/mvu/lib/todos/types.g.dart @@ -29,7 +29,7 @@ class _$TodosModel extends TodosModel { @override final String loadingError; - factory _$TodosModel([void updates(TodosModelBuilder b)]) => + factory _$TodosModel([void Function(TodosModelBuilder b) updates]) => (new TodosModelBuilder()..update(updates)).build(); _$TodosModel._({this.isLoading, this.items, this.filter, this.loadingError}) @@ -46,7 +46,7 @@ class _$TodosModel extends TodosModel { } @override - TodosModel rebuild(void updates(TodosModelBuilder b)) => + TodosModel rebuild(void Function(TodosModelBuilder b) updates) => (toBuilder()..update(updates)).build(); @override @@ -122,7 +122,7 @@ class TodosModelBuilder implements Builder { } @override - void update(void updates(TodosModelBuilder b)) { + void update(void Function(TodosModelBuilder b) updates) { if (updates != null) updates(this); } diff --git a/mvu/lib/todos/view.dart b/mvu/lib/todos/view.dart index 8a0d98f1..40707793 100644 --- a/mvu/lib/todos/view.dart +++ b/mvu/lib/todos/view.dart @@ -2,7 +2,7 @@ part of todos; Widget view( BuildContext context, Dispatch dispatch, TodosModel model) { - return new Container( + return Container( child: model.loadingError != null ? _error(model.loadingError) : model.isLoading ? _loading() : _list(dispatch, model), @@ -24,34 +24,34 @@ Widget buildFilterMenu( .body1 .copyWith(color: Theme.of(context).accentColor); - return new PopupMenuButton( + return PopupMenuButton( key: ArchSampleKeys.filterButton, tooltip: ArchSampleLocalizations.of(context).filterTodos, - onSelected: (val) => dispatch(new FilterChanged(val)), + onSelected: (val) => dispatch(FilterChanged(val)), itemBuilder: (BuildContext context) => >[ - new PopupMenuItem( + PopupMenuItem( key: ArchSampleKeys.allFilter, value: VisibilityFilter.all, - child: new Text( + child: Text( ArchSampleLocalizations.of(context).showAll, style: model.filter == VisibilityFilter.all ? activeStyle : defaultStyle, ), ), - new PopupMenuItem( + PopupMenuItem( key: ArchSampleKeys.activeFilter, value: VisibilityFilter.active, - child: new Text( + child: Text( ArchSampleLocalizations.of(context).showActive, style: model.filter == VisibilityFilter.active ? activeStyle : defaultStyle, ), ), - new PopupMenuItem( + PopupMenuItem( key: ArchSampleKeys.completedFilter, value: VisibilityFilter.completed, - child: new Text( + child: Text( ArchSampleLocalizations.of(context).showCompleted, style: model.filter == VisibilityFilter.completed ? activeStyle @@ -59,17 +59,17 @@ Widget buildFilterMenu( ), ), ], - icon: new Icon(Icons.filter_list), + icon: Icon(Icons.filter_list), ); } Widget _error(String error) { - return new Center(child: new Text(error)); + return Center(child: Text(error)); } Widget _loading() { - return new Center( - child: new CircularProgressIndicator( + return Center( + child: CircularProgressIndicator( key: ArchSampleKeys.todosLoading, )); } @@ -83,7 +83,7 @@ Widget _list(Dispatch dispatch, TodosModel model) { : !x.complete)) .toList(); - return new ListView.builder( + return ListView.builder( key: ArchSampleKeys.todoList, itemCount: filteredList.length, itemBuilder: (BuildContext context, int index) => @@ -93,22 +93,22 @@ Widget _list(Dispatch dispatch, TodosModel model) { Widget _item(BuildContext context, Dispatch dispatch, TodoModel model, TodosModel todos) { - return new Dismissible( + return Dismissible( key: ArchSampleKeys.todoItem(model.id), - onDismissed: (_) => dispatch(new RemoveTodo(model)), - child: new ListTile( + onDismissed: (_) => dispatch(RemoveTodo(model)), + child: ListTile( onTap: () => dispatch(ShowDetailsMessage(model)), - leading: new Checkbox( + leading: Checkbox( key: ArchSampleKeys.todoItemCheckbox(model.id), value: model.complete, - onChanged: (val) => dispatch(new UpdateTodo(val, model)), + onChanged: (val) => dispatch(UpdateTodo(val, model)), ), - title: new Text( + title: Text( model.task, key: ArchSampleKeys.todoItemTask(model.id), style: Theme.of(context).textTheme.title, ), - subtitle: new Text( + subtitle: Text( model.note, key: ArchSampleKeys.todoItemNote(model.id), maxLines: 1, @@ -122,9 +122,9 @@ Widget _item(BuildContext context, Dispatch dispatch, TodosMessage _toMessage(menu.ExtraAction action) { switch (action) { case menu.ExtraAction.toggleAll: - return new ToggleAllMessage(); + return ToggleAllMessage(); case menu.ExtraAction.clearCompleted: default: - return new CleareCompletedMessage(); + return CleareCompletedMessage(); } } diff --git a/mvu/test/all_tests.dart b/mvu/test/all_tests.dart index 604c7fbe..45a4ddeb 100644 --- a/mvu/test/all_tests.dart +++ b/mvu/test/all_tests.dart @@ -1,15 +1,15 @@ -import 'details_screen_test.dart' as detailsScreen; -import 'edit_screen_test.dart' as editScreen; -import 'home_screen_test.dart' as homeScreen; -import 'repository_commads_test.dart' as repositoryCommands; -import 'stats_screen_test.dart' as statsScreen; -import 'todos_screen_test.dart' as todosScreen; +import 'details_screen_test.dart' as details_screen; +import 'edit_screen_test.dart' as edit_screen; +import 'home_screen_test.dart' as home_screen; +import 'repository_commads_test.dart' as repository_commands; +import 'stats_screen_test.dart' as stats_screen; +import 'todos_screen_test.dart' as todos_screen; -main() { - detailsScreen.main(); - editScreen.main(); - homeScreen.main(); - repositoryCommands.main(); - statsScreen.main(); - todosScreen.main(); +void main() { + details_screen.main(); + edit_screen.main(); + home_screen.main(); + repository_commands.main(); + stats_screen.main(); + todos_screen.main(); } diff --git a/mvu/test/cmd_runner.dart b/mvu/test/cmd_runner.dart index 1baa9100..98fcf4d9 100644 --- a/mvu/test/cmd_runner.dart +++ b/mvu/test/cmd_runner.dart @@ -2,7 +2,7 @@ import 'package:dartea/dartea.dart'; ///run side-effects and save produced messages to the [producedMessages] list class CmdRunner { - final List producedMessages = List(); + final producedMessages = []; void run(Cmd cmd) { for (var effect in cmd) { diff --git a/mvu/test/data.dart b/mvu/test/data.dart index bc7308c2..3ae483c6 100644 --- a/mvu/test/data.dart +++ b/mvu/test/data.dart @@ -5,24 +5,23 @@ import 'package:dartea/dartea.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; List createTodos({bool complete}) => [ - new TodoEntity('Buy milk', '1', 'soy', complete ?? false), - new TodoEntity('Buy bread', '2', 'italian one', complete ?? true), - new TodoEntity('Buy meat', '3', 'or chicken', complete ?? false), - new TodoEntity( - 'Buy water', '4', 'carbonated and still', complete ?? true), - new TodoEntity('Read book', '5', 'interesting one', complete ?? false), - new TodoEntity('Watch football', '6', '', complete ?? true), - new TodoEntity('Sleep', '7', 'well', complete ?? false), + TodoEntity('Buy milk', '1', 'soy', complete ?? false), + TodoEntity('Buy bread', '2', 'italian one', complete ?? true), + TodoEntity('Buy meat', '3', 'or chicken', complete ?? false), + TodoEntity('Buy water', '4', 'carbonated and still', complete ?? true), + TodoEntity('Read book', '5', 'interesting one', complete ?? false), + TodoEntity('Watch football', '6', '', complete ?? true), + TodoEntity('Sleep', '7', 'well', complete ?? false), ]; List createTodosForStats(int activeCount, int completedCount) { - var result = List(); - for (int i = 0; i < activeCount; i++) { + final result = []; + for (var i = 0; i < activeCount; i++) { var todo = TodoEntity('todo $i', '$i', 'note for todo #$i', false); result.add(todo); } var totalLength = result.length + completedCount; - for (int i = result.length; i < totalLength; i++) { + for (var i = result.length; i < totalLength; i++) { var todo = TodoEntity('todo $i', '$i', 'note for todo #$i', true); result.add(todo); } @@ -30,7 +29,7 @@ List createTodosForStats(int activeCount, int completedCount) { } class InMemoryTodosRepository implements TodosRepository { - List items = List(); + final items = []; final bool isBrokern; InMemoryTodosRepository( {Iterable initialItems, this.isBrokern = false}) { @@ -54,12 +53,12 @@ class InMemoryTodosRepository implements TodosRepository { } class TestTodosCmdRepository implements CmdRepository { - final List createdEffects = List(); + final createdEffects = []; @override Cmd createCmd( T Function(TodoEntity todo) onSuccess, String task, String note) { - final entity = TodoEntity(task, "new_id", note, false); + final entity = TodoEntity(task, 'new_id', note, false); createdEffects.add(CreateTodoEffect(task, note)); return Cmd.ofFunc(() => entity, onSuccess: onSuccess); } diff --git a/mvu/test/home_screen_test.dart b/mvu/test/home_screen_test.dart index 2e2c50b9..ccf959e8 100644 --- a/mvu/test/home_screen_test.dart +++ b/mvu/test/home_screen_test.dart @@ -18,21 +18,20 @@ void main() { expect(model.body.tag, equals(currentTab)); currentTab = AppTab.stats; - var updatedModel = update(new TabChangedMessage(currentTab), model).model; + var updatedModel = update(TabChangedMessage(currentTab), model).model; expect(updatedModel.body.tag, equals(currentTab)); currentTab = AppTab.todos; - updatedModel = update(new TabChangedMessage(currentTab), model).model; + updatedModel = update(TabChangedMessage(currentTab), model).model; expect(updatedModel.body.tag, equals(currentTab)); }); - test( - 'TabChangedMessage: model is not changed if current and new tab are same', + test('TabChangedMessage: model is not changed if current and tab are same', () { var currentTab = AppTab.todos; var model = init(currentTab).model; expect(model.body.tag, equals(currentTab)); - var updatedModel = update(new TabChangedMessage(currentTab), model).model; + var updatedModel = update(TabChangedMessage(currentTab), model).model; expect(updatedModel, equals(model)); }); }); diff --git a/mvu/test/repository_commads_test.dart b/mvu/test/repository_commads_test.dart index 499f1a0d..b76c73fa 100644 --- a/mvu/test/repository_commads_test.dart +++ b/mvu/test/repository_commads_test.dart @@ -41,6 +41,7 @@ void main() { final saveCmd = cmdRepository.saveAllCmd(items, onSuccess: expectAsync0(() { expect(todosRepository.items, orderedEquals(items)); + return null; })); runner.run(saveCmd); @@ -51,6 +52,7 @@ void main() { final cmd = cmdRepository.removeCmd(itemToRemove, onSuccess: expectAsync0(() { expect(todosRepository.items, isNot(contains(itemToRemove))); + return null; })); runner.run(cmd); @@ -64,6 +66,7 @@ void main() { final cmd = cmdRepository.saveCmd(updated, onSuccess: expectAsync0(() { expect(todosRepository.items, contains(updated)); + return null; })); runner.run(cmd); @@ -78,6 +81,7 @@ void main() { todosRepository.items, anyElement(predicate( (x) => x.note == note && x.task == task && !x.complete))); + return null; }), task, note); runner.run(cmd); @@ -93,6 +97,7 @@ void main() { todosRepository.items, anyElement(predicate((x) => x.id == idToUpdate && x.note == note && x.task == task))); + return null; }), idToUpdate, task, note); runner.run(cmd); diff --git a/mvu/test/stats_screen_test.dart b/mvu/test/stats_screen_test.dart index 8cdf35fa..b64bffde 100644 --- a/mvu/test/stats_screen_test.dart +++ b/mvu/test/stats_screen_test.dart @@ -48,7 +48,7 @@ void main() { test('OnStatsLoaded: stats is displayed', () { var model = init().model; - int activeCount = 5, completedCount = 8; + var activeCount = 5, completedCount = 8; var items = createTodosForStats(activeCount, completedCount); var updatedModel = update(_cmdRepo, OnStatsLoaded(items), model).model; @@ -87,7 +87,7 @@ void main() { test('ToggleAllMessage(partially): stats is updated', () { var model = init().model; - int activeCount = 3, completedCount = 6; + var activeCount = 3, completedCount = 6; var items = createTodosForStats(activeCount, completedCount); var updatedModel = update(_cmdRepo, OnStatsLoaded(items), model).model; @@ -101,7 +101,7 @@ void main() { test('CleareCompletedMessage: stats is updated', () { var model = init().model; - int activeCount = 3, completedCount = 6; + var activeCount = 3, completedCount = 6; var items = createTodosForStats(activeCount, completedCount); var updatedModel = update(_cmdRepo, OnStatsLoaded(items), model).model; diff --git a/mvu/test/todos_screen_test.dart b/mvu/test/todos_screen_test.dart index ec018906..712d41de 100644 --- a/mvu/test/todos_screen_test.dart +++ b/mvu/test/todos_screen_test.dart @@ -39,7 +39,7 @@ void main() { test('LoadTodos: model is in loading state', () { var model = init(VisibilityFilter.all).model; - var upd = update(_cmdRepo, new LoadTodos(), model); + var upd = update(_cmdRepo, LoadTodos(), model); final updatedModel = upd.model; _cmdRunner.run(upd.effects); @@ -54,7 +54,7 @@ void main() { test('OnTodosLoaded: todos are loaded', () { var model = init(VisibilityFilter.all).model; var items = createTodos(); - var upd = update(_cmdRepo, new OnTodosLoaded(items), model); + var upd = update(_cmdRepo, OnTodosLoaded(items), model); final updatedModel = upd.model; expect(updatedModel.isLoading, isFalse); @@ -64,8 +64,8 @@ void main() { test('OnTodosLoadError: model is in error state', () { var model = init(VisibilityFilter.all).model; - var cause = new Exception("No connection"); - var upd = update(_cmdRepo, new OnTodosLoadError(cause), model); + var cause = Exception('No connection'); + var upd = update(_cmdRepo, OnTodosLoadError(cause), model); final updatedModel = upd.model; expect(updatedModel.isLoading, isFalse); @@ -77,12 +77,14 @@ void main() { var items = createTodos().map((x) => TodoModel.fromEntity(x)); var model = _createWith(items); - List repoEffectsMatchers = List(); + var repoEffectsMatchers = []; for (var item in items) { - var upd = update(_cmdRepo, new UpdateTodo(!item.complete, item), model); + var upd = update(_cmdRepo, UpdateTodo(!item.complete, item), model); final updatedModel = upd.model; - var updatedTodo = - updatedModel.items.firstWhere((x) => x.id == item.id, orElse: null); + var updatedTodo = updatedModel.items.firstWhere( + (x) => x.id == item.id, + orElse: () => null, + ); _cmdRunner.run(upd.effects); expect(updatedModel.items.length, items.length); @@ -98,9 +100,9 @@ void main() { var items = createTodos().map((x) => TodoModel.fromEntity(x)); var model = _createWith(items); - List repoEffectsMatchers = List(); + final repoEffectsMatchers = []; for (var item in items) { - var upd = update(_cmdRepo, new RemoveTodo(item), model); + var upd = update(_cmdRepo, RemoveTodo(item), model); final updatedModel = upd.model; _cmdRunner.run(upd.effects); @@ -115,11 +117,11 @@ void main() { var model = _createWith(items); for (var itemToRemove in items) { - var upd = update(_cmdRepo, new RemoveTodo(itemToRemove), model); + var upd = update(_cmdRepo, RemoveTodo(itemToRemove), model); final updatedModel = upd.model; expect(updatedModel.items, isNot(contains(itemToRemove))); final undoUpd = - update(_cmdRepo, new UndoRemoveItem(itemToRemove), updatedModel); + update(_cmdRepo, UndoRemoveItem(itemToRemove), updatedModel); final undoModel = undoUpd.model; expect(undoModel.items, contains(itemToRemove)); } @@ -131,7 +133,7 @@ void main() { expect(model.filter, equals(currentFilter)); for (var filter in VisibilityFilter.values) { - var upd = update(_cmdRepo, new FilterChanged(filter), model); + var upd = update(_cmdRepo, FilterChanged(filter), model); expect(upd.model.filter, equals(filter)); } }); @@ -141,7 +143,7 @@ void main() { createTodos(complete: false).map((x) => TodoModel.fromEntity(x)); var model = _createWith(items); - var upd = update(_cmdRepo, new ToggleAllMessage(), model); + var upd = update(_cmdRepo, ToggleAllMessage(), model); _cmdRunner.run(upd.effects); expect(upd.model.items, @@ -155,7 +157,7 @@ void main() { createTodos(complete: true).map((x) => TodoModel.fromEntity(x)); var model = _createWith(items); - var upd = update(_cmdRepo, new ToggleAllMessage(), model); + var upd = update(_cmdRepo, ToggleAllMessage(), model); expect(upd.model.items, everyElement(predicate((x) => !x.complete))); @@ -166,7 +168,7 @@ void main() { var model = _createWith(items); expect(model.items, anyElement(predicate((x) => x.complete))); - var upd = update(_cmdRepo, new CleareCompletedMessage(), model); + var upd = update(_cmdRepo, CleareCompletedMessage(), model); _cmdRunner.run(upd.effects); expect(upd.model.items, @@ -179,7 +181,7 @@ void main() { var items = createTodos().map((x) => TodoModel.fromEntity(x)); var model = _createWith(items); - var upd = update(_cmdRepo, new ShowDetailsMessage(items.first), model); + var upd = update(_cmdRepo, ShowDetailsMessage(items.first), model); expect(upd.model, equals(model)); }); @@ -193,8 +195,8 @@ void main() { ..note = b.note + 'v1' ..task = b.task + 'v1'); - var upd = update(_cmdRepo, - new OnTodoItemChanged(updated: itemToUpdate.toEntity()), model); + var upd = update( + _cmdRepo, OnTodoItemChanged(updated: itemToUpdate.toEntity()), model); var updatedItem = upd.model.items.firstWhere((x) => x.id == itemToUpdate.id); @@ -207,8 +209,8 @@ void main() { var itemToRemove = items.first; - var upd = update(_cmdRepo, - new OnTodoItemChanged(removed: itemToRemove.toEntity()), model); + var upd = update( + _cmdRepo, OnTodoItemChanged(removed: itemToRemove.toEntity()), model); expect(upd.model.items, isNot(contains(itemToRemove))); }); @@ -217,17 +219,16 @@ void main() { var items = createTodos().map((x) => TodoModel.fromEntity(x)); var model = _createWith(items); - var newItem = new TodoEntity('New one', '11234', 'some note', false); + var newItem = TodoEntity('New one', '11234', 'some note', false); - var upd = - update(_cmdRepo, new OnTodoItemChanged(created: newItem), model); + var upd = update(_cmdRepo, OnTodoItemChanged(created: newItem), model); expect(upd.model.items, contains(TodoModel.fromEntity(newItem))); }); }); } -TodosModel _createWith(Iterable items) => new TodosModel((b) => b +TodosModel _createWith(Iterable items) => TodosModel((b) => b ..filter = VisibilityFilter.all ..isLoading = false - ..items = new BuiltList(items).toBuilder()); + ..items = BuiltList(items).toBuilder()); diff --git a/mvu/test_driver/todo_app_test.dart b/mvu/test_driver/todo_app_test.dart index c159812d..1c5a586c 100644 --- a/mvu/test_driver/todo_app_test.dart +++ b/mvu/test_driver/todo_app_test.dart @@ -1,5 +1,5 @@ -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } diff --git a/redux/lib/localization.dart b/redux/lib/localization.dart index d290aab7..e0335b55 100644 --- a/redux/lib/localization.dart +++ b/redux/lib/localization.dart @@ -14,7 +14,7 @@ class ReduxLocalizations { ); } - String get appTitle => "Redux Example"; + String get appTitle => 'Redux Example'; } class ReduxLocalizationsDelegate @@ -28,5 +28,5 @@ class ReduxLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/redux/lib/middleware/store_todos_middleware.dart b/redux/lib/middleware/store_todos_middleware.dart index 3e635e74..4af46622 100644 --- a/redux/lib/middleware/store_todos_middleware.dart +++ b/redux/lib/middleware/store_todos_middleware.dart @@ -12,7 +12,7 @@ import 'package:todos_repository_simple/todos_repository_simple.dart'; List> createStoreTodosMiddleware([ TodosRepository repository = const TodosRepositoryFlutter( - fileStorage: const FileStorage( + fileStorage: FileStorage( '__redux_app__', getApplicationDocumentsDirectory, ), diff --git a/redux/lib/models/todo.dart b/redux/lib/models/todo.dart index 922c4de4..025120dc 100644 --- a/redux/lib/models/todo.dart +++ b/redux/lib/models/todo.dart @@ -14,8 +14,8 @@ class Todo { final String task; Todo(this.task, {this.complete = false, String note = '', String id}) - : this.note = note ?? '', - this.id = id ?? Uuid().generateV4(); + : note = note ?? '', + id = id ?? Uuid().generateV4(); Todo copyWith({bool complete, String id, String note, String task}) { return Todo( diff --git a/redux/lib/presentation/add_edit_screen.dart b/redux/lib/presentation/add_edit_screen.dart index 428551b2..a53fd98b 100644 --- a/redux/lib/presentation/add_edit_screen.dart +++ b/redux/lib/presentation/add_edit_screen.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; import 'package:todos_app_core/todos_app_core.dart'; import 'package:redux_sample/models/models.dart'; -typedef OnSaveCallback = Function(String task, String note); +typedef OnSaveCallback = void Function(String task, String note); class AddEditScreen extends StatefulWidget { final bool isEditing; diff --git a/redux/lib/presentation/home_screen.dart b/redux/lib/presentation/home_screen.dart index 02ad8aa4..22f8db27 100644 --- a/redux/lib/presentation/home_screen.dart +++ b/redux/lib/presentation/home_screen.dart @@ -19,9 +19,7 @@ class HomeScreen extends StatefulWidget { HomeScreen({@required this.onInit}) : super(key: ArchSampleKeys.homeScreen); @override - HomeScreenState createState() { - return new HomeScreenState(); - } + HomeScreenState createState() => HomeScreenState(); } class HomeScreenState extends State { diff --git a/redux/lib/presentation/stats_counter.dart b/redux/lib/presentation/stats_counter.dart index 162e4571..55fe82e5 100644 --- a/redux/lib/presentation/stats_counter.dart +++ b/redux/lib/presentation/stats_counter.dart @@ -57,7 +57,7 @@ class StatsCounter extends StatelessWidget { Padding( padding: EdgeInsets.only(bottom: 24.0), child: Text( - "$numActive", + '$numActive', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subhead, ), diff --git a/redux/lib/presentation/typedefs.dart b/redux/lib/presentation/typedefs.dart index 76e32849..ace7d67f 100644 --- a/redux/lib/presentation/typedefs.dart +++ b/redux/lib/presentation/typedefs.dart @@ -4,8 +4,8 @@ import 'package:redux_sample/models/models.dart'; -typedef TodoAdder(Todo todo); +typedef TodoAdder = void Function(Todo todo); -typedef TodoRemover(String id); +typedef TodoRemover = void Function(String id); -typedef TodoUpdater(String id, Todo todo); +typedef TodoUpdater = void Function(String id, Todo todo); diff --git a/redux/test/all_tests.dart b/redux/test/all_tests.dart index a92d5d02..53c95150 100644 --- a/redux/test/all_tests.dart +++ b/redux/test/all_tests.dart @@ -2,7 +2,7 @@ import 'middleware_test.dart' as middleware; import 'reducer_test.dart' as reducer; import 'selectors_test.dart' as selector; -main() { +void main() { middleware.main(); reducer.main(); selector.main(); diff --git a/redux/test/middleware_test.dart b/redux/test/middleware_test.dart index 2a7f7d69..a5460d4e 100644 --- a/redux/test/middleware_test.dart +++ b/redux/test/middleware_test.dart @@ -13,7 +13,7 @@ import 'package:todos_repository_core/todos_repository_core.dart'; class MockTodosRepository extends Mock implements TodosRepository {} -main() { +void main() { group('Save State Middleware', () { test('should load the todos in response to a LoadTodosAction', () { final repository = MockTodosRepository(); @@ -23,7 +23,7 @@ main() { middleware: createStoreTodosMiddleware(repository), ); final todos = [ - TodoEntity("Moin", "1", "Note", false), + TodoEntity('Moin', '1', 'Note', false), ]; when(repository.loadTodos()).thenAnswer((_) => Future.value(todos)); @@ -40,15 +40,15 @@ main() { initialState: AppState.loading(), middleware: createStoreTodosMiddleware(repository), ); - final todo = Todo("Hallo"); + final todo = Todo('Hallo'); store.dispatch(AddTodoAction(todo)); store.dispatch(ClearCompletedAction()); store.dispatch(ToggleAllAction()); - store.dispatch(TodosLoadedAction([Todo("Hi")])); + store.dispatch(TodosLoadedAction([Todo('Hi')])); store.dispatch(ToggleAllAction()); - store.dispatch(UpdateTodoAction("", Todo(""))); - store.dispatch(DeleteTodoAction("")); + store.dispatch(UpdateTodoAction('', Todo(''))); + store.dispatch(DeleteTodoAction('')); verify(repository.saveTodos(any)).called(7); }); diff --git a/redux/test/reducer_test.dart b/redux/test/reducer_test.dart index 3a1fb185..d22cfa55 100644 --- a/redux/test/reducer_test.dart +++ b/redux/test/reducer_test.dart @@ -9,14 +9,14 @@ import 'package:redux_sample/models/models.dart'; import 'package:redux_sample/reducers/app_state_reducer.dart'; import 'package:redux_sample/selectors/selectors.dart'; -main() { +void main() { group('State Reducer', () { test('should add a todo to the list in response to an AddTodoAction', () { final store = Store( appReducer, initialState: AppState.loading(), ); - final todo = Todo("Hallo"); + final todo = Todo('Hallo'); store.dispatch(AddTodoAction(todo)); @@ -24,7 +24,7 @@ main() { }); test('should remove from the list in response to a DeleteTodoAction', () { - final todo = Todo("Hallo"); + final todo = Todo('Hallo'); final store = Store( appReducer, initialState: AppState(todos: [todo]), @@ -38,8 +38,8 @@ main() { }); test('should update a todo in response to an UpdateTodoAction', () { - final todo = Todo("Hallo"); - final updatedTodo = todo.copyWith(task: "Tschüss"); + final todo = Todo('Hallo'); + final updatedTodo = todo.copyWith(task: 'Tschüss'); final store = Store( appReducer, initialState: AppState(todos: [todo]), @@ -51,8 +51,8 @@ main() { }); test('should clear completed todos', () { - final todo1 = Todo("Hallo"); - final todo2 = Todo("Tschüss", complete: true); + final todo1 = Todo('Hallo'); + final todo2 = Todo('Tschüss', complete: true); final store = Store( appReducer, initialState: AppState(todos: [todo1, todo2]), @@ -66,8 +66,8 @@ main() { }); test('should mark all as completed if some todos are incomplete', () { - final todo1 = Todo("Hallo"); - final todo2 = Todo("Tschüss", complete: true); + final todo1 = Todo('Hallo'); + final todo2 = Todo('Tschüss', complete: true); final store = Store( appReducer, initialState: AppState(todos: [todo1, todo2]), @@ -81,8 +81,8 @@ main() { }); test('should mark all as incomplete if all todos are complete', () { - final todo1 = Todo("Hallo", complete: true); - final todo2 = Todo("Tschüss", complete: true); + final todo1 = Todo('Hallo', complete: true); + final todo2 = Todo('Tschüss', complete: true); final store = Store( appReducer, initialState: AppState(todos: [todo1, todo2]), diff --git a/redux/test/selectors_test.dart b/redux/test/selectors_test.dart index 62043997..0e14a591 100644 --- a/redux/test/selectors_test.dart +++ b/redux/test/selectors_test.dart @@ -7,7 +7,7 @@ import 'package:quiver/core.dart'; import 'package:redux_sample/models/models.dart'; import 'package:redux_sample/selectors/selectors.dart'; -main() { +void main() { group('Selectors', () { test('should calculate the number of active todos', () { final todos = [ @@ -70,7 +70,7 @@ main() { }); test('should return an Optional todo based on id', () { - final todo1 = Todo('a', id: "1"); + final todo1 = Todo('a', id: '1'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); final todos = [ @@ -79,11 +79,11 @@ main() { todo3, ]; - expect(todoSelector(todos, "1"), Optional.of(todo1)); + expect(todoSelector(todos, '1'), Optional.of(todo1)); }); test('should return an absent Optional if the id is not found', () { - final todo1 = Todo('a', id: "1"); + final todo1 = Todo('a', id: '1'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); final todos = [ @@ -92,7 +92,7 @@ main() { todo3, ]; - expect(todoSelector(todos, "2"), Optional.absent()); + expect(todoSelector(todos, '2'), Optional.absent()); }); }); } diff --git a/redux/test_driver/todo_app_test.dart b/redux/test_driver/todo_app_test.dart index 14ddb566..ad93f5a5 100644 --- a/redux/test_driver/todo_app_test.dart +++ b/redux/test_driver/todo_app_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } diff --git a/scoped_model/lib/localization.dart b/scoped_model/lib/localization.dart index 833b2e6f..e2b43d69 100644 --- a/scoped_model/lib/localization.dart +++ b/scoped_model/lib/localization.dart @@ -12,7 +12,7 @@ class ScopedModelLocalizations { context, ScopedModelLocalizations); } - String get appTitle => "scoped_model example"; + String get appTitle => 'scoped_model example'; } class ScopedModelLocalizationsDelegate @@ -26,5 +26,5 @@ class ScopedModelLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/scoped_model/lib/main.dart b/scoped_model/lib/main.dart index c9f11e6a..d529dcb4 100644 --- a/scoped_model/lib/main.dart +++ b/scoped_model/lib/main.dart @@ -9,7 +9,7 @@ import 'package:todos_repository_simple/todos_repository_simple.dart'; void main() { var todoRepo = const TodosRepositoryFlutter( - fileStorage: const FileStorage( + fileStorage: FileStorage( 'scoped_model_todos', getApplicationDocumentsDirectory, ), diff --git a/scoped_model/lib/models.dart b/scoped_model/lib/models.dart index dd0519d5..699321cb 100644 --- a/scoped_model/lib/models.dart +++ b/scoped_model/lib/models.dart @@ -16,7 +16,7 @@ class Todo { final String task; Todo(this.task, {this.complete = false, this.note = '', String id}) - : this.id = id ?? Uuid().generateV4(); + : id = id ?? Uuid().generateV4(); @override int get hashCode => diff --git a/scoped_model/lib/screens/home_screen.dart b/scoped_model/lib/screens/home_screen.dart index e27ca326..60fa8e2f 100644 --- a/scoped_model/lib/screens/home_screen.dart +++ b/scoped_model/lib/screens/home_screen.dart @@ -67,7 +67,7 @@ class HomeScreenState extends State { ); } - _updateTab(AppTab tab) { + void _updateTab(AppTab tab) { setState(() { _activeTab = tab; }); diff --git a/scoped_model/lib/todo_list_model.dart b/scoped_model/lib/todo_list_model.dart index de001144..a4ec9860 100644 --- a/scoped_model/lib/todo_list_model.dart +++ b/scoped_model/lib/todo_list_model.dart @@ -31,7 +31,7 @@ class TodoListModel extends Model { bool get isLoading => _isLoading; TodoListModel({@required this.repository, VisibilityFilter activeFilter}) - : this._activeFilter = activeFilter ?? VisibilityFilter.all; + : _activeFilter = activeFilter ?? VisibilityFilter.all; /// Wraps [ScopedModel.of] for this [Model]. See [ScopedModel.of] for more static TodoListModel of(BuildContext context) => diff --git a/scoped_model/lib/widgets/stats_counter.dart b/scoped_model/lib/widgets/stats_counter.dart index 0761de85..9a9df978 100644 --- a/scoped_model/lib/widgets/stats_counter.dart +++ b/scoped_model/lib/widgets/stats_counter.dart @@ -52,7 +52,7 @@ class StatsCounter extends StatelessWidget { Padding( padding: EdgeInsets.only(bottom: 24.0), child: Text( - "$numActive", + '$numActive', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subhead, ), diff --git a/scoped_model/lib/widgets/typedefs.dart b/scoped_model/lib/widgets/typedefs.dart index e5af4546..838fa8af 100644 --- a/scoped_model/lib/widgets/typedefs.dart +++ b/scoped_model/lib/widgets/typedefs.dart @@ -4,11 +4,11 @@ import 'package:scoped_model_sample/models.dart'; -typedef TodoAdder(Todo todo); +typedef TodoAdder = void Function(Todo todo); -typedef TodoRemover(Todo todo); +typedef TodoRemover = void Function(Todo todo); -typedef TodoUpdater( +typedef TodoUpdater = void Function( Todo todo, { bool complete, String id, diff --git a/scoped_model/test/app_state_test.dart b/scoped_model/test/app_state_test.dart index 5f054166..53c6fb51 100644 --- a/scoped_model/test/app_state_test.dart +++ b/scoped_model/test/app_state_test.dart @@ -9,7 +9,7 @@ import 'package:scoped_model_sample/todo_list_model.dart'; import 'package:test/test.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -main() { +void main() { group('TodoListModel', () { test('should check if there are completed todos', () async { final model = TodoListModel( @@ -153,7 +153,7 @@ class MockRepository extends TodosRepository { List entities; MockRepository(List todos) - : this.entities = todos.map((it) => it.toEntity()).toList(); + : entities = todos.map((it) => it.toEntity()).toList(); @override Future> loadTodos() { diff --git a/scoped_model/test_driver/todo_app_test.dart b/scoped_model/test_driver/todo_app_test.dart index 14ddb566..ad93f5a5 100644 --- a/scoped_model/test_driver/todo_app_test.dart +++ b/scoped_model/test_driver/todo_app_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } diff --git a/scripts/runTests.sh b/scripts/runTests.sh index bcf10ca2..69ebb612 100755 --- a/scripts/runTests.sh +++ b/scripts/runTests.sh @@ -34,11 +34,8 @@ runTests () { echo "running tests in $1" # flutter packages get || echo "Ignore exit(1)" flutter packages get - # check if build_runner needs to be run - # todo: fix build in ./built_redux (not regenerating *.g.dart files in dart 2.0) - if grep build_runner pubspec.yaml > /dev/null && [[ "$package_dir" != "./built_redux" ]]; then - flutter packages pub run build_runner build --delete-conflicting-outputs - fi + flutter analyze + flutter dartfmt -n --set-exit-if-changed ./ # run tests with coverage if grep flutter pubspec.yaml > /dev/null; then diff --git a/simple_bloc_flutter/lib/localization.dart b/simple_bloc_flutter/lib/localization.dart index 8fb4c0b0..78698325 100644 --- a/simple_bloc_flutter/lib/localization.dart +++ b/simple_bloc_flutter/lib/localization.dart @@ -11,7 +11,7 @@ class BlocLocalizations { return Localizations.of(context, BlocLocalizations); } - String get appTitle => "Bloc Example"; + String get appTitle => 'Bloc Example'; } class InheritedWidgetLocalizationsDelegate @@ -25,5 +25,5 @@ class InheritedWidgetLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/simple_bloc_flutter/lib/widgets/stats_counter.dart b/simple_bloc_flutter/lib/widgets/stats_counter.dart index 2d6cb6f2..17d2d98d 100644 --- a/simple_bloc_flutter/lib/widgets/stats_counter.dart +++ b/simple_bloc_flutter/lib/widgets/stats_counter.dart @@ -66,7 +66,7 @@ class StatsCounterState extends State { stream: bloc.numActive, builder: (context, snapshot) { return Text( - "${snapshot.data ?? 0}", + '${snapshot.data ?? 0}', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subhead, ); diff --git a/simple_bloc_flutter/test_driver/todo_app_test.dart b/simple_bloc_flutter/test_driver/todo_app_test.dart index 14ddb566..ad93f5a5 100644 --- a/simple_bloc_flutter/test_driver/todo_app_test.dart +++ b/simple_bloc_flutter/test_driver/todo_app_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } diff --git a/simple_blocs/test/stats_bloc_test.dart b/simple_blocs/test/stats_bloc_test.dart index 1fac7b76..765a4e5d 100644 --- a/simple_blocs/test/stats_bloc_test.dart +++ b/simple_blocs/test/stats_bloc_test.dart @@ -15,8 +15,8 @@ void main() { final interactor = MockTodosInteractor(); final bloc = StatsBloc(interactor); final todos = [ - Todo("Hallo", complete: true), - Todo("Friend"), + Todo('Hallo', complete: true), + Todo('Friend'), ]; final source = BehaviorSubject>.seeded(todos); @@ -29,8 +29,8 @@ void main() { final interactor = MockTodosInteractor(); final bloc = StatsBloc(interactor); final todos = [ - Todo("Hallo", complete: true), - Todo("Friend", complete: true), + Todo('Hallo', complete: true), + Todo('Friend', complete: true), ]; final source = BehaviorSubject>.seeded(todos); diff --git a/simple_blocs/test/todos_interactor_test.dart b/simple_blocs/test/todos_interactor_test.dart index 16c41410..9e372f1c 100644 --- a/simple_blocs/test/todos_interactor_test.dart +++ b/simple_blocs/test/todos_interactor_test.dart @@ -18,7 +18,7 @@ void main() { test('should convert repo entities into Todos', () { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); - final todos = [TodoEntity("Hallo", "1", "Note", false)]; + final todos = [TodoEntity('Hallo', '1', "Note", false)]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -29,8 +29,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", false), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", false), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -42,8 +42,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", true), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", true), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -54,8 +54,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", true), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", true), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -67,8 +67,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", false), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", false), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -80,8 +80,8 @@ void main() { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", false), - TodoEntity("Friend", "2", "Note", false), + TodoEntity('Hallo', '1', "Note", false), + TodoEntity('Friend', '2', "Note", false), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); @@ -108,35 +108,35 @@ void main() { final interactor = TodosInteractor(repository); when(repository.todos()).thenAnswer((_) => Stream.empty()); - when(repository.deleteTodo(["1"])).thenAnswer((_) => Future.value()); + when(repository.deleteTodo(['1'])).thenAnswer((_) => Future.value()); - interactor.deleteTodo("1"); + interactor.deleteTodo('1'); - verify(repository.deleteTodo(["1"])); + verify(repository.deleteTodo(['1'])); }); test('should remove completed todos from the repo', () async { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); final todos = [ - TodoEntity("Hallo", "1", "Note", false), - TodoEntity("Friend", "2", "Note", true), + TodoEntity('Hallo', '1', "Note", false), + TodoEntity('Friend', '2', "Note", true), ]; when(repository.todos()).thenAnswer((_) => Stream.fromIterable([todos])); - when(repository.deleteTodo(["2"])).thenAnswer((_) => Future.sync(() {})); + when(repository.deleteTodo(['2'])).thenAnswer((_) => Future.sync(() {})); await interactor.clearCompleted(); - verify(repository.deleteTodo(["2"])); + verify(repository.deleteTodo(['2'])); }); test('if some todos incomplete, should toggle todos complete', () async { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); - final e1 = TodoEntity("Hallo", "1", "Note", false); - final e1Update = TodoEntity("Hallo", "1", "Note", true); - final e2 = TodoEntity("Friend", "2", "Note", true); + final e1 = TodoEntity('Hallo', '1', "Note", false); + final e1Update = TodoEntity('Hallo', '1', "Note", true); + final e2 = TodoEntity('Friend', '2', "Note", true); final todos = [e1, e2]; final source = BehaviorSubject>.seeded( todos, @@ -155,10 +155,10 @@ void main() { test('if all todos incomplete, should toggle all todos complete', () async { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); - final e1 = TodoEntity("Hallo", "1", "Note", false); - final e1Update = TodoEntity("Hallo", "1", "Note", true); - final e2 = TodoEntity("Friend", "2", "Note", false); - final e2Update = TodoEntity("Friend", "2", "Note", true); + final e1 = TodoEntity('Hallo', '1', "Note", false); + final e1Update = TodoEntity('Hallo', '1', "Note", true); + final e2 = TodoEntity('Friend', '2', "Note", false); + final e2Update = TodoEntity('Friend', '2', "Note", true); final todos = [e1, e2]; final source = BehaviorSubject>.seeded( todos, @@ -180,10 +180,10 @@ void main() { test('if all todos complete, should toggle todos incomplete', () async { final repository = MockReactiveTodosRepository(); final interactor = TodosInteractor(repository); - final e1 = TodoEntity("Hallo", "1", "Note", true); - final e1Update = TodoEntity("Hallo", "1", "Note", false); - final e2 = TodoEntity("Friend", "2", "Note", true); - final e2Update = TodoEntity("Friend", "2", "Note", false); + final e1 = TodoEntity('Hallo', '1', "Note", true); + final e1Update = TodoEntity('Hallo', '1', "Note", false); + final e2 = TodoEntity('Friend', '2', "Note", true); + final e2Update = TodoEntity('Friend', '2', "Note", false); final todos = [e1, e2]; final source = BehaviorSubject>.seeded( todos, diff --git a/todos_app_core/lib/src/keys.dart b/todos_app_core/lib/src/keys.dart index 82bb5388..7c088f95 100644 --- a/todos_app_core/lib/src/keys.dart +++ b/todos_app_core/lib/src/keys.dart @@ -6,14 +6,14 @@ import 'package:flutter/widgets.dart'; class ArchSampleKeys { // Home Screens - static const homeScreen = const Key('__homeScreen__'); - static const addTodoFab = const Key('__addTodoFab__'); - static const snackbar = const Key('__snackbar__'); + static const homeScreen = Key('__homeScreen__'); + static const addTodoFab = Key('__addTodoFab__'); + static const snackbar = Key('__snackbar__'); static Key snackbarAction(String id) => Key('__snackbar_action_${id}__'); // Todos - static const todoList = const Key('__todoList__'); - static const todosLoading = const Key('__todosLoading__'); + static const todoList = Key('__todoList__'); + static const todosLoading = Key('__todosLoading__'); static final todoItem = (String id) => Key('TodoItem__${id}'); static final todoItemCheckbox = (String id) => Key('TodoItem__${id}__Checkbox'); @@ -21,42 +21,42 @@ class ArchSampleKeys { static final todoItemNote = (String id) => Key('TodoItem__${id}__Note'); // Tabs - static const tabs = const Key('__tabs__'); - static const todoTab = const Key('__todoTab__'); - static const statsTab = const Key('__statsTab__'); + static const tabs = Key('__tabs__'); + static const todoTab = Key('__todoTab__'); + static const statsTab = Key('__statsTab__'); // Extra Actions - static const extraActionsButton = const Key('__extraActionsButton__'); - static const toggleAll = const Key('__markAllDone__'); - static const clearCompleted = const Key('__clearCompleted__'); + static const extraActionsButton = Key('__extraActionsButton__'); + static const toggleAll = Key('__markAllDone__'); + static const clearCompleted = Key('__clearCompleted__'); // Filters - static const filterButton = const Key('__filterButton__'); - static const allFilter = const Key('__allFilter__'); - static const activeFilter = const Key('__activeFilter__'); - static const completedFilter = const Key('__completedFilter__'); + static const filterButton = Key('__filterButton__'); + static const allFilter = Key('__allFilter__'); + static const activeFilter = Key('__activeFilter__'); + static const completedFilter = Key('__completedFilter__'); // Stats - static const statsCounter = const Key('__statsCounter__'); - static const statsLoading = const Key('__statsLoading__'); - static const statsNumActive = const Key('__statsActiveItems__'); - static const statsNumCompleted = const Key('__statsCompletedItems__'); + static const statsCounter = Key('__statsCounter__'); + static const statsLoading = Key('__statsLoading__'); + static const statsNumActive = Key('__statsActiveItems__'); + static const statsNumCompleted = Key('__statsCompletedItems__'); // Details Screen - static const editTodoFab = const Key('__editTodoFab__'); - static const deleteTodoButton = const Key('__deleteTodoFab__'); - static const todoDetailsScreen = const Key('__todoDetailsScreen__'); + static const editTodoFab = Key('__editTodoFab__'); + static const deleteTodoButton = Key('__deleteTodoFab__'); + static const todoDetailsScreen = Key('__todoDetailsScreen__'); static final detailsTodoItemCheckbox = Key('DetailsTodo__Checkbox'); static final detailsTodoItemTask = Key('DetailsTodo__Task'); static final detailsTodoItemNote = Key('DetailsTodo__Note'); // Add Screen - static const addTodoScreen = const Key('__addTodoScreen__'); - static const saveNewTodo = const Key('__saveNewTodo__'); - static const taskField = const Key('__taskField__'); - static const noteField = const Key('__noteField__'); + static const addTodoScreen = Key('__addTodoScreen__'); + static const saveNewTodo = Key('__saveNewTodo__'); + static const taskField = Key('__taskField__'); + static const noteField = Key('__noteField__'); // Edit Screen - static const editTodoScreen = const Key('__editTodoScreen__'); - static const saveTodoFab = const Key('__saveTodoFab__'); + static const editTodoScreen = Key('__editTodoScreen__'); + static const saveTodoFab = Key('__saveTodoFab__'); } diff --git a/todos_app_core/lib/src/localization.dart b/todos_app_core/lib/src/localization.dart index a8d97d68..642ddac3 100644 --- a/todos_app_core/lib/src/localization.dart +++ b/todos_app_core/lib/src/localization.dart @@ -205,5 +205,5 @@ class ArchSampleLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/todos_app_core/lib/src/localizations/messages_all.dart b/todos_app_core/lib/src/localizations/messages_all.dart index 06ff0fe0..839d9511 100644 --- a/todos_app_core/lib/src/localizations/messages_all.dart +++ b/todos_app_core/lib/src/localizations/messages_all.dart @@ -15,7 +15,7 @@ import 'package:intl/src/intl_helpers.dart'; import 'messages_en.dart' as messages_en; // ignore: implementation_imports -typedef Future LibraryLoader(); +typedef LibraryLoader = Future Function(); Map _deferredLibraries = { 'en': () => Future.value(null), }; diff --git a/todos_app_core/lib/src/localizations/messages_en.dart b/todos_app_core/lib/src/localizations/messages_en.dart index febd540e..572069b7 100644 --- a/todos_app_core/lib/src/localizations/messages_en.dart +++ b/todos_app_core/lib/src/localizations/messages_en.dart @@ -16,47 +16,49 @@ final messages = MessageLookup(); final _keepAnalysisHappy = Intl.defaultLocale; // ignore: non_constant_identifier_names -typedef MessageIfAbsent(String message_str, List args); +typedef MessageIfAbsent = void Function(String message_str, List args); class MessageLookup extends MessageLookupByLibrary { - get localeName => 'en'; + @override + String get localeName => 'en'; - static m0(task) => "Deleted \"${task}\""; + static String m0(task) => 'Deleted "${task}"'; + @override final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "activeTodos": MessageLookupByLibrary.simpleMessage("Active Todos"), - "addTodo": MessageLookupByLibrary.simpleMessage("Add Todo"), - "cancel": MessageLookupByLibrary.simpleMessage("Cancel"), - "clearCompleted": - MessageLookupByLibrary.simpleMessage("Clear completed"), - "completedTodos": - MessageLookupByLibrary.simpleMessage("Completed Todos"), - "delete": MessageLookupByLibrary.simpleMessage("Delete"), - "deleteTodo": MessageLookupByLibrary.simpleMessage("Delete Todo"), - "deleteTodoConfirmation": - MessageLookupByLibrary.simpleMessage("Delete this todo?"), - "editTodo": MessageLookupByLibrary.simpleMessage("Edit Todo"), - "emptyTodoError": - MessageLookupByLibrary.simpleMessage("Please enter some text"), - "filterTodos": MessageLookupByLibrary.simpleMessage("Filter Todos"), - "markAllComplete": - MessageLookupByLibrary.simpleMessage("Mark all complete"), - "markAllIncomplete": - MessageLookupByLibrary.simpleMessage("Mark all incomplete"), - "newTodoHint": - MessageLookupByLibrary.simpleMessage("What needs to be done?"), - "notesHint": - MessageLookupByLibrary.simpleMessage("Additional Notes..."), - "saveChanges": MessageLookupByLibrary.simpleMessage("Save changes"), - "showActive": MessageLookupByLibrary.simpleMessage("Show Active"), - "showAll": MessageLookupByLibrary.simpleMessage("Show All"), - "showCompleted": MessageLookupByLibrary.simpleMessage("Show Completed"), - "stats": MessageLookupByLibrary.simpleMessage("Stats"), - "todoDeleted": m0, - "todoDetails": MessageLookupByLibrary.simpleMessage("Todo Details"), - "todos": MessageLookupByLibrary.simpleMessage("Todos"), - "undo": MessageLookupByLibrary.simpleMessage("Undo") + static Map _notInlinedMessages(_) => { + 'activeTodos': MessageLookupByLibrary.simpleMessage('Active Todos'), + 'addTodo': MessageLookupByLibrary.simpleMessage('Add Todo'), + 'cancel': MessageLookupByLibrary.simpleMessage('Cancel'), + 'clearCompleted': + MessageLookupByLibrary.simpleMessage('Clear completed'), + 'completedTodos': + MessageLookupByLibrary.simpleMessage('Completed Todos'), + 'delete': MessageLookupByLibrary.simpleMessage('Delete'), + 'deleteTodo': MessageLookupByLibrary.simpleMessage('Delete Todo'), + 'deleteTodoConfirmation': + MessageLookupByLibrary.simpleMessage('Delete this todo?'), + 'editTodo': MessageLookupByLibrary.simpleMessage('Edit Todo'), + 'emptyTodoError': + MessageLookupByLibrary.simpleMessage('Please enter some text'), + 'filterTodos': MessageLookupByLibrary.simpleMessage('Filter Todos'), + 'markAllComplete': + MessageLookupByLibrary.simpleMessage('Mark all complete'), + 'markAllIncomplete': + MessageLookupByLibrary.simpleMessage('Mark all incomplete'), + 'newTodoHint': + MessageLookupByLibrary.simpleMessage('What needs to be done?'), + 'notesHint': + MessageLookupByLibrary.simpleMessage('Additional Notes...'), + 'saveChanges': MessageLookupByLibrary.simpleMessage('Save changes'), + 'showActive': MessageLookupByLibrary.simpleMessage('Show Active'), + 'showAll': MessageLookupByLibrary.simpleMessage('Show All'), + 'showCompleted': MessageLookupByLibrary.simpleMessage('Show Completed'), + 'stats': MessageLookupByLibrary.simpleMessage('Stats'), + 'todoDeleted': m0, + 'todoDetails': MessageLookupByLibrary.simpleMessage('Todo Details'), + 'todos': MessageLookupByLibrary.simpleMessage('Todos'), + 'undo': MessageLookupByLibrary.simpleMessage('Undo') }; } diff --git a/todos_app_core/lib/src/optional.dart b/todos_app_core/lib/src/optional.dart index 8c8e7639..59d8e146 100644 --- a/todos_app_core/lib/src/optional.dart +++ b/todos_app_core/lib/src/optional.dart @@ -18,14 +18,14 @@ class Optional extends IterableBase { /// Constructs an Optional of the given [value]. /// /// Throws [ArgumentError] if [value] is null. - Optional.of(T value) : this._value = value { - if (this._value == null) throw ArgumentError('Must not be null.'); + Optional.of(T value) : _value = value { + if (_value == null) throw ArgumentError('Must not be null.'); } /// Constructs an Optional of the given [value]. /// /// If [value] is null, returns [absent()]. - const Optional.fromNullable(T value) : this._value = value; + const Optional.fromNullable(T value) : _value = value; /// Whether the Optional contains a value. bool get isPresent => _value != null; @@ -37,21 +37,21 @@ class Optional extends IterableBase { /// /// Throws [StateError] if [value] is null. T get value { - if (this._value == null) { + if (_value == null) { throw StateError('value called on absent Optional.'); } return _value; } /// Executes a function if the Optional value is present. - void ifPresent(void ifPresent(T value)) { + void ifPresent(void Function(T value) ifPresent) { if (isPresent) { ifPresent(_value); } } /// Execution a function if the Optional value is absent. - void ifAbsent(void ifAbsent()) { + void ifAbsent(void Function() ifAbsent) { if (!isPresent) { ifAbsent(); } @@ -66,7 +66,7 @@ class Optional extends IterableBase { if (defaultValue == null) { throw ArgumentError('defaultValue must not be null.'); } - return _value == null ? defaultValue : _value; + return _value ?? defaultValue; } /// Gets the Optional value, or [null] if there is none. @@ -77,7 +77,7 @@ class Optional extends IterableBase { /// If the Optional is [absent()], returns [absent()] without applying the transformer. /// /// The transformer must not return [null]. If it does, an [ArgumentError] is thrown. - Optional transform(S transformer(T value)) { + Optional transform(S Function(T value) transformer) { return _value == null ? Optional.absent() : Optional.of(transformer(_value)); @@ -88,11 +88,14 @@ class Optional extends IterableBase { isPresent ? [_value].iterator : Iterable.empty().iterator; /// Delegates to the underlying [value] hashCode. + @override int get hashCode => _value.hashCode; /// Delegates to the underlying [value] operator==. + @override bool operator ==(o) => o is Optional && o._value == _value; + @override String toString() { return _value == null ? 'Optional { absent }' diff --git a/todos_app_core/lib/src/routes.dart b/todos_app_core/lib/src/routes.dart index ecd0ea33..1be9f34d 100644 --- a/todos_app_core/lib/src/routes.dart +++ b/todos_app_core/lib/src/routes.dart @@ -3,6 +3,6 @@ // in the LICENSE file. class ArchSampleRoutes { - static final home = "/"; - static final addTodo = "/addTodo"; + static final home = '/'; + static final addTodo = '/addTodo'; } diff --git a/todos_app_core/lib/src/uuid.dart b/todos_app_core/lib/src/uuid.dart index 1b6b26da..765daa7a 100644 --- a/todos_app_core/lib/src/uuid.dart +++ b/todos_app_core/lib/src/uuid.dart @@ -21,7 +21,7 @@ class Uuid { /// random numbers as the source of the generated uuid. String generateV4() { // Generate xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx / 8-4-4-4-12. - final int special = 8 + _random.nextInt(4); + final special = 8 + _random.nextInt(4); return '${_bitsDigits(16, 4)}${_bitsDigits(16, 4)}-' '${_bitsDigits(16, 4)}-' diff --git a/todos_repository_core/lib/src/todo_entity.dart b/todos_repository_core/lib/src/todo_entity.dart index 1e02b6cc..56429e66 100644 --- a/todos_repository_core/lib/src/todo_entity.dart +++ b/todos_repository_core/lib/src/todo_entity.dart @@ -26,10 +26,10 @@ class TodoEntity { Map toJson() { return { - "complete": complete, - "task": task, - "note": note, - "id": id, + 'complete': complete, + 'task': task, + 'note': note, + 'id': id, }; } @@ -40,10 +40,10 @@ class TodoEntity { static TodoEntity fromJson(Map json) { return TodoEntity( - json["task"] as String, - json["id"] as String, - json["note"] as String, - json["complete"] as bool, + json['task'] as String, + json['id'] as String, + json['note'] as String, + json['complete'] as bool, ); } } diff --git a/todos_repository_simple/lib/src/reactive_repository.dart b/todos_repository_simple/lib/src/reactive_repository.dart index 21df83bc..70d19de4 100644 --- a/todos_repository_simple/lib/src/reactive_repository.dart +++ b/todos_repository_simple/lib/src/reactive_repository.dart @@ -19,16 +19,14 @@ class ReactiveTodosRepositoryFlutter implements ReactiveTodosRepository { ReactiveTodosRepositoryFlutter({ @required TodosRepository repository, List seedValue, - }) : this._repository = repository, - this._subject = seedValue != null + }) : _repository = repository, + _subject = seedValue != null ? BehaviorSubject>.seeded(seedValue) : BehaviorSubject>(); @override Future addNewTodo(TodoEntity todo) async { - _subject.add(List.unmodifiable([] - ..addAll(_subject.value ?? []) - ..add(todo))); + _subject.add([..._subject.value, todo]); await _repository.saveTodos(_subject.value); } @@ -59,7 +57,7 @@ class ReactiveTodosRepositoryFlutter implements ReactiveTodosRepository { _repository.loadTodos().then((entities) { _subject.add(List.unmodifiable( - []..addAll(_subject.value ?? [])..addAll(entities), + [..._subject.value, ...entities], )); }); } diff --git a/todos_repository_simple/lib/src/repository.dart b/todos_repository_simple/lib/src/repository.dart index d1c5238b..e8872b66 100644 --- a/todos_repository_simple/lib/src/repository.dart +++ b/todos_repository_simple/lib/src/repository.dart @@ -30,7 +30,7 @@ class TodosRepositoryFlutter implements TodosRepository { } catch (e) { final todos = await webClient.fetchTodos(); - fileStorage.saveTodos(todos); + await fileStorage.saveTodos(todos); return todos; } diff --git a/todos_repository_simple/pubspec.yaml b/todos_repository_simple/pubspec.yaml index 136dffeb..7921c74c 100644 --- a/todos_repository_simple/pubspec.yaml +++ b/todos_repository_simple/pubspec.yaml @@ -2,7 +2,7 @@ name: todos_repository_simple description: An app-agnostic data source that can be used by all implementations environment: - sdk: '>=2.0.0 <3.0.0' + sdk: '>=2.2.2 <3.0.0' dependencies: flutter: diff --git a/todos_repository_simple/test/all_tests.dart b/todos_repository_simple/test/all_tests.dart index 443bf88f..896371a5 100644 --- a/todos_repository_simple/test/all_tests.dart +++ b/todos_repository_simple/test/all_tests.dart @@ -1,9 +1,9 @@ -import 'file_storage_test.dart' as fileStorage; -import 'reactive_repository_test.dart' as reactiveRepository; +import 'file_storage_test.dart' as file_storage; +import 'reactive_repository_test.dart' as reactive_repository; import 'repository_test.dart' as repository; -main() { - fileStorage.main(); - reactiveRepository.main(); +void main() { + file_storage.main(); + reactive_repository.main(); repository.main(); } diff --git a/todos_repository_simple/test/file_storage_test.dart b/todos_repository_simple/test/file_storage_test.dart index b7ea3397..ff069c82 100644 --- a/todos_repository_simple/test/file_storage_test.dart +++ b/todos_repository_simple/test/file_storage_test.dart @@ -8,9 +8,9 @@ import 'package:test/test.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; import 'package:todos_repository_simple/todos_repository_simple.dart'; -main() { +void main() { group('FileStorage', () { - final todos = [TodoEntity("Task", "1", "Hallo", false)]; + final todos = [TodoEntity('Task', '1', 'Hallo', false)]; final directory = Directory.systemTemp.createTemp('__storage_test__'); final storage = FileStorage( '_test_tag_', diff --git a/todos_repository_simple/test/reactive_repository_test.dart b/todos_repository_simple/test/reactive_repository_test.dart index c7257f9d..fdf597ea 100644 --- a/todos_repository_simple/test/reactive_repository_test.dart +++ b/todos_repository_simple/test/reactive_repository_test.dart @@ -11,13 +11,13 @@ import 'package:todos_repository_simple/todos_repository_simple.dart'; class MockTodosRepository extends Mock implements TodosRepository {} -main() { +void main() { group('ReactiveTodosRepository', () { - List createTodos([String task = "Task"]) { + List createTodos([String task = 'Task']) { return [ - TodoEntity(task, "1", "Hallo", false), - TodoEntity(task, "2", "Friend", false), - TodoEntity(task, "3", "Yo", false), + TodoEntity(task, '1', 'Hallo', false), + TodoEntity(task, '2', 'Friend', false), + TodoEntity(task, '3', 'Yo', false), ]; } @@ -61,7 +61,7 @@ main() { ); when(repository.loadTodos()) - .thenAnswer((_) => new Future.value([])); + .thenAnswer((_) => Future.value([])); when(repository.saveTodos(todos)).thenAnswer((_) => Future.value()); await reactiveRepository.addNewTodo(todos.first); @@ -78,7 +78,7 @@ main() { repository: repository, seedValue: todos, ); - final update = createTodos("task"); + final update = createTodos('task'); when(repository.loadTodos()).thenAnswer((_) => Future.value(todos)); when(repository.saveTodos(any)).thenAnswer((_) => Future.value()); diff --git a/todos_repository_simple/test/repository_test.dart b/todos_repository_simple/test/repository_test.dart index e5e86a72..3d622b5b 100644 --- a/todos_repository_simple/test/repository_test.dart +++ b/todos_repository_simple/test/repository_test.dart @@ -16,10 +16,10 @@ class MockFileStorage extends Mock implements FileStorage {} class MockWebClient extends Mock implements WebClient {} -main() { +void main() { group('TodosRepository', () { List createTodos() { - return [TodoEntity("Task", "1", "Hallo", false)]; + return [TodoEntity('Task', '1', 'Hallo', false)]; } test( @@ -55,7 +55,7 @@ main() { // In this instance, we'll ask our Mock to throw an error. When it does, // we expect the web client to be called instead. - when(fileStorage.loadTodos()).thenThrow("Uh ohhhh"); + when(fileStorage.loadTodos()).thenThrow('Uh ohhhh'); when(webClient.fetchTodos()).thenAnswer((_) => Future.value(todos)); // We check that the correct todos were returned, and that the @@ -75,7 +75,7 @@ main() { ); final todos = createTodos(); - when(fileStorage.loadTodos()).thenThrow(Exception("Oh no.")); + when(fileStorage.loadTodos()).thenThrow(Exception('Oh no.')); when(webClient.fetchTodos()).thenAnswer((_) => Future.value(todos)); expect(await repository.loadTodos(), todos); diff --git a/vanilla/lib/localization.dart b/vanilla/lib/localization.dart index f17f8ece..01a21469 100644 --- a/vanilla/lib/localization.dart +++ b/vanilla/lib/localization.dart @@ -12,7 +12,7 @@ class VanillaLocalizations { context, VanillaLocalizations); } - String get appTitle => "Vanilla Example"; + String get appTitle => 'Vanilla Example'; } class VanillaLocalizationsDelegate @@ -26,5 +26,5 @@ class VanillaLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/vanilla/lib/main.dart b/vanilla/lib/main.dart index a7025b45..0acd9e31 100644 --- a/vanilla/lib/main.dart +++ b/vanilla/lib/main.dart @@ -12,7 +12,7 @@ void main() { VanillaApp( repository: TodosRepositoryFlutter( fileStorage: FileStorage( - "vanilla_app", + 'vanilla_app', getApplicationDocumentsDirectory, ), webClient: WebClient(), diff --git a/vanilla/lib/models.dart b/vanilla/lib/models.dart index cb5bf151..50f610f6 100644 --- a/vanilla/lib/models.dart +++ b/vanilla/lib/models.dart @@ -55,7 +55,7 @@ class AppState { } void toggleAll() { - final allCompleted = this.allComplete; + final allCompleted = allComplete; todos.forEach((todo) => todo.complete = !allCompleted); } @@ -77,7 +77,7 @@ class Todo { String task; Todo(this.task, {this.complete = false, this.note = '', String id}) - : this.id = id ?? Uuid().generateV4(); + : id = id ?? Uuid().generateV4(); @override int get hashCode => diff --git a/vanilla/lib/screens/home_screen.dart b/vanilla/lib/screens/home_screen.dart index 773abf5d..43589afc 100644 --- a/vanilla/lib/screens/home_screen.dart +++ b/vanilla/lib/screens/home_screen.dart @@ -41,13 +41,13 @@ class HomeScreenState extends State { VisibilityFilter activeFilter = VisibilityFilter.all; AppTab activeTab = AppTab.todos; - _updateVisibility(VisibilityFilter filter) { + void _updateVisibility(VisibilityFilter filter) { setState(() { activeFilter = filter; }); } - _updateTab(AppTab tab) { + void _updateTab(AppTab tab) { setState(() { activeTab = tab; }); diff --git a/vanilla/lib/widgets/filter_button.dart b/vanilla/lib/widgets/filter_button.dart index e44fadb4..beff7085 100644 --- a/vanilla/lib/widgets/filter_button.dart +++ b/vanilla/lib/widgets/filter_button.dart @@ -21,7 +21,7 @@ class FilterButton extends StatelessWidget { .textTheme .body1 .copyWith(color: Theme.of(context).accentColor); - final button = new _Button( + final button = _Button( onSelected: onSelected, activeFilter: activeFilter, activeStyle: activeStyle, diff --git a/vanilla/lib/widgets/stats_counter.dart b/vanilla/lib/widgets/stats_counter.dart index 361e8f58..d058d2a5 100644 --- a/vanilla/lib/widgets/stats_counter.dart +++ b/vanilla/lib/widgets/stats_counter.dart @@ -45,7 +45,7 @@ class StatsCounter extends StatelessWidget { Padding( padding: EdgeInsets.only(bottom: 24.0), child: Text( - "$numActive", + '$numActive', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subhead, ), diff --git a/vanilla/lib/widgets/typedefs.dart b/vanilla/lib/widgets/typedefs.dart index 3f2acba3..841d0414 100644 --- a/vanilla/lib/widgets/typedefs.dart +++ b/vanilla/lib/widgets/typedefs.dart @@ -4,11 +4,11 @@ import 'package:vanilla/models.dart'; -typedef TodoAdder(Todo todo); +typedef TodoAdder = void Function(Todo todo); -typedef TodoRemover(Todo todo); +typedef TodoRemover = void Function(Todo todo); -typedef TodoUpdater( +typedef TodoUpdater = void Function( Todo todo, { bool complete, String id, diff --git a/vanilla/test/app_state_test.dart b/vanilla/test/app_state_test.dart index 9d3e3c81..f9cb59cb 100644 --- a/vanilla/test/app_state_test.dart +++ b/vanilla/test/app_state_test.dart @@ -5,7 +5,7 @@ import 'package:test/test.dart'; import 'package:vanilla/models.dart'; -main() { +void main() { group('AppState', () { test('should check if there are completed todos', () { final state = AppState(todos: [ diff --git a/vanilla/test_driver/todo_app_test.dart b/vanilla/test_driver/todo_app_test.dart index 14ddb566..ad93f5a5 100644 --- a/vanilla/test_driver/todo_app_test.dart +++ b/vanilla/test_driver/todo_app_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } From 27525c7843aa57a8e4fcc5344af587b213f56ace Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Wed, 8 Jan 2020 13:46:38 +0100 Subject: [PATCH 06/77] Add more info to runTest output, fix reactive repository --- scripts/runTests.sh | 5 +++-- todos_repository_simple/lib/src/reactive_repository.dart | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/runTests.sh b/scripts/runTests.sh index 69ebb612..f4588d0b 100755 --- a/scripts/runTests.sh +++ b/scripts/runTests.sh @@ -31,12 +31,13 @@ runTests () { local repo_dir=$2 cd $package_dir; if [[ -f "pubspec.yaml" ]] && [[ -d "test" ]]; then - echo "running tests in $1" # flutter packages get || echo "Ignore exit(1)" flutter packages get + echo "run analyzer in $1" flutter analyze + echo "run dartfmt in $1" flutter dartfmt -n --set-exit-if-changed ./ - + echo "running tests in $1" # run tests with coverage if grep flutter pubspec.yaml > /dev/null; then echo "run flutter tests" diff --git a/todos_repository_simple/lib/src/reactive_repository.dart b/todos_repository_simple/lib/src/reactive_repository.dart index 70d19de4..ee0fc5ae 100644 --- a/todos_repository_simple/lib/src/reactive_repository.dart +++ b/todos_repository_simple/lib/src/reactive_repository.dart @@ -57,7 +57,7 @@ class ReactiveTodosRepositoryFlutter implements ReactiveTodosRepository { _repository.loadTodos().then((entities) { _subject.add(List.unmodifiable( - [..._subject.value, ...entities], + [if (_subject.value != null ) ..._subject.value, ...entities], )); }); } From e5e7da18fcca77426955fd91da737311bb482ff9 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Wed, 8 Jan 2020 14:04:16 +0100 Subject: [PATCH 07/77] Update line count after formatting --- line_count.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/line_count.md b/line_count.md index e70c4934..7eff0744 100644 --- a/line_count.md +++ b/line_count.md @@ -12,25 +12,25 @@ formatted with dartfmt, and all comments / blank lines / generated code are excluded. For authors of frameworks or samples (hey, I'm one of those!): Please do not -take this comparison personally, nor should folks play "Code Golf" in an attempt -to reduce the lines of code, unless doing so improves the application overall. +take this comparison personally, nor should folks play "Code Golf" with the +samples to make them smaller, unless doing so improves the application overall. | *Sample* | *LOC (no comments)* | |--------|-------------------| -| scoped_model | 779 | +| scoped_model | 778 | | mobx | 815 | -| inherited_widget | 829 | -| mvc | 839 | +| inherited_widget | 832 | +| mvc | 842 | | vanilla | 842 | -| frideos_library | 881 | +| frideos_library | 878 | | simple blocs | 1076 | -| built_redux | 1170 | -| mvu | 1181 | -| bloc | 1188 | -| bloc library | 1215 | +| built_redux | 1172 | +| bloc | 1186 | +| mvu | 1191 | +| bloc library | 1214 | | mvi | 1244 | -| redux | 1365 | -| firestore_redux | 1428 | +| redux | 1362 | +| firestore_redux | 1429 | -Note: This file was generated on 2020-01-08 10:08:26.937197Z using `scripts/line_counter.dart`. +Note: This file was generated on 2020-01-08 13:03:29.947330Z using `scripts/line_counter.dart`. From 6c4d94f67ced109ee5ee4bb477edf35f241fa9e3 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Wed, 8 Jan 2020 17:02:18 +0100 Subject: [PATCH 08/77] Fix cirrusci osx tests --- .cirrus.yml | 6 +++--- .travis.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 073fd67f..ee17fb3b 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -1,12 +1,12 @@ timeout_in: 30m env: FLUTTER_CHANNEL: stable - FLUTTER_VERSION: v1.12.13+hotfix.6 - DOCKER_VERSION: v1.12.13-hotfix.6 # docker tags cannot have plus + FLUTTER_VERSION: v1.12.13+hotfix.5 + DOCKER_VERSION: v1.12.13-hotfix.5 # docker tags cannot have plus task: # this task should fail fast or rely on 'depends_on' for all other tasks - name: Tests (Unit) + name: Static analysis, formatting, and unit tests container: image: cirrusci/flutter:$DOCKER_VERSION pub_cache: diff --git a/.travis.yml b/.travis.yml index 25239a65..b612635b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,7 @@ env: jobs: include: - - stage: Testing + - stage: Static analysis, formatting, and unit tests language: generic dist: bionic os: linux From 7bc9a605937ac53a019512250ccdb787346705b9 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Wed, 8 Jan 2020 20:15:31 +0100 Subject: [PATCH 09/77] Fix README.md --- README.md | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/README.md b/README.md index 265fd5f6..c50c1cb5 100644 --- a/README.md +++ b/README.md @@ -81,20 +81,3 @@ All of these ideas and even some of the language are directly influenced by two - [Kushagra Saxena](https://github.com/kush3107) I'd like to thank all of the folks who have helped write new samples, improve the current implementations, and added documentation! You're amazing! :) - -| *Sample* | *LOC (no comments)* | -|--------|-------------------| -| bloc | 1367 | -| bloc library | 1388 | -| built_redux | 1528 | -| firestore_redux | 1641 | -| frideos_library | 1012 | -| inherited_widget | 941 | -| mobx | 918 | -| mvc | 982 | -| mvi | 1445 | -| mvu | 1366 | -| redux | 1579 | -| scoped_model | 883 | -| simple blocs | 1253 | -| vanilla | 946 | From c8f0e40d5a842140295bb64bf682356930b7e979 Mon Sep 17 00:00:00 2001 From: Shakib Hossain Date: Thu, 6 Jun 2019 23:47:53 +0600 Subject: [PATCH 10/77] Initial implementation of provider_sample application --- provider/.gitignore | 70 +++ provider/.metadata | 10 + provider/README.md | 16 + provider/android/app/build.gradle | 61 +++ .../android/app/src/debug/AndroidManifest.xml | 7 + .../android/app/src/main/AndroidManifest.xml | 33 ++ .../example/provider_sample/MainActivity.java | 13 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values/styles.xml | 8 + .../app/src/profile/AndroidManifest.xml | 7 + provider/android/build.gradle | 29 + provider/android/gradle.properties | 1 + .../gradle/wrapper/gradle-wrapper.properties | 6 + provider/android/settings.gradle | 15 + provider/ios/Flutter/AppFrameworkInfo.plist | 26 + provider/ios/Flutter/Debug.xcconfig | 1 + provider/ios/Flutter/Release.xcconfig | 1 + provider/ios/Runner.xcodeproj/project.pbxproj | 506 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/xcschemes/Runner.xcscheme | 93 ++++ .../contents.xcworkspacedata | 7 + provider/ios/Runner/AppDelegate.h | 6 + provider/ios/Runner/AppDelegate.m | 13 + .../AppIcon.appiconset/Contents.json | 122 +++++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 11112 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 564 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1588 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1025 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1716 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 1920 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 1895 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 3831 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 1888 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 3294 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 3612 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 ++ .../ios/Runner/Base.lproj/Main.storyboard | 26 + provider/ios/Runner/Info.plist | 45 ++ provider/ios/Runner/main.m | 9 + provider/lib/app.dart | 44 ++ provider/lib/localization.dart | 30 ++ provider/lib/main.dart | 21 + provider/lib/models.dart | 61 +++ provider/lib/screens/add_edit_screen.dart | 111 ++++ provider/lib/screens/detail_screen.dart | 107 ++++ provider/lib/screens/home_screen.dart | 75 +++ provider/lib/todo_list_model.dart | 119 ++++ .../lib/widgets/extra_actions_button.dart | 46 ++ provider/lib/widgets/filter_button.dart | 77 +++ provider/lib/widgets/stats_counter.dart | 64 +++ provider/lib/widgets/todo_item.dart | 50 ++ provider/lib/widgets/todo_list.dart | 100 ++++ provider/lib/widgets/typedefs.dart | 17 + provider/pubspec.yaml | 77 +++ provider/test/app_state_test.dart | 167 ++++++ provider/test_driver/todo_app.dart | 13 + provider/test_driver/todo_app_test.dart | 9 + 71 files changed, 2403 insertions(+) create mode 100644 provider/.gitignore create mode 100644 provider/.metadata create mode 100644 provider/README.md create mode 100644 provider/android/app/build.gradle create mode 100644 provider/android/app/src/debug/AndroidManifest.xml create mode 100644 provider/android/app/src/main/AndroidManifest.xml create mode 100644 provider/android/app/src/main/java/com/example/provider_sample/MainActivity.java create mode 100644 provider/android/app/src/main/res/drawable/launch_background.xml create mode 100644 provider/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 provider/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 provider/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 provider/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 provider/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 provider/android/app/src/main/res/values/styles.xml create mode 100644 provider/android/app/src/profile/AndroidManifest.xml create mode 100644 provider/android/build.gradle create mode 100644 provider/android/gradle.properties create mode 100644 provider/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 provider/android/settings.gradle create mode 100644 provider/ios/Flutter/AppFrameworkInfo.plist create mode 100644 provider/ios/Flutter/Debug.xcconfig create mode 100644 provider/ios/Flutter/Release.xcconfig create mode 100644 provider/ios/Runner.xcodeproj/project.pbxproj create mode 100644 provider/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 provider/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 provider/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 provider/ios/Runner/AppDelegate.h create mode 100644 provider/ios/Runner/AppDelegate.m create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 provider/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 provider/ios/Runner/Base.lproj/Main.storyboard create mode 100644 provider/ios/Runner/Info.plist create mode 100644 provider/ios/Runner/main.m create mode 100644 provider/lib/app.dart create mode 100644 provider/lib/localization.dart create mode 100644 provider/lib/main.dart create mode 100644 provider/lib/models.dart create mode 100644 provider/lib/screens/add_edit_screen.dart create mode 100644 provider/lib/screens/detail_screen.dart create mode 100644 provider/lib/screens/home_screen.dart create mode 100644 provider/lib/todo_list_model.dart create mode 100644 provider/lib/widgets/extra_actions_button.dart create mode 100644 provider/lib/widgets/filter_button.dart create mode 100644 provider/lib/widgets/stats_counter.dart create mode 100644 provider/lib/widgets/todo_item.dart create mode 100644 provider/lib/widgets/todo_list.dart create mode 100644 provider/lib/widgets/typedefs.dart create mode 100644 provider/pubspec.yaml create mode 100644 provider/test/app_state_test.dart create mode 100644 provider/test_driver/todo_app.dart create mode 100644 provider/test_driver/todo_app_test.dart diff --git a/provider/.gitignore b/provider/.gitignore new file mode 100644 index 00000000..07488ba6 --- /dev/null +++ b/provider/.gitignore @@ -0,0 +1,70 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# Visual Studio Code related +.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.packages +.pub-cache/ +.pub/ +/build/ + +# Android related +**/android/**/gradle-wrapper.jar +**/android/.gradle +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages diff --git a/provider/.metadata b/provider/.metadata new file mode 100644 index 00000000..033ad2af --- /dev/null +++ b/provider/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: 7a4c33425ddd78c54aba07d86f3f9a4a0051769b + channel: stable + +project_type: app diff --git a/provider/README.md b/provider/README.md new file mode 100644 index 00000000..d8dd57a9 --- /dev/null +++ b/provider/README.md @@ -0,0 +1,16 @@ +# provider_sample + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) + +For help getting started with Flutter, view our +[online documentation](https://flutter.dev/docs), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/provider/android/app/build.gradle b/provider/android/app/build.gradle new file mode 100644 index 00000000..53605b5a --- /dev/null +++ b/provider/android/app/build.gradle @@ -0,0 +1,61 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion 28 + + lintOptions { + disable 'InvalidPackage' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.provider_sample" + minSdkVersion 16 + targetSdkVersion 28 + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + testImplementation 'junit:junit:4.12' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' +} diff --git a/provider/android/app/src/debug/AndroidManifest.xml b/provider/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..e9b98e10 --- /dev/null +++ b/provider/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/provider/android/app/src/main/AndroidManifest.xml b/provider/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..7111d705 --- /dev/null +++ b/provider/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + diff --git a/provider/android/app/src/main/java/com/example/provider_sample/MainActivity.java b/provider/android/app/src/main/java/com/example/provider_sample/MainActivity.java new file mode 100644 index 00000000..d9624307 --- /dev/null +++ b/provider/android/app/src/main/java/com/example/provider_sample/MainActivity.java @@ -0,0 +1,13 @@ +package com.example.provider_sample; + +import android.os.Bundle; +import io.flutter.app.FlutterActivity; +import io.flutter.plugins.GeneratedPluginRegistrant; + +public class MainActivity extends FlutterActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + GeneratedPluginRegistrant.registerWith(this); + } +} diff --git a/provider/android/app/src/main/res/drawable/launch_background.xml b/provider/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000..304732f8 --- /dev/null +++ b/provider/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/provider/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/provider/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/provider/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/provider/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/provider/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/provider/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/provider/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/provider/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/provider/android/app/src/main/res/values/styles.xml b/provider/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..00fa4417 --- /dev/null +++ b/provider/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + diff --git a/provider/android/app/src/profile/AndroidManifest.xml b/provider/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000..e9b98e10 --- /dev/null +++ b/provider/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/provider/android/build.gradle b/provider/android/build.gradle new file mode 100644 index 00000000..bb8a3038 --- /dev/null +++ b/provider/android/build.gradle @@ -0,0 +1,29 @@ +buildscript { + repositories { + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:3.2.1' + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/provider/android/gradle.properties b/provider/android/gradle.properties new file mode 100644 index 00000000..8bd86f68 --- /dev/null +++ b/provider/android/gradle.properties @@ -0,0 +1 @@ +org.gradle.jvmargs=-Xmx1536M diff --git a/provider/android/gradle/wrapper/gradle-wrapper.properties b/provider/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..2819f022 --- /dev/null +++ b/provider/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Jun 23 08:50:38 CEST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip diff --git a/provider/android/settings.gradle b/provider/android/settings.gradle new file mode 100644 index 00000000..5a2f14fb --- /dev/null +++ b/provider/android/settings.gradle @@ -0,0 +1,15 @@ +include ':app' + +def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() + +def plugins = new Properties() +def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') +if (pluginsFile.exists()) { + pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } +} + +plugins.each { name, path -> + def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() + include ":$name" + project(":$name").projectDir = pluginDirectory +} diff --git a/provider/ios/Flutter/AppFrameworkInfo.plist b/provider/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000..9367d483 --- /dev/null +++ b/provider/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 8.0 + + diff --git a/provider/ios/Flutter/Debug.xcconfig b/provider/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000..592ceee8 --- /dev/null +++ b/provider/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/provider/ios/Flutter/Release.xcconfig b/provider/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000..592ceee8 --- /dev/null +++ b/provider/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/provider/ios/Runner.xcodeproj/project.pbxproj b/provider/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..46a2c358 --- /dev/null +++ b/provider/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,506 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; + 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; + 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; + 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; + 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, + 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, + 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B80C3931E831B6300D905FE /* App.framework */, + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEBA1CF902C7004384FC /* Flutter.framework */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + CF3B75C9A7D2FA2A4C99F110 /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, + 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 97C146F11CF9000F007C117D /* Supporting Files */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + ); + path = Runner; + sourceTree = ""; + }; + 97C146F11CF9000F007C117D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 97C146F21CF9000F007C117D /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0910; + ORGANIZATIONNAME = "The Chromium Authors"; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */, + 97C146F31CF9000F007C117D /* main.m in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = S8QB4VV633; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.providerSample; + PRODUCT_NAME = "$(TARGET_NAME)"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.providerSample; + PRODUCT_NAME = "$(TARGET_NAME)"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.providerSample; + PRODUCT_NAME = "$(TARGET_NAME)"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/provider/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/provider/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/provider/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/provider/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/provider/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..786d6aad --- /dev/null +++ b/provider/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/provider/ios/Runner.xcworkspace/contents.xcworkspacedata b/provider/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/provider/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/provider/ios/Runner/AppDelegate.h b/provider/ios/Runner/AppDelegate.h new file mode 100644 index 00000000..36e21bbf --- /dev/null +++ b/provider/ios/Runner/AppDelegate.h @@ -0,0 +1,6 @@ +#import +#import + +@interface AppDelegate : FlutterAppDelegate + +@end diff --git a/provider/ios/Runner/AppDelegate.m b/provider/ios/Runner/AppDelegate.m new file mode 100644 index 00000000..59a72e90 --- /dev/null +++ b/provider/ios/Runner/AppDelegate.m @@ -0,0 +1,13 @@ +#include "AppDelegate.h" +#include "GeneratedPluginRegistrant.h" + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application + didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + [GeneratedPluginRegistrant registerWithRegistry:self]; + // Override point for customization after application launch. + return [super application:application didFinishLaunchingWithOptions:launchOptions]; +} + +@end diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..d36b1fab --- /dev/null +++ b/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..3d43d11e66f4de3da27ed045ca4fe38ad8b48094 GIT binary patch literal 11112 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 P-1+_A+?hGkL;m(J7kc&K literal 0 HcmV?d00001 diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..28c6bf03016f6c994b70f38d1b7346e5831b531f GIT binary patch literal 564 zcmV-40?Yl0P)Px$?ny*JR5%f>l)FnDQ543{x%ZCiu33$Wg!pQFfT_}?5Q|_VSlIbLC`dpoMXL}9 zHfd9&47Mo(7D231gb+kjFxZHS4-m~7WurTH&doVX2KI5sU4v(sJ1@T9eCIKPjsqSr z)C01LsCxk=72-vXmX}CQD#BD;Cthymh&~=f$Q8nn0J<}ZrusBy4PvRNE}+1ceuj8u z0mW5k8fmgeLnTbWHGwfKA3@PdZxhn|PypR&^p?weGftrtCbjF#+zk_5BJh7;0`#Wr zgDpM_;Ax{jO##IrT`Oz;MvfwGfV$zD#c2xckpcXC6oou4ML~ezCc2EtnsQTB4tWNg z?4bkf;hG7IMfhgNI(FV5Gs4|*GyMTIY0$B=_*mso9Ityq$m^S>15>-?0(zQ<8Qy<_TjHE33(?_M8oaM zyc;NxzRVK@DL6RJnX%U^xW0Gpg(lXp(!uK1v0YgHjs^ZXSQ|m#lV7ip7{`C_J2TxPmfw%h$|%acrYHt)Re^PB%O&&=~a zhS(%I#+V>J-vjIib^<+s%ludY7y^C(P8nmqn9fp!i+?vr`bziDE=bx`%2W#Xyrj|i z!XQ4v1%L`m{7KT7q+LZNB^h8Ha2e=`Wp65^0;J00)_^G=au=8Yo;1b`CV&@#=jIBo zjN^JNVfYSs)+kDdGe7`1&8!?MQYKS?DuHZf3iogk_%#9E|5S zWeHrmAo>P;ejX7mwq#*}W25m^ZI+{(Z8fI?4jM_fffY0nok=+88^|*_DwcW>mR#e+ zX$F_KMdb6sRz!~7KkyN0G(3XQ+;z3X%PZ4gh;n-%62U<*VUKNv(D&Q->Na@Xb&u5Q3`3DGf+a8O5x7c#7+R+EAYl@R5us)CIw z7sT@_y~Ao@uL#&^LIh&QceqiT^+lb0YbFZt_SHOtWA%mgPEKVNvVgCsXy{5+zl*X8 zCJe)Q@y>wH^>l4;h1l^Y*9%-23TSmE>q5nI@?mt%n;Sj4Qq`Z+ib)a*a^cJc%E9^J zB;4s+K@rARbcBLT5P=@r;IVnBMKvT*)ew*R;&8vu%?Z&S>s?8?)3*YawM0P4!q$Kv zMmKh3lgE~&w&v%wVzH3Oe=jeNT=n@Y6J6TdHWTjXfX~-=1A1Bw`EW8rn}MqeI34nh zexFeA?&C3B2(E?0{drE@DA2pu(A#ElY&6el60Rn|Qpn-FkfQ8M93AfWIr)drgDFEU zghdWK)^71EWCP(@(=c4kfH1Y(4iugD4fve6;nSUpLT%!)MUHs1!zJYy4y||C+SwQ! z)KM&$7_tyM`sljP2fz6&Z;jxRn{Wup8IOUx8D4uh&(=O zx-7$a;U><*5L^!%xRlw)vAbh;sdlR||& ze}8_8%)c2Fwy=F&H|LM+p{pZB5DKTx>Y?F1N%BlZkXf!}JeGuMZk~LPi7{cidvUGB zAJ4LVeNV%XO>LTrklB#^-;8nb;}6l;1oW&WS=Mz*Az!4cqqQzbOSFq`$Q%PfD7srM zpKgP-D_0XPTRX*hAqeq0TDkJ;5HB1%$3Np)99#16c{ zJImlNL(npL!W|Gr_kxl1GVmF5&^$^YherS7+~q$p zt}{a=*RiD2Ikv6o=IM1kgc7zqpaZ;OB)P!1zz*i3{U()Dq#jG)egvK}@uFLa`oyWZ zf~=MV)|yJn`M^$N%ul5);JuQvaU1r2wt(}J_Qgyy`qWQI`hEeRX0uC@c1(dQ2}=U$ tNIIaX+dr)NRWXcxoR{>fqI{SF_dm1Ylv~=3YHI)h002ovPDHLkV1g(pWS;;4 literal 0 HcmV?d00001 diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f091b6b0bca859a3f474b03065bef75ba58a9e4c GIT binary patch literal 1588 zcmV-42Fv-0P)C1SqPt}wig>|5Crh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)y zRAZ>eDe#*r`yDAVgB_R*LB*MAc)8(b{g{9McCXW!lq7r(btRoB9!8B-#AI6JMb~YFBEvdsV)`mEQO^&#eRKx@b&x- z5lZm*!WfD8oCLzfHGz#u7sT0^VLMI1MqGxF^v+`4YYnVYgk*=kU?HsSz{v({E3lb9 z>+xILjBN)t6`=g~IBOelGQ(O990@BfXf(DRI5I$qN$0Gkz-FSc$3a+2fX$AedL4u{ z4V+5Ong(9LiGcIKW?_352sR;LtDPmPJXI{YtT=O8=76o9;*n%_m|xo!i>7$IrZ-{l z-x3`7M}qzHsPV@$v#>H-TpjDh2UE$9g6sysUREDy_R(a)>=eHw-WAyfIN z*qb!_hW>G)Tu8nSw9yn#3wFMiLcfc4pY0ek1}8(NqkBR@t4{~oC>ryc-h_ByH(Cg5 z>ao-}771+xE3um9lWAY1FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zm zZQj(aA_HeBY&OC^jj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5Kh zX*|AU4QE#~SgPzOXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&g3j|zDgC+}2Q_v%YfDax z!?umcN^n}KYQ|a$Lr+51Nf9dkkYFSjZZjkma$0KOj+;aQ&721~t7QUKx61J3(P4P1 zstI~7-wOACnWP4=8oGOwz%vNDqD8w&Q`qcNGGrbbf&0s9L0De{4{mRS?o0MU+nR_! zrvshUau0G^DeMhM_v{5BuLjb#Hh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG z;P%vktHcXwTj~+IE(~px)3*MY77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC z(zYC$g|@+I+kY;dg_dE>scBf&bP1Nc@Hz<3R)V`=AGkc;8CXqdi=B4l2k|g;2%#m& z*jfX^%b!A8#bI!j9-0Fi0bOXl(-c^AB9|nQaE`*)Hw+o&jS9@7&Gov#HbD~#d{twV zXd^Tr^mWLfFh$@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)y zI9C9*oUga6=hxw6QasLPnee@3^Rr*M{CdaL5=R41nLs(AHk_=Y+A9$2&H(B7!_pURs&8aNw7?`&Z&xY_Ye z)~D5Bog^td-^QbUtkTirdyK^mTHAOuptDflut!#^lnKqU md>ggs(5nOWAqO?umG&QVYK#ibz}*4>0000U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~cTNYR~@Y9KepMPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF4|Rt=2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ literal 0 HcmV?d00001 diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ef06e7edb86cdfe0d15b4b0d98334a86163658 GIT binary patch literal 1716 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 literal 0 HcmV?d00001 diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f9ed8f5cee1c98386d13b17e89f719e83555b2 GIT binary patch literal 1895 zcmV-t2blPYP)FQtfgmafE#=YDCq`qUBt#QpG%*H6QHY765~R=q zZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1K4#~5?#|rh?sS)(-JQqX*}ciXJ56_H zdw=^s_srbAdqxlvGyrgGet#6T7_|j;95sL%MtM;q86vOxKM$f#puR)Bjv9Zvz9-di zXOTSsZkM83)E9PYBXC<$6(|>lNLVBb&&6y{NByFCp%6+^ALR@NCTse_wqvNmSWI-m z!$%KlHFH2omF!>#%1l3LTZg(s7eof$7*xB)ZQ0h?ejh?Ta9fDv59+u#MokW+1t8Zb zgHv%K(u9G^Lv`lh#f3<6!JVTL3(dCpxHbnbA;kKqQyd1~^Xe0VIaYBSWm6nsr;dFj z4;G-RyL?cYgsN1{L4ZFFNa;8)Rv0fM0C(~Tkit94 zz#~A)59?QjD&pAPSEQ)p8gP|DS{ng)j=2ux)_EzzJ773GmQ_Cic%3JJhC0t2cx>|v zJcVusIB!%F90{+}8hG3QU4KNeKmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u z7JyDj7`6d)qVp^R=%j>UIY6f+3`+qzIc!Y_=+uN^3BYV|o+$vGo-j-Wm<10%A=(Yk^beI{t%ld@yhKjq0iNjqN4XMGgQtbKubPM$JWBz}YA65k%dm*awtC^+f;a-x4+ddbH^7iDWGg&N0n#MW{kA|=8iMUiFYvMoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS z*ZdmT`g5-`BuJs`0LVhz+D9NNa3<=6m;cQLaF?tCv8)zcRSh66*Z|vXhG@$I%U~2l z?`Q zykI#*+rQ=z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRe zt3L_uNyQ*cE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=ky zx=~RKa4{iTm{_>_vSCm?$Ej=i6@=m%@VvAITnigVg{&@!7CDgs908761meDK5azA} z4?=NOH|PdvabgJ&fW2{Mo$Q0CcD8Qc84%{JPYt5EiG{MdLIAeX%T=D7NIP4%Hw}p9 zg)==!2Lbp#j{u_}hMiao9=!VSyx0gHbeCS`;q&vzeq|fs`y&^X-lso(Ls@-706qmA z7u*T5PMo_w3{se1t2`zWeO^hOvTsohG_;>J0wVqVe+n)AbQCx)yh9;w+J6?NF5Lmo zecS@ieAKL8%bVd@+-KT{yI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^ zEkL$}tsQt5>QA^;QgjgIfBDmcOgi5YDyu?t6vSnbp=1+@6D& z5MJ}B8q;bRlVoxasyhcUF1+)o`&3r0colr}QJ3hcSdLu;9;td>kf@Tcn<@9sIx&=m z;AD;SCh95=&p;$r{Xz3iWCO^MX83AGJ(yH&eTXgv|0=34#-&WAmw{)U7OU9!Wz^!7 zZ%jZFi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i h0WYBP*#0Ks^FNSabJA*5${_#%002ovPDHLkV1oKhTl@e3 literal 0 HcmV?d00001 diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..75b2d164a5a98e212cca15ea7bf2ab5de5108680 GIT binary patch literal 3831 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 literal 0 HcmV?d00001 diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..c4df70d39da7941ef3f6dcb7f06a192d8dcb308d GIT binary patch literal 1888 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 iW8Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +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. \ No newline at end of file diff --git a/provider/ios/Runner/Base.lproj/LaunchScreen.storyboard b/provider/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..f2e259c7 --- /dev/null +++ b/provider/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/provider/ios/Runner/Base.lproj/Main.storyboard b/provider/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000..f3c28516 --- /dev/null +++ b/provider/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/provider/ios/Runner/Info.plist b/provider/ios/Runner/Info.plist new file mode 100644 index 00000000..aa8d45a6 --- /dev/null +++ b/provider/ios/Runner/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + provider_sample + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/provider/ios/Runner/main.m b/provider/ios/Runner/main.m new file mode 100644 index 00000000..dff6597e --- /dev/null +++ b/provider/ios/Runner/main.m @@ -0,0 +1,9 @@ +#import +#import +#import "AppDelegate.h" + +int main(int argc, char* argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/provider/lib/app.dart b/provider/lib/app.dart new file mode 100644 index 00000000..606d3084 --- /dev/null +++ b/provider/lib/app.dart @@ -0,0 +1,44 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:meta/meta.dart'; +import 'package:provider/provider.dart'; +import 'package:provider_sample/localization.dart'; +import 'package:provider_sample/screens/add_edit_screen.dart'; +import 'package:provider_sample/screens/home_screen.dart'; +import 'package:provider_sample/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +class ProviderApp extends StatelessWidget { + final TodosRepository repository; + + ProviderApp({ + @required this.repository, + }); + + @override + Widget build(BuildContext context) { + var app = MaterialApp( + title: ProviderLocalizations().appTitle, + theme: ArchSampleTheme.theme, + localizationsDelegates: [ + ArchSampleLocalizationsDelegate(), + ProviderLocalizationsDelegate(), + ], + routes: { + ArchSampleRoutes.home: (context) => HomeScreen(), + ArchSampleRoutes.addTodo: (context) => AddEditScreen(), + }, + ); + + return ChangeNotifierProvider( + builder: (context) => TodoListModel( + repository: repository, + ), + child: app, + ); + } +} diff --git a/provider/lib/localization.dart b/provider/lib/localization.dart new file mode 100644 index 00000000..a8615dce --- /dev/null +++ b/provider/lib/localization.dart @@ -0,0 +1,30 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; + +import 'package:flutter/material.dart'; + +class ProviderLocalizations { + static ProviderLocalizations of(BuildContext context) { + return Localizations.of( + context, ProviderLocalizations); + } + + String get appTitle => "provider example"; +} + +class ProviderLocalizationsDelegate + extends LocalizationsDelegate { + @override + Future load(Locale locale) => + Future(() => ProviderLocalizations()); + + @override + bool shouldReload(ProviderLocalizationsDelegate old) => false; + + @override + bool isSupported(Locale locale) => + locale.languageCode.toLowerCase().contains("en"); +} diff --git a/provider/lib/main.dart b/provider/lib/main.dart new file mode 100644 index 00000000..7bdc483a --- /dev/null +++ b/provider/lib/main.dart @@ -0,0 +1,21 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:provider_sample/app.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; + +void main() { + const todoRepo = const TodosRepositoryFlutter( + fileStorage: const FileStorage( + 'provider_todos', + getApplicationDocumentsDirectory, + ), + ); + + runApp(ProviderApp( + repository: todoRepo, + )); +} diff --git a/provider/lib/models.dart b/provider/lib/models.dart new file mode 100644 index 00000000..dd0519d5 --- /dev/null +++ b/provider/lib/models.dart @@ -0,0 +1,61 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +enum AppTab { todos, stats } + +enum ExtraAction { toggleAllComplete, clearCompleted } + +class Todo { + final bool complete; + final String id; + final String note; + final String task; + + Todo(this.task, {this.complete = false, this.note = '', String id}) + : this.id = id ?? Uuid().generateV4(); + + @override + int get hashCode => + complete.hashCode ^ task.hashCode ^ note.hashCode ^ id.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is Todo && + runtimeType == other.runtimeType && + complete == other.complete && + task == other.task && + note == other.note && + id == other.id; + + @override + String toString() { + return 'Todo{complete: $complete, task: $task, note: $note, id: $id}'; + } + + TodoEntity toEntity() { + return TodoEntity(task, id, note, complete); + } + + static Todo fromEntity(TodoEntity entity) { + return Todo( + entity.task, + complete: entity.complete ?? false, + note: entity.note, + id: entity.id, + ); + } + + Todo copy({String task, bool complete, String note, String id}) { + return Todo( + task ?? this.task, + complete: complete ?? this.complete, + note: note ?? this.note, + id: id ?? this.id, + ); + } +} diff --git a/provider/lib/screens/add_edit_screen.dart b/provider/lib/screens/add_edit_screen.dart new file mode 100644 index 00000000..7aa1590e --- /dev/null +++ b/provider/lib/screens/add_edit_screen.dart @@ -0,0 +1,111 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:provider/provider.dart'; +import 'package:provider_sample/models.dart'; +import 'package:provider_sample/todo_list_model.dart'; + +class AddEditScreen extends StatefulWidget { + final String todoId; + + AddEditScreen({ + Key key, + this.todoId, + }) : super(key: key ?? ArchSampleKeys.addTodoScreen); + @override + _AddEditScreenState createState() => _AddEditScreenState(); +} + +class _AddEditScreenState extends State { + static final GlobalKey _formKey = GlobalKey(); + + String _task; + String _note; + + bool get isEditing => widget.todoId != null; + + @override + Widget build(BuildContext context) { + final localizations = ArchSampleLocalizations.of(context); + final textTheme = Theme.of(context).textTheme; + + return Scaffold( + appBar: AppBar( + title: Text( + isEditing ? localizations.editTodo : localizations.addTodo, + ), + ), + body: Padding( + padding: EdgeInsets.all(16.0), + child: Form( + key: _formKey, + autovalidate: false, + onWillPop: () { + return Future(() => true); + }, + child: Consumer( + builder: (BuildContext context, TodoListModel model, Widget child) { + var task = model.todoById(widget.todoId); + return ListView( + children: [ + TextFormField( + initialValue: task?.task ?? '', + key: ArchSampleKeys.taskField, + autofocus: !isEditing, + style: textTheme.headline, + decoration: InputDecoration( + hintText: localizations.newTodoHint, + ), + validator: (val) { + return val.trim().isEmpty + ? localizations.emptyTodoError + : null; + }, + onSaved: (value) => _task = value, + ), + TextFormField( + initialValue: task?.note ?? '', + key: ArchSampleKeys.noteField, + maxLines: 10, + style: textTheme.subhead, + decoration: InputDecoration( + hintText: localizations.notesHint, + ), + onSaved: (value) => _note = value, + ) + ], + ); + }, + ), + ), + ), + floatingActionButton: FloatingActionButton( + key: + isEditing ? ArchSampleKeys.saveTodoFab : ArchSampleKeys.saveNewTodo, + tooltip: isEditing ? localizations.saveChanges : localizations.addTodo, + child: Icon(isEditing ? Icons.check : Icons.add), + onPressed: () { + final form = _formKey.currentState; + if (form.validate()) { + form.save(); + + var model = Provider.of(context); + if (isEditing) { + var todo = model.todoById(widget.todoId); + model.updateTodo(todo.copy(task: _task, note: _note)); + } else { + model.addTodo(Todo(_task, note: _note)); + } + + Navigator.pop(context); + } + }, + ), + ); + } +} diff --git a/provider/lib/screens/detail_screen.dart b/provider/lib/screens/detail_screen.dart new file mode 100644 index 00000000..eee1e814 --- /dev/null +++ b/provider/lib/screens/detail_screen.dart @@ -0,0 +1,107 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:provider/provider.dart'; +import 'package:provider_sample/models.dart'; +import 'package:provider_sample/screens/add_edit_screen.dart'; +import 'package:provider_sample/todo_list_model.dart'; + +class DetailScreen extends StatelessWidget { + final String todoId; + + DetailScreen({ + @required this.todoId, + }) : super(key: ArchSampleKeys.todoDetailsScreen); + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, model, child) { + // fallback to empty item. When deleting it, it is null before the screen is gone + var todo = model.todoById(todoId) ?? Todo(''); + return Scaffold( + appBar: AppBar( + title: Text(ArchSampleLocalizations.of(context).todoDetails), + actions: [ + IconButton( + key: ArchSampleKeys.deleteTodoButton, + tooltip: ArchSampleLocalizations.of(context).deleteTodo, + icon: Icon(Icons.delete), + onPressed: () { + model.removeTodo(todo); + Navigator.pop(context, todo); + }, + ) + ], + ), + body: Padding( + padding: EdgeInsets.all(16.0), + child: ListView( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(right: 8.0), + child: Checkbox( + value: todo.complete, + key: ArchSampleKeys.detailsTodoItemCheckbox, + onChanged: (complete) { + model.updateTodo(todo.copy(complete: !todo.complete)); + }, + ), + ), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only( + top: 8.0, + bottom: 16.0, + ), + child: Text( + todo.task, + key: ArchSampleKeys.detailsTodoItemTask, + style: Theme.of(context).textTheme.headline, + ), + ), + Text( + todo.note, + key: ArchSampleKeys.detailsTodoItemNote, + style: Theme.of(context).textTheme.subhead, + ) + ], + ), + ), + ], + ), + ], + ), + ), + floatingActionButton: FloatingActionButton( + tooltip: ArchSampleLocalizations.of(context).editTodo, + child: Icon(Icons.edit), + key: ArchSampleKeys.editTodoFab, + onPressed: () { + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) { + return AddEditScreen( + todoId: todoId, + key: ArchSampleKeys.editTodoScreen, + ); + }, + ), + ); + }, + ), + ); + }, + ); + } +} diff --git a/provider/lib/screens/home_screen.dart b/provider/lib/screens/home_screen.dart new file mode 100644 index 00000000..0f6a9738 --- /dev/null +++ b/provider/lib/screens/home_screen.dart @@ -0,0 +1,75 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:provider_sample/localization.dart'; +import 'package:provider_sample/models.dart'; +import 'package:provider_sample/widgets/extra_actions_button.dart'; +import 'package:provider_sample/widgets/filter_button.dart'; +import 'package:provider_sample/widgets/stats_counter.dart'; +import 'package:provider_sample/widgets/todo_list.dart'; + +class HomeScreen extends StatefulWidget { + HomeScreen() : super(key: ArchSampleKeys.homeScreen); + + @override + State createState() { + return HomeScreenState(); + } +} + +class HomeScreenState extends State { + AppTab _activeTab = AppTab.todos; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(ProviderLocalizations.of(context).appTitle), + actions: [ + FilterButton(isActive: _activeTab == AppTab.todos), + ExtraActionsButton() + ], + ), + body: _activeTab == AppTab.todos ? TodoList() : StatsCounter(), + floatingActionButton: FloatingActionButton( + key: ArchSampleKeys.addTodoFab, + onPressed: () { + Navigator.pushNamed(context, ArchSampleRoutes.addTodo); + }, + child: Icon(Icons.add), + tooltip: ArchSampleLocalizations.of(context).addTodo, + ), + bottomNavigationBar: BottomNavigationBar( + key: ArchSampleKeys.tabs, + currentIndex: AppTab.values.indexOf(_activeTab), + onTap: (index) { + _updateTab(AppTab.values[index]); + }, + items: AppTab.values.map((tab) { + return BottomNavigationBarItem( + icon: Icon( + tab == AppTab.todos ? Icons.list : Icons.show_chart, + key: tab == AppTab.stats + ? ArchSampleKeys.statsTab + : ArchSampleKeys.todoTab, + ), + title: Text( + tab == AppTab.stats + ? ArchSampleLocalizations.of(context).stats + : ArchSampleLocalizations.of(context).todos, + ), + ); + }).toList(), + ), + ); + } + + _updateTab(AppTab tab) { + setState(() { + _activeTab = tab; + }); + } +} diff --git a/provider/lib/todo_list_model.dart b/provider/lib/todo_list_model.dart new file mode 100644 index 00000000..fb5bc2df --- /dev/null +++ b/provider/lib/todo_list_model.dart @@ -0,0 +1,119 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; +import 'dart:collection'; + +import 'package:flutter/widgets.dart'; +import 'package:meta/meta.dart'; +import 'package:provider_sample/models.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +enum VisibilityFilter { all, active, completed } + +class TodoListModel extends ChangeNotifier { + final TodosRepository repository; + + VisibilityFilter _activeFilter; + + VisibilityFilter get activeFilter => _activeFilter; + + set activeFilter(VisibilityFilter filter) { + _activeFilter = filter; + notifyListeners(); + } + + List _todos = []; + + UnmodifiableListView get todos => UnmodifiableListView(_todos); + + bool _isLoading = false; + + bool get isLoading => _isLoading; + + TodoListModel({@required this.repository, VisibilityFilter activeFilter}) + : this._activeFilter = activeFilter ?? VisibilityFilter.all; + + /// Wraps [ScopedModel.of] for this [Model]. See [ScopedModel.of] for more + // static TodoListModel of(BuildContext context) => + // ScopedModel.of(context); + + @override + void addListener(VoidCallback listener) { + super.addListener(listener); + // update data for every subscriber, especially for the first one + loadTodos(); + } + + /// Loads remote data + /// + /// Call this initially and when the user manually refreshes + Future loadTodos() { + _isLoading = true; + notifyListeners(); + + return repository.loadTodos().then((loadedTodos) { + _todos = loadedTodos.map(Todo.fromEntity).toList(); + _isLoading = false; + notifyListeners(); + }).catchError((err) { + _isLoading = false; + _todos = []; + notifyListeners(); + }); + } + + List get filteredTodos => _todos.where((todo) { + if (activeFilter == VisibilityFilter.all) { + return true; + } else if (activeFilter == VisibilityFilter.active) { + return !todo.complete; + } else if (activeFilter == VisibilityFilter.completed) { + return todo.complete; + } + }).toList(); + + void clearCompleted() { + _todos.removeWhere((todo) => todo.complete); + notifyListeners(); + } + + void toggleAll() { + var allComplete = todos.every((todo) => todo.complete); + _todos = _todos.map((todo) => todo.copy(complete: !allComplete)).toList(); + notifyListeners(); + _uploadItems(); + } + + /// updates a [Todo] by replacing the item with the same id by the parameter [todo] + void updateTodo(Todo todo) { + assert(todo != null); + assert(todo.id != null); + var oldTodo = _todos.firstWhere((it) => it.id == todo.id); + var replaceIndex = _todos.indexOf(oldTodo); + _todos.replaceRange(replaceIndex, replaceIndex + 1, [todo]); + notifyListeners(); + _uploadItems(); + } + + void removeTodo(Todo todo) { + _todos.removeWhere((it) => it.id == todo.id); + notifyListeners(); + _uploadItems(); + } + + void addTodo(Todo todo) { + _todos.add(todo); + notifyListeners(); + _uploadItems(); + } + + void _uploadItems() { + repository.saveTodos(_todos.map((it) => it.toEntity()).toList()); + } + + Todo todoById(String id) { + return _todos.firstWhere((it) => it.id == id, orElse: () => null); + } +} diff --git a/provider/lib/widgets/extra_actions_button.dart b/provider/lib/widgets/extra_actions_button.dart new file mode 100644 index 00000000..6b734073 --- /dev/null +++ b/provider/lib/widgets/extra_actions_button.dart @@ -0,0 +1,46 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:provider/provider.dart'; +import 'package:provider_sample/models.dart'; +import 'package:provider_sample/todo_list_model.dart'; + +class ExtraActionsButton extends StatelessWidget { + ExtraActionsButton({ + Key key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (BuildContext context, TodoListModel model, Widget child) { + return PopupMenuButton( + key: ArchSampleKeys.extraActionsButton, + onSelected: (action) { + if (action == ExtraAction.toggleAllComplete) { + model.toggleAll(); + } else if (action == ExtraAction.clearCompleted) { + model.clearCompleted(); + } + }, + itemBuilder: (BuildContext context) => >[ + PopupMenuItem( + key: ArchSampleKeys.toggleAll, + value: ExtraAction.toggleAllComplete, + child: Text(model.todos.any((it) => it.complete) + ? ArchSampleLocalizations.of(context).markAllIncomplete + : ArchSampleLocalizations.of(context).markAllComplete), + ), + PopupMenuItem( + key: ArchSampleKeys.clearCompleted, + value: ExtraAction.clearCompleted, + child: Text(ArchSampleLocalizations.of(context).clearCompleted), + ), + ], + ); + }); + } +} diff --git a/provider/lib/widgets/filter_button.dart b/provider/lib/widgets/filter_button.dart new file mode 100644 index 00000000..31dd6e43 --- /dev/null +++ b/provider/lib/widgets/filter_button.dart @@ -0,0 +1,77 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:provider/provider.dart'; +import 'package:provider_sample/todo_list_model.dart'; + +class FilterButton extends StatelessWidget { + final bool isActive; + + FilterButton({this.isActive, Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return AnimatedOpacity( + opacity: isActive ? 1.0 : 0.0, + duration: Duration(milliseconds: 150), + child: Consumer( + builder: (BuildContext context, TodoListModel model, Widget child) { + return PopupMenuButton( + key: ArchSampleKeys.filterButton, + tooltip: ArchSampleLocalizations.of(context).filterTodos, + onSelected: (filter) { + model.activeFilter = filter; + }, + itemBuilder: (BuildContext context) => _items(context, model), + icon: Icon(Icons.filter_list), + ); + }, + ), + ); + } + + List> _items( + BuildContext context, TodoListModel model) { + final activeStyle = Theme.of(context) + .textTheme + .body1 + .copyWith(color: Theme.of(context).accentColor); + final defaultStyle = Theme.of(context).textTheme.body1; + + return [ + PopupMenuItem( + key: ArchSampleKeys.allFilter, + value: VisibilityFilter.all, + child: Text( + ArchSampleLocalizations.of(context).showAll, + style: model.activeFilter == VisibilityFilter.all + ? activeStyle + : defaultStyle, + ), + ), + PopupMenuItem( + key: ArchSampleKeys.activeFilter, + value: VisibilityFilter.active, + child: Text( + ArchSampleLocalizations.of(context).showActive, + style: model.activeFilter == VisibilityFilter.active + ? activeStyle + : defaultStyle, + ), + ), + PopupMenuItem( + key: ArchSampleKeys.completedFilter, + value: VisibilityFilter.completed, + child: Text( + ArchSampleLocalizations.of(context).showCompleted, + style: model.activeFilter == VisibilityFilter.completed + ? activeStyle + : defaultStyle, + ), + ), + ]; + } +} diff --git a/provider/lib/widgets/stats_counter.dart b/provider/lib/widgets/stats_counter.dart new file mode 100644 index 00000000..63312547 --- /dev/null +++ b/provider/lib/widgets/stats_counter.dart @@ -0,0 +1,64 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:provider/provider.dart'; +import 'package:provider_sample/models.dart'; +import 'package:provider_sample/todo_list_model.dart'; + +class StatsCounter extends StatelessWidget { + StatsCounter() : super(key: ArchSampleKeys.statsCounter); + + bool isActive(Todo todo) => !todo.complete; + + bool isCompleted(Todo todo) => todo.complete; + + @override + Widget build(BuildContext context) { + return Center( + child: Consumer(builder: (context, model, child) { + var numCompleted = model.todos.where(isCompleted).toList().length; + var numActive = model.todos.where(isActive).toList().length; + + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(bottom: 8.0), + child: Text( + ArchSampleLocalizations.of(context).completedTodos, + style: Theme.of(context).textTheme.title, + ), + ), + Padding( + padding: EdgeInsets.only(bottom: 24.0), + child: Text( + '$numCompleted', + key: ArchSampleKeys.statsNumCompleted, + style: Theme.of(context).textTheme.subhead, + ), + ), + Padding( + padding: EdgeInsets.only(bottom: 8.0), + child: Text( + ArchSampleLocalizations.of(context).activeTodos, + style: Theme.of(context).textTheme.title, + ), + ), + Padding( + padding: EdgeInsets.only(bottom: 24.0), + child: Text( + "$numActive", + key: ArchSampleKeys.statsNumActive, + style: Theme.of(context).textTheme.subhead, + ), + ) + ], + ); + }), + ); + } +} diff --git a/provider/lib/widgets/todo_item.dart b/provider/lib/widgets/todo_item.dart new file mode 100644 index 00000000..2027e755 --- /dev/null +++ b/provider/lib/widgets/todo_item.dart @@ -0,0 +1,50 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:provider_sample/models.dart'; + +class TodoItem extends StatelessWidget { + final DismissDirectionCallback onDismissed; + final GestureTapCallback onTap; + final ValueChanged onCheckboxChanged; + final Todo todo; + + TodoItem({ + @required this.onDismissed, + @required this.onTap, + @required this.onCheckboxChanged, + @required this.todo, + }); + + @override + Widget build(BuildContext context) { + return Dismissible( + key: ArchSampleKeys.todoItem(todo.id), + onDismissed: onDismissed, + child: ListTile( + onTap: onTap, + leading: Checkbox( + key: ArchSampleKeys.todoItemCheckbox(todo.id), + value: todo.complete, + onChanged: onCheckboxChanged, + ), + title: Text( + todo.task, + key: ArchSampleKeys.todoItemTask(todo.id), + style: Theme.of(context).textTheme.title, + ), + subtitle: Text( + todo.note, + key: ArchSampleKeys.todoItemNote(todo.id), + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: Theme.of(context).textTheme.subhead, + ), + ), + ); + } +} diff --git a/provider/lib/widgets/todo_list.dart b/provider/lib/widgets/todo_list.dart new file mode 100644 index 00000000..e7eab619 --- /dev/null +++ b/provider/lib/widgets/todo_list.dart @@ -0,0 +1,100 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:provider/provider.dart'; +import 'package:provider_sample/models.dart'; +import 'package:provider_sample/screens/detail_screen.dart'; +import 'package:provider_sample/todo_list_model.dart'; +import 'package:provider_sample/widgets/todo_item.dart'; + +class TodoList extends StatelessWidget { + TodoList({Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, model, child) { + return Container( + child: model.isLoading ? _buildLoading : _buildList(model), + ); + }, + ); + } + + Center get _buildLoading { + return Center( + child: CircularProgressIndicator( + key: ArchSampleKeys.todosLoading, + ), + ); + } + + ListView _buildList(TodoListModel model) { + final todos = model.filteredTodos; + + return ListView.builder( + key: ArchSampleKeys.todoList, + itemCount: todos.length, + itemBuilder: (BuildContext context, int index) { + final todo = todos[index]; + + return TodoItem( + todo: todo, + onDismissed: (direction) { + _removeTodo(context, todo); + }, + onTap: () { + Navigator.of(context).push( + MaterialPageRoute( + builder: (_) { + return DetailScreen( + todoId: todo.id, + ); + }, + ), + ).then((todo) { + if (todo is Todo) { + _showUndoSnackbar(context, todo); + } + }); + }, + onCheckboxChanged: (complete) { + var toggled = todo.copy(complete: !todo.complete); + model.updateTodo(toggled); + }, + ); + }, + ); + } + + void _removeTodo(BuildContext context, Todo todo) { + Provider.of(context, listen: false).removeTodo(todo); + + _showUndoSnackbar(context, todo); + } + + void _showUndoSnackbar(BuildContext context, Todo todo) { + Scaffold.of(context).showSnackBar( + SnackBar( + key: ArchSampleKeys.snackbar, + duration: Duration(seconds: 2), + backgroundColor: Theme.of(context).backgroundColor, + content: Text( + ArchSampleLocalizations.of(context).todoDeleted(todo.task), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + action: SnackBarAction( + key: ArchSampleKeys.snackbarAction(todo.id), + label: ArchSampleLocalizations.of(context).undo, + onPressed: () { + Provider.of(context, listen: false).addTodo(todo); + }, + ), + ), + ); + } +} diff --git a/provider/lib/widgets/typedefs.dart b/provider/lib/widgets/typedefs.dart new file mode 100644 index 00000000..e518eecc --- /dev/null +++ b/provider/lib/widgets/typedefs.dart @@ -0,0 +1,17 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:provider_sample/models.dart'; + +typedef TodoAdder(Todo todo); + +typedef TodoRemover(Todo todo); + +typedef TodoUpdater( + Todo todo, { + bool complete, + String id, + String note, + String task, +}); diff --git a/provider/pubspec.yaml b/provider/pubspec.yaml new file mode 100644 index 00000000..ed3be699 --- /dev/null +++ b/provider/pubspec.yaml @@ -0,0 +1,77 @@ +name: provider_sample +description: A new Flutter project. + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +version: 1.0.0+1 + +environment: + sdk: ">=2.1.0 <3.0.0" + +dependencies: + provider: ^2.0.1+1 + todos_repository_simple: + path: ../todos_repository_simple + todos_app_core: + path: ../todos_app_core + flutter: + sdk: flutter + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^0.1.2 + +dev_dependencies: + mockito: ^3.0.0 + test: ^1.3.0 + flutter_test: + sdk: flutter + flutter_driver: + sdk: flutter + integration_tests: + path: ../integration_tests + +# For information on the generic Dart part of this file, see the +# following page: https://www.dartlang.org/tools/pub/pubspec + +# The following section is specific to Flutter. +flutter: + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware. + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages diff --git a/provider/test/app_state_test.dart b/provider/test/app_state_test.dart new file mode 100644 index 00000000..bf439cb6 --- /dev/null +++ b/provider/test/app_state_test.dart @@ -0,0 +1,167 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; + +import 'package:provider_sample/models.dart'; +import 'package:provider_sample/todo_list_model.dart'; +import 'package:test/test.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +main() { + group('TodoListModel', () { + test('should check if there are completed todos', () async { + final model = TodoListModel( + repository: MockRepository([ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ])); + await model.loadTodos(); + + expect(model.todos.any((it) => it.complete), true); + }); + + test('should calculate the number of active todos', () async { + final model = TodoListModel( + repository: MockRepository([ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ])); + await model.loadTodos(); + + expect(model.todos.where((it) => !it.complete).toList().length, 2); + }); + + test('should calculate the number of completed todos', () async { + final model = TodoListModel( + repository: MockRepository([ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ])); + await model.loadTodos(); + + expect(model.todos.where((it) => it.complete).toList().length, 1); + }); + + test('should return all todos if the VisibilityFilter is all', () async { + final todos = [ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ]; + final model = TodoListModel( + repository: MockRepository(todos), + activeFilter: VisibilityFilter.all); + await model.loadTodos(); + + expect(model.filteredTodos, todos); + }); + + test('should return active todos if the VisibilityFilter is active', + () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + final model = TodoListModel( + repository: MockRepository(todos), + activeFilter: VisibilityFilter.active, + ); + await model.loadTodos(); + + expect(model.filteredTodos, [ + todo1, + todo2, + ]); + }); + + test('should return completed todos if the VisibilityFilter is completed', + () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + final model = TodoListModel( + repository: MockRepository(todos), + activeFilter: VisibilityFilter.completed, + ); + await model.loadTodos(); + + expect(model.filteredTodos, [todo3]); + }); + + test('should clear the completed todos', () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + final model = TodoListModel( + repository: MockRepository(todos), + ); + await model.loadTodos(); + + model.clearCompleted(); + + expect(model.todos, [ + todo1, + todo2, + ]); + }); + + test('toggle all as complete or incomplete', () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + final model = TodoListModel( + repository: MockRepository(todos), + ); + await model.loadTodos(); + + // Toggle all complete + model.toggleAll(); + expect(model.todos.every((t) => t.complete), isTrue); + + // Toggle all incomplete + model.toggleAll(); + expect(model.todos.every((t) => !t.complete), isTrue); + }); + }); +} + +class MockRepository extends TodosRepository { + List entities; + + MockRepository(List todos) + : this.entities = todos.map((it) => it.toEntity()).toList(); + + @override + Future> loadTodos() { + return Future.value(entities); + } + + @override + Future saveTodos(List todos) { + return Future.sync(() => entities = todos); + } +} diff --git a/provider/test_driver/todo_app.dart b/provider/test_driver/todo_app.dart new file mode 100644 index 00000000..e7f74564 --- /dev/null +++ b/provider/test_driver/todo_app.dart @@ -0,0 +1,13 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +// This line imports the extension +import 'package:flutter_driver/driver_extension.dart'; +import 'package:provider_sample/main.dart' as app; + +void main() { + enableFlutterDriverExtension(); + + app.main(); +} diff --git a/provider/test_driver/todo_app_test.dart b/provider/test_driver/todo_app_test.dart new file mode 100644 index 00000000..14ddb566 --- /dev/null +++ b/provider/test_driver/todo_app_test.dart @@ -0,0 +1,9 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:integration_tests/integration_tests.dart' as integrationTests; + +main() { + integrationTests.main(); +} From 31567fd129e5d7eea68c426640a27687c54f2cdf Mon Sep 17 00:00:00 2001 From: Shakib Hossain Date: Thu, 6 Jun 2019 23:53:13 +0600 Subject: [PATCH 11/77] Update README to include the provider app --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c50c1cb5..6ee7b6c2 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ Examples have been updated to Dart 2. - [MVC Example](mvc) - Uses the [MVC](https://pub.dartlang.org/packages/mvc_pattern) library to implement the traditional MVC design pattern. - [Frideos Example](frideos_library) - Uses the [Frideos](https://pub.dartlang.org/packages/frideos) library to manage app state and update widgets using streams. - [MobX Example](mobx) - Uses the [MobX](https://pub.dev/packages/mobx) library to manage app state and update widgets using `Observables`, `Actions` and `Reactions`. +- [Provider Example](provider) - Uses the [provider](https://pub.dev/packages/provider) package now recommended by the Flutter team. ### Supporting Code @@ -79,5 +80,6 @@ All of these ideas and even some of the language are directly influenced by two - [Francesco Mineo](https://github.com/frideosapps) - [Pavan Podila](https://github.com/pavanpodila) - [Kushagra Saxena](https://github.com/kush3107) +- [Shakib Hossain](https://github.com/shakib609) I'd like to thank all of the folks who have helped write new samples, improve the current implementations, and added documentation! You're amazing! :) From d9141769b5a162dafbe90946359d0d38d8ce7154 Mon Sep 17 00:00:00 2001 From: Shakib Hossain Date: Fri, 7 Jun 2019 00:10:30 +0600 Subject: [PATCH 12/77] Add provider example app to .cirrus.yml for Cirrus CI --- .cirrus.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.cirrus.yml b/.cirrus.yml index ee17fb3b..63583f73 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -33,6 +33,7 @@ task: app_arch: mvc app_arch: mvi_flutter app_arch: mvu + app_arch: provider app_arch: redux app_arch: scoped_model app_arch: simple_bloc_flutter @@ -73,6 +74,7 @@ task: app_arch: mvc app_arch: mvi_flutter app_arch: mvu + app_arch: provider app_arch: redux app_arch: scoped_model app_arch: simple_bloc_flutter From a368de1107f2ae290f4b085153a9ca2b0dc0ebd1 Mon Sep 17 00:00:00 2001 From: Shakib Hossain Date: Mon, 26 Aug 2019 11:25:56 +0600 Subject: [PATCH 13/77] Update .travis.yml according to other samples --- .travis.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.travis.yml b/.travis.yml index b612635b..1bd4cab9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -281,6 +281,16 @@ jobs: env: redux_ios before_install: *before_install_osx script: travis_retry ./scripts/ci.sh ./redux + - <<: *integration-test + os: linux + env: provider_android + script: travis_retry ./scripts/ci.sh ./provider + - <<: *integration-test + os: osx + osx_image: xcode8.0 + env: provider_ios + before_install: *before_install_osx + script: travis_retry ./scripts/ci.sh ./provider - <<: *integration-test os: linux env: scoped_model_android From 9df595eee1947ed81aa222c05659f920faefb326 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Wed, 8 Jan 2020 20:07:55 +0100 Subject: [PATCH 14/77] Update provider example to latest version --- .gitignore | 2 +- .../lib/containers/filter_selector.g.dart | 2 +- built_redux/lib/models/app_state.g.dart | 2 +- .../.flutter-plugins-dependencies | 1 - firebase_rtdb_flutter_repository/pubspec.yaml | 2 +- line_count.md | 15 +- mvi_flutter/.flutter-plugins-dependencies | 1 - mvu/lib/common/snackbar.dart | 1 - mvu/lib/edit/types.dart | 2 +- mvu/lib/edit/types.g.dart | 6 +- provider/.metadata | 2 +- provider/android/.gitignore | 7 + provider/android/app/build.gradle | 14 +- .../android/app/src/debug/AndroidManifest.xml | 2 +- .../android/app/src/main/AndroidManifest.xml | 19 +- .../example/provider_sample/MainActivity.java | 13 -- .../com/example/provider/MainActivity.kt | 12 ++ .../app/src/profile/AndroidManifest.xml | 2 +- provider/android/build.gradle | 4 +- provider/android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 2 +- provider/ios/.gitignore | 32 ++++ provider/ios/Flutter/AppFrameworkInfo.plist | 2 +- provider/ios/Flutter/Debug.xcconfig | 1 + provider/ios/Flutter/Release.xcconfig | 1 + provider/ios/Podfile | 90 ++++++++++ provider/ios/Runner.xcodeproj/project.pbxproj | 50 ++++-- .../xcshareddata/xcschemes/Runner.xcscheme | 4 +- provider/ios/Runner/AppDelegate.h | 6 - provider/ios/Runner/AppDelegate.m | 13 -- provider/ios/Runner/AppDelegate.swift | 13 ++ .../Icon-App-1024x1024@1x.png | Bin 11112 -> 10932 bytes provider/ios/Runner/Info.plist | 4 +- provider/ios/Runner/Runner-Bridging-Header.h | 1 + provider/ios/Runner/main.m | 9 - provider/lib/add_todo_screen.dart | 84 +++++++++ provider/lib/app.dart | 43 +++-- provider/lib/details_screen.dart | 101 +++++++++++ provider/lib/edit_todo_screen.dart | 88 ++++++++++ provider/lib/home/extra_actions_button.dart | 49 ++++++ .../lib/{widgets => home}/filter_button.dart | 47 ++--- provider/lib/home/home_screen.dart | 137 +++++++++++++++ provider/lib/home/stats_view.dart | 56 ++++++ provider/lib/home/todo_list_view.dart | 74 ++++++++ provider/lib/localization.dart | 4 +- provider/lib/main.dart | 4 +- provider/lib/models.dart | 2 +- provider/lib/screens/add_edit_screen.dart | 111 ------------ provider/lib/screens/detail_screen.dart | 107 ----------- provider/lib/screens/home_screen.dart | 75 -------- provider/lib/todo_list_model.dart | 54 +++--- .../lib/widgets/extra_actions_button.dart | 46 ----- provider/lib/widgets/stats_counter.dart | 64 ------- provider/lib/widgets/todo_item.dart | 50 ------ provider/lib/widgets/todo_list.dart | 100 ----------- provider/lib/widgets/typedefs.dart | 17 -- provider/line_count.md | 0 provider/pubspec.yaml | 12 +- provider/test/app_state_test.dart | 166 ++++++++---------- provider/test/home_screen_test.dart | 132 ++++++++++++++ provider/test/mock_repository.dart | 21 +++ provider/test_driver/todo_app_test.dart | 12 +- scripts/line_counter.dart | 13 +- 63 files changed, 1152 insertions(+), 857 deletions(-) delete mode 100644 firebase_rtdb_flutter_repository/.flutter-plugins-dependencies delete mode 100644 mvi_flutter/.flutter-plugins-dependencies create mode 100644 provider/android/.gitignore delete mode 100644 provider/android/app/src/main/java/com/example/provider_sample/MainActivity.java create mode 100644 provider/android/app/src/main/kotlin/com/example/provider/MainActivity.kt create mode 100644 provider/ios/.gitignore create mode 100644 provider/ios/Podfile delete mode 100644 provider/ios/Runner/AppDelegate.h delete mode 100644 provider/ios/Runner/AppDelegate.m create mode 100644 provider/ios/Runner/AppDelegate.swift create mode 100644 provider/ios/Runner/Runner-Bridging-Header.h delete mode 100644 provider/ios/Runner/main.m create mode 100644 provider/lib/add_todo_screen.dart create mode 100644 provider/lib/details_screen.dart create mode 100644 provider/lib/edit_todo_screen.dart create mode 100644 provider/lib/home/extra_actions_button.dart rename provider/lib/{widgets => home}/filter_button.dart (60%) create mode 100644 provider/lib/home/home_screen.dart create mode 100644 provider/lib/home/stats_view.dart create mode 100644 provider/lib/home/todo_list_view.dart delete mode 100644 provider/lib/screens/add_edit_screen.dart delete mode 100644 provider/lib/screens/detail_screen.dart delete mode 100644 provider/lib/screens/home_screen.dart delete mode 100644 provider/lib/widgets/extra_actions_button.dart delete mode 100644 provider/lib/widgets/stats_counter.dart delete mode 100644 provider/lib/widgets/todo_item.dart delete mode 100644 provider/lib/widgets/todo_list.dart delete mode 100644 provider/lib/widgets/typedefs.dart create mode 100644 provider/line_count.md create mode 100644 provider/test/home_screen_test.dart create mode 100644 provider/test/mock_repository.dart diff --git a/.gitignore b/.gitignore index d23026dc..b58e010c 100644 --- a/.gitignore +++ b/.gitignore @@ -83,10 +83,10 @@ lcov.info **/ios/Flutter/flutter_export_environment.sh **/ios/ServiceDefinitions.json **/ios/Runner/GeneratedPluginRegistrant.* +**/.flutter-plugins-dependencies # Exceptions to above rules. !**/ios/**/default.mode1v3 !**/ios/**/default.mode2v3 !**/ios/**/default.pbxuser !**/ios/**/default.perspectivev3 -!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages diff --git a/built_redux/lib/containers/filter_selector.g.dart b/built_redux/lib/containers/filter_selector.g.dart index 0d450cc8..f84c8981 100644 --- a/built_redux/lib/containers/filter_selector.g.dart +++ b/built_redux/lib/containers/filter_selector.g.dart @@ -49,7 +49,7 @@ class _$FilterSelectorViewModel extends FilterSelectorViewModel { if (identical(other, this)) return true; if (other is! FilterSelectorViewModel) return false; return onFilterSelected == other.onFilterSelected && - activeFilter == other.activeFilter; + activeFilter == other.filter; } @override diff --git a/built_redux/lib/models/app_state.g.dart b/built_redux/lib/models/app_state.g.dart index d6a6ed60..c35782e4 100644 --- a/built_redux/lib/models/app_state.g.dart +++ b/built_redux/lib/models/app_state.g.dart @@ -141,7 +141,7 @@ class _$AppState extends AppState { return isLoading == other.isLoading && todos == other.filteredTodos && activeTab == other.activeTab && - activeFilter == other.activeFilter; + activeFilter == other.filter; } @override diff --git a/firebase_rtdb_flutter_repository/.flutter-plugins-dependencies b/firebase_rtdb_flutter_repository/.flutter-plugins-dependencies deleted file mode 100644 index 81cada61..00000000 --- a/firebase_rtdb_flutter_repository/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"firebase_auth","dependencies":[]},{"name":"firebase_core","dependencies":[]},{"name":"firebase_database","dependencies":["firebase_core"]}]} \ No newline at end of file diff --git a/firebase_rtdb_flutter_repository/pubspec.yaml b/firebase_rtdb_flutter_repository/pubspec.yaml index 243ab8d6..11e4c493 100644 --- a/firebase_rtdb_flutter_repository/pubspec.yaml +++ b/firebase_rtdb_flutter_repository/pubspec.yaml @@ -10,7 +10,7 @@ dependencies: todos_repository_core: path: ../todos_repository_core firebase_auth: 0.5.9 - firebase_database: ^0.4.6 + firebase_database: ^3.1.1 dev_dependencies: test: diff --git a/line_count.md b/line_count.md index 7eff0744..b0431a7f 100644 --- a/line_count.md +++ b/line_count.md @@ -4,12 +4,10 @@ Though not the only factor or even most important factor, the amount of code it takes to achieve a working product is an important consideration when comparing frameworks. -While this is an imperfect line count comparison -- some of the samples contain -a bit more functionality than others -- it's a pretty fair comparison overall: -All of the apps implement the spec using the provided `app_core` and -`todos_repository`, implement the same Flutter keys, use the same theme, are -formatted with dartfmt, and all comments / blank lines / generated code are -excluded. +This is an imperfect line count comparison -- some of the samples contain a bit +more functionality / are structured a bit differently than others -- and should +be taken with a grain of salt. All generated files, blank lines and comment +lines are removed for this comparison. For authors of frameworks or samples (hey, I'm one of those!): Please do not take this comparison personally, nor should folks play "Code Golf" with the @@ -20,17 +18,18 @@ samples to make them smaller, unless doing so improves the application overall. | scoped_model | 778 | | mobx | 815 | | inherited_widget | 832 | +| provider | 835 | | mvc | 842 | | vanilla | 842 | | frideos_library | 878 | | simple blocs | 1076 | | built_redux | 1172 | | bloc | 1186 | -| mvu | 1191 | +| mvu | 1190 | | bloc library | 1214 | | mvi | 1244 | | redux | 1362 | | firestore_redux | 1429 | -Note: This file was generated on 2020-01-08 13:03:29.947330Z using `scripts/line_counter.dart`. +Note: This file was generated on 2020-01-08 19:04:25.222051Z using `scripts/line_counter.dart`. diff --git a/mvi_flutter/.flutter-plugins-dependencies b/mvi_flutter/.flutter-plugins-dependencies deleted file mode 100644 index 55d182b6..00000000 --- a/mvi_flutter/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core"]},{"name":"firebase_auth","dependencies":["firebase_core"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"path_provider","dependencies":[]}]} \ No newline at end of file diff --git a/mvu/lib/common/snackbar.dart b/mvu/lib/common/snackbar.dart index 8559d5f1..9caf4363 100644 --- a/mvu/lib/common/snackbar.dart +++ b/mvu/lib/common/snackbar.dart @@ -14,7 +14,6 @@ Cmd showUndoCmd(String task, TMsg Function() onUndo) { SnackBar( key: ArchSampleKeys.snackbar, duration: Duration(seconds: 2), - backgroundColor: Theme.of(_scaffoldState.context).backgroundColor, content: Text( ArchSampleLocalizations.of(_scaffoldState.context).todoDeleted(task), maxLines: 1, diff --git a/mvu/lib/edit/types.dart b/mvu/lib/edit/types.dart index 4b5d423d..48bde014 100644 --- a/mvu/lib/edit/types.dart +++ b/mvu/lib/edit/types.dart @@ -12,7 +12,7 @@ abstract class EditTodoModel String get id; EditTodoModel._(); - factory EditTodoModel([update(EditTodoModelBuilder b)]) = _$EditTodoModel; + factory EditTodoModel([void Function(EditTodoModelBuilder b) update]) = _$EditTodoModel; } abstract class EditTodoMessage {} diff --git a/mvu/lib/edit/types.g.dart b/mvu/lib/edit/types.g.dart index 7cb3cb5a..311ee29e 100644 --- a/mvu/lib/edit/types.g.dart +++ b/mvu/lib/edit/types.g.dart @@ -27,7 +27,7 @@ class _$EditTodoModel extends EditTodoModel { @override final String id; - factory _$EditTodoModel([void updates(EditTodoModelBuilder b)]) => + factory _$EditTodoModel([void Function(EditTodoModelBuilder b) updates]) => (new EditTodoModelBuilder()..update(updates)).build(); _$EditTodoModel._({this.task, this.note, this.id}) : super._() { @@ -43,7 +43,7 @@ class _$EditTodoModel extends EditTodoModel { } @override - EditTodoModel rebuild(void updates(EditTodoModelBuilder b)) => + EditTodoModel rebuild(void Function(EditTodoModelBuilder b) updates) => (toBuilder()..update(updates)).build(); @override @@ -110,7 +110,7 @@ class EditTodoModelBuilder } @override - void update(void updates(EditTodoModelBuilder b)) { + void update(void Function(EditTodoModelBuilder b) updates) { if (updates != null) updates(this); } diff --git a/provider/.metadata b/provider/.metadata index 033ad2af..1b5cec02 100644 --- a/provider/.metadata +++ b/provider/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: 7a4c33425ddd78c54aba07d86f3f9a4a0051769b + revision: 27321ebbad34b0a3fafe99fac037102196d655ff channel: stable project_type: app diff --git a/provider/android/.gitignore b/provider/android/.gitignore new file mode 100644 index 00000000..bc2100d8 --- /dev/null +++ b/provider/android/.gitignore @@ -0,0 +1,7 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java diff --git a/provider/android/app/build.gradle b/provider/android/app/build.gradle index 53605b5a..e68c49c0 100644 --- a/provider/android/app/build.gradle +++ b/provider/android/app/build.gradle @@ -22,23 +22,28 @@ if (flutterVersionName == null) { } apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion 28 + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + lintOptions { disable 'InvalidPackage' } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.provider_sample" + applicationId "com.example.provider" minSdkVersion 16 targetSdkVersion 28 versionCode flutterVersionCode.toInteger() versionName flutterVersionName - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { @@ -55,7 +60,8 @@ flutter { } dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + androidTestImplementation 'androidx.test:runner:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' } diff --git a/provider/android/app/src/debug/AndroidManifest.xml b/provider/android/app/src/debug/AndroidManifest.xml index e9b98e10..47be3d0d 100644 --- a/provider/android/app/src/debug/AndroidManifest.xml +++ b/provider/android/app/src/debug/AndroidManifest.xml @@ -1,5 +1,5 @@ + package="com.example.provider"> diff --git a/provider/android/app/src/main/AndroidManifest.xml b/provider/android/app/src/main/AndroidManifest.xml index 7111d705..14dc0971 100644 --- a/provider/android/app/src/main/AndroidManifest.xml +++ b/provider/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + package="com.example.provider"> - - + + diff --git a/provider/android/app/src/main/java/com/example/provider_sample/MainActivity.java b/provider/android/app/src/main/java/com/example/provider_sample/MainActivity.java deleted file mode 100644 index d9624307..00000000 --- a/provider/android/app/src/main/java/com/example/provider_sample/MainActivity.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.example.provider_sample; - -import android.os.Bundle; -import io.flutter.app.FlutterActivity; -import io.flutter.plugins.GeneratedPluginRegistrant; - -public class MainActivity extends FlutterActivity { - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - GeneratedPluginRegistrant.registerWith(this); - } -} diff --git a/provider/android/app/src/main/kotlin/com/example/provider/MainActivity.kt b/provider/android/app/src/main/kotlin/com/example/provider/MainActivity.kt new file mode 100644 index 00000000..ff6dca69 --- /dev/null +++ b/provider/android/app/src/main/kotlin/com/example/provider/MainActivity.kt @@ -0,0 +1,12 @@ +package com.example.provider + +import androidx.annotation.NonNull; +import io.flutter.embedding.android.FlutterActivity +import io.flutter.embedding.engine.FlutterEngine +import io.flutter.plugins.GeneratedPluginRegistrant + +class MainActivity: FlutterActivity() { + override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { + GeneratedPluginRegistrant.registerWith(flutterEngine); + } +} diff --git a/provider/android/app/src/profile/AndroidManifest.xml b/provider/android/app/src/profile/AndroidManifest.xml index e9b98e10..47be3d0d 100644 --- a/provider/android/app/src/profile/AndroidManifest.xml +++ b/provider/android/app/src/profile/AndroidManifest.xml @@ -1,5 +1,5 @@ + package="com.example.provider"> diff --git a/provider/android/build.gradle b/provider/android/build.gradle index bb8a3038..3100ad2d 100644 --- a/provider/android/build.gradle +++ b/provider/android/build.gradle @@ -1,11 +1,13 @@ buildscript { + ext.kotlin_version = '1.3.50' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.5.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/provider/android/gradle.properties b/provider/android/gradle.properties index 8bd86f68..38c8d454 100644 --- a/provider/android/gradle.properties +++ b/provider/android/gradle.properties @@ -1 +1,4 @@ org.gradle.jvmargs=-Xmx1536M +android.enableR8=true +android.useAndroidX=true +android.enableJetifier=true diff --git a/provider/android/gradle/wrapper/gradle-wrapper.properties b/provider/android/gradle/wrapper/gradle-wrapper.properties index 2819f022..296b146b 100644 --- a/provider/android/gradle/wrapper/gradle-wrapper.properties +++ b/provider/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip diff --git a/provider/ios/.gitignore b/provider/ios/.gitignore new file mode 100644 index 00000000..e96ef602 --- /dev/null +++ b/provider/ios/.gitignore @@ -0,0 +1,32 @@ +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/provider/ios/Flutter/AppFrameworkInfo.plist b/provider/ios/Flutter/AppFrameworkInfo.plist index 9367d483..6b4c0f78 100644 --- a/provider/ios/Flutter/AppFrameworkInfo.plist +++ b/provider/ios/Flutter/AppFrameworkInfo.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - en + $(DEVELOPMENT_LANGUAGE) CFBundleExecutable App CFBundleIdentifier diff --git a/provider/ios/Flutter/Debug.xcconfig b/provider/ios/Flutter/Debug.xcconfig index 592ceee8..e8efba11 100644 --- a/provider/ios/Flutter/Debug.xcconfig +++ b/provider/ios/Flutter/Debug.xcconfig @@ -1 +1,2 @@ +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/provider/ios/Flutter/Release.xcconfig b/provider/ios/Flutter/Release.xcconfig index 592ceee8..399e9340 100644 --- a/provider/ios/Flutter/Release.xcconfig +++ b/provider/ios/Flutter/Release.xcconfig @@ -1 +1,2 @@ +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/provider/ios/Podfile b/provider/ios/Podfile new file mode 100644 index 00000000..b30a428b --- /dev/null +++ b/provider/ios/Podfile @@ -0,0 +1,90 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '9.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def parse_KV_file(file, separator='=') + file_abs_path = File.expand_path(file) + if !File.exists? file_abs_path + return []; + end + generated_key_values = {} + skip_line_start_symbols = ["#", "/"] + File.foreach(file_abs_path) do |line| + next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } + plugin = line.split(pattern=separator) + if plugin.length == 2 + podname = plugin[0].strip() + path = plugin[1].strip() + podpath = File.expand_path("#{path}", file_abs_path) + generated_key_values[podname] = podpath + else + puts "Invalid plugin specification: #{line}" + end + end + generated_key_values +end + +target 'Runner' do + use_frameworks! + use_modular_headers! + + # Flutter Pod + + copied_flutter_dir = File.join(__dir__, 'Flutter') + copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') + copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') + unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) + # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet. + # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration. + # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist. + + generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') + unless File.exist?(generated_xcode_build_settings_path) + raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) + cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; + + unless File.exist?(copied_framework_path) + FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) + end + unless File.exist?(copied_podspec_path) + FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) + end + end + + # Keep pod path relative so it can be checked into Podfile.lock. + pod 'Flutter', :path => 'Flutter' + + # Plugin Pods + + # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock + # referring to absolute paths on developers' machines. + system('rm -rf .symlinks') + system('mkdir -p .symlinks/plugins') + plugin_pods = parse_KV_file('../.flutter-plugins') + plugin_pods.each do |name, path| + symlink = File.join('.symlinks', 'plugins', name) + File.symlink(path, symlink) + pod name, :path => File.join(symlink, 'ios') + end +end + +# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. +install! 'cocoapods', :disable_input_output_paths => true + +post_install do |installer| + installer.pods_project.targets.each do |target| + target.build_configurations.each do |config| + config.build_settings['ENABLE_BITCODE'] = 'NO' + end + end +end diff --git a/provider/ios/Runner.xcodeproj/project.pbxproj b/provider/ios/Runner.xcodeproj/project.pbxproj index 46a2c358..468189ac 100644 --- a/provider/ios/Runner.xcodeproj/project.pbxproj +++ b/provider/ios/Runner.xcodeproj/project.pbxproj @@ -11,11 +11,9 @@ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; - 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; - 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; @@ -41,14 +39,13 @@ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; @@ -87,7 +84,6 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, - CF3B75C9A7D2FA2A4C99F110 /* Frameworks */, ); sourceTree = ""; }; @@ -102,8 +98,6 @@ 97C146F01CF9000F007C117D /* Runner */ = { isa = PBXGroup; children = ( - 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, - 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, 97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, @@ -111,6 +105,8 @@ 97C146F11CF9000F007C117D /* Supporting Files */, 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, ); path = Runner; sourceTree = ""; @@ -118,7 +114,6 @@ 97C146F11CF9000F007C117D /* Supporting Files */ = { isa = PBXGroup; children = ( - 97C146F21CF9000F007C117D /* main.m */, ); name = "Supporting Files"; sourceTree = ""; @@ -152,17 +147,18 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0910; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = "The Chromium Authors"; TargetAttributes = { 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; }; }; }; buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -185,7 +181,6 @@ files = ( 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, ); @@ -229,8 +224,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */, - 97C146F31CF9000F007C117D /* main.m in Sources */, + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -271,12 +265,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -300,6 +296,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -310,8 +307,8 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = S8QB4VV633; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -323,8 +320,10 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.providerSample; + PRODUCT_BUNDLE_IDENTIFIER = com.example.provider; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Profile; @@ -343,12 +342,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -397,12 +398,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -426,6 +429,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -436,6 +441,7 @@ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -448,8 +454,11 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.providerSample; + PRODUCT_BUNDLE_IDENTIFIER = com.example.provider; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -459,6 +468,7 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -471,8 +481,10 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.providerSample; + PRODUCT_BUNDLE_IDENTIFIER = com.example.provider; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; diff --git a/provider/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/provider/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 786d6aad..a28140cf 100644 --- a/provider/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/provider/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ @@ -46,7 +45,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/provider/ios/Runner/AppDelegate.h b/provider/ios/Runner/AppDelegate.h deleted file mode 100644 index 36e21bbf..00000000 --- a/provider/ios/Runner/AppDelegate.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import - -@interface AppDelegate : FlutterAppDelegate - -@end diff --git a/provider/ios/Runner/AppDelegate.m b/provider/ios/Runner/AppDelegate.m deleted file mode 100644 index 59a72e90..00000000 --- a/provider/ios/Runner/AppDelegate.m +++ /dev/null @@ -1,13 +0,0 @@ -#include "AppDelegate.h" -#include "GeneratedPluginRegistrant.h" - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application - didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - [GeneratedPluginRegistrant registerWithRegistry:self]; - // Override point for customization after application launch. - return [super application:application didFinishLaunchingWithOptions:launchOptions]; -} - -@end diff --git a/provider/ios/Runner/AppDelegate.swift b/provider/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000..70693e4a --- /dev/null +++ b/provider/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png index 3d43d11e66f4de3da27ed045ca4fe38ad8b48094..dc9ada4725e9b0ddb1deab583e5b5102493aa332 100644 GIT binary patch literal 10932 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 P-1+_A+?hGkL;m(J7kc&K diff --git a/provider/ios/Runner/Info.plist b/provider/ios/Runner/Info.plist index aa8d45a6..63ac6e91 100644 --- a/provider/ios/Runner/Info.plist +++ b/provider/ios/Runner/Info.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - en + $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -11,7 +11,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - provider_sample + provider CFBundlePackageType APPL CFBundleShortVersionString diff --git a/provider/ios/Runner/Runner-Bridging-Header.h b/provider/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000..7335fdf9 --- /dev/null +++ b/provider/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" \ No newline at end of file diff --git a/provider/ios/Runner/main.m b/provider/ios/Runner/main.m deleted file mode 100644 index dff6597e..00000000 --- a/provider/ios/Runner/main.m +++ /dev/null @@ -1,9 +0,0 @@ -#import -#import -#import "AppDelegate.h" - -int main(int argc, char* argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/provider/lib/add_todo_screen.dart b/provider/lib/add_todo_screen.dart new file mode 100644 index 00000000..0d5737b4 --- /dev/null +++ b/provider/lib/add_todo_screen.dart @@ -0,0 +1,84 @@ +import 'package:flutter/material.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +import 'models.dart'; + +class AddTodoScreen extends StatefulWidget { + final void Function(Todo) onAdd; + + const AddTodoScreen({@required this.onAdd}) + : super(key: ArchSampleKeys.addTodoScreen); + + @override + _AddTodoScreenState createState() => _AddTodoScreenState(); +} + +class _AddTodoScreenState extends State { + final _formKey = GlobalKey(); + final _titleEditingController = TextEditingController(); + final _notesEditingController = TextEditingController(); + + @override + void dispose() { + _titleEditingController.dispose(); + _notesEditingController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final localizations = ArchSampleLocalizations.of(context); + final textTheme = Theme.of(context).textTheme; + + return Scaffold( + appBar: AppBar( + title: Text(localizations.addTodo), + ), + body: Form( + key: _formKey, + autovalidate: false, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + TextFormField( + key: ArchSampleKeys.taskField, + controller: _titleEditingController, + decoration: InputDecoration( + hintText: localizations.newTodoHint, + ), + style: textTheme.headline, + autofocus: true, + validator: (val) { + return val.trim().isEmpty + ? localizations.emptyTodoError + : null; + }, + ), + TextFormField( + key: ArchSampleKeys.noteField, + controller: _notesEditingController, + style: textTheme.subhead, + decoration: InputDecoration(hintText: localizations.notesHint), + maxLines: 10, + ) + ], + ), + ), + ), + floatingActionButton: FloatingActionButton( + key: ArchSampleKeys.saveNewTodo, + tooltip: localizations.addTodo, + onPressed: () { + if (_formKey.currentState.validate()) { + widget.onAdd(Todo( + _titleEditingController.text, + note: _notesEditingController.text, + )); + } + }, + child: const Icon(Icons.add), + ), + ); + } +} diff --git a/provider/lib/app.dart b/provider/lib/app.dart index 606d3084..225a1eaa 100644 --- a/provider/lib/app.dart +++ b/provider/lib/app.dart @@ -5,13 +5,14 @@ import 'package:flutter/material.dart'; import 'package:meta/meta.dart'; import 'package:provider/provider.dart'; +import 'package:provider_sample/add_todo_screen.dart'; import 'package:provider_sample/localization.dart'; -import 'package:provider_sample/screens/add_edit_screen.dart'; -import 'package:provider_sample/screens/home_screen.dart'; import 'package:provider_sample/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; +import 'home/home_screen.dart'; + class ProviderApp extends StatelessWidget { final TodosRepository repository; @@ -21,24 +22,28 @@ class ProviderApp extends StatelessWidget { @override Widget build(BuildContext context) { - var app = MaterialApp( - title: ProviderLocalizations().appTitle, - theme: ArchSampleTheme.theme, - localizationsDelegates: [ - ArchSampleLocalizationsDelegate(), - ProviderLocalizationsDelegate(), - ], - routes: { - ArchSampleRoutes.home: (context) => HomeScreen(), - ArchSampleRoutes.addTodo: (context) => AddEditScreen(), - }, - ); - return ChangeNotifierProvider( - builder: (context) => TodoListModel( - repository: repository, - ), - child: app, + create: (_) => TodoListModel(repository: repository), + child: MaterialApp( + title: ProviderLocalizations().appTitle, + theme: ArchSampleTheme.theme, + localizationsDelegates: [ + ArchSampleLocalizationsDelegate(), + ProviderLocalizationsDelegate(), + ], + routes: { + ArchSampleRoutes.home: (context) => HomeScreen(), + ArchSampleRoutes.addTodo: (context) { + return AddTodoScreen( + onAdd: (todo) { + Provider.of(context, listen: false) + .addTodo(todo); + Navigator.pop(context); + }, + ); + }, + }, + ), ); } } diff --git a/provider/lib/details_screen.dart b/provider/lib/details_screen.dart new file mode 100644 index 00000000..3ae9959d --- /dev/null +++ b/provider/lib/details_screen.dart @@ -0,0 +1,101 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:provider_sample/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +import 'edit_todo_screen.dart'; +import 'models.dart'; + +class DetailsScreen extends StatelessWidget { + final String id; + final void Function() onRemove; + + const DetailsScreen({@required this.id, @required this.onRemove}) + : super(key: ArchSampleKeys.todoDetailsScreen); + + @override + Widget build(BuildContext context) { + final model = Provider.of(context, listen: true); + final todo = model.todoById(id) ?? Todo(''); + + return Scaffold( + appBar: AppBar( + title: Text(ArchSampleLocalizations.of(context).todoDetails), + actions: [ + IconButton( + key: ArchSampleKeys.deleteTodoButton, + tooltip: ArchSampleLocalizations.of(context).deleteTodo, + icon: const Icon(Icons.delete), + onPressed: onRemove, + ) + ], + ), + floatingActionButton: FloatingActionButton( + key: ArchSampleKeys.editTodoFab, + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => EditTodoScreen( + id: id, + onEdit: (task, note) { + Provider.of(context, listen: false).updateTodo( + todo.copy(task: task, note: note), + ); + + return Navigator.pop(context); + }, + ), + ), + ); + }, + child: const Icon(Icons.edit), + ), + body: Padding( + padding: const EdgeInsets.all(16.0), + child: ListView( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(right: 8.0), + child: Checkbox( + key: ArchSampleKeys.detailsTodoItemCheckbox, + value: todo.complete, + onChanged: (complete) { + model.updateTodo(todo.copy(complete: !todo.complete)); + }, + ), + ), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only( + top: 8.0, + bottom: 16.0, + ), + child: Text( + todo.task, + key: ArchSampleKeys.detailsTodoItemTask, + style: Theme.of(context).textTheme.headline, + ), + ), + Text( + todo.note, + key: ArchSampleKeys.detailsTodoItemNote, + style: Theme.of(context).textTheme.subhead, + ) + ], + ), + ), + ], + ), + ], + ), + ), + ); + } +} diff --git a/provider/lib/edit_todo_screen.dart b/provider/lib/edit_todo_screen.dart new file mode 100644 index 00000000..8213f1de --- /dev/null +++ b/provider/lib/edit_todo_screen.dart @@ -0,0 +1,88 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:provider_sample/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class EditTodoScreen extends StatefulWidget { + final void Function(String task, String note) onEdit; + final String id; + + const EditTodoScreen({ + @required this.id, + @required this.onEdit, + }) : super(key: ArchSampleKeys.editTodoScreen); + + @override + _EditTodoScreenState createState() => _EditTodoScreenState(); +} + +class _EditTodoScreenState extends State { + final _formKey = GlobalKey(); + TextEditingController _taskController; + TextEditingController _noteController; + + @override + void initState() { + final todo = + Provider.of(context, listen: false).todoById(widget.id); + _taskController = TextEditingController(text: todo?.task); + _noteController = TextEditingController(text: todo?.note); + super.initState(); + } + + @override + void dispose() { + _taskController.dispose(); + _noteController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text(ArchSampleLocalizations.of(context).editTodo)), + body: Form( + key: _formKey, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + TextFormField( + controller: _taskController, + key: ArchSampleKeys.taskField, + style: Theme.of(context).textTheme.headline, + decoration: InputDecoration( + hintText: ArchSampleLocalizations.of(context).newTodoHint, + ), + validator: (val) { + return val.trim().isEmpty + ? ArchSampleLocalizations.of(context).emptyTodoError + : null; + }, + ), + TextFormField( + controller: _noteController, + key: ArchSampleKeys.noteField, + decoration: InputDecoration( + hintText: ArchSampleLocalizations.of(context).notesHint, + ), + maxLines: 10, + ) + ], + ), + ), + ), + floatingActionButton: FloatingActionButton( + key: ArchSampleKeys.saveTodoFab, + tooltip: ArchSampleLocalizations.of(context).saveChanges, + onPressed: () { + if (_formKey.currentState.validate()) { + _formKey.currentState.save(); + widget.onEdit(_taskController.text, _noteController.text); + } + }, + child: const Icon(Icons.check), + ), + ); + } +} diff --git a/provider/lib/home/extra_actions_button.dart b/provider/lib/home/extra_actions_button.dart new file mode 100644 index 00000000..e4b70043 --- /dev/null +++ b/provider/lib/home/extra_actions_button.dart @@ -0,0 +1,49 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +import '../todo_list_model.dart'; + +class ExtraActionsButton extends StatelessWidget { + const ExtraActionsButton({ + Key key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + final store = Provider.of(context); + + return PopupMenuButton( + key: ArchSampleKeys.extraActionsButton, + onSelected: (action) { + if (action == ExtraAction.toggleAllComplete) { + store.toggleAll(); + } else if (action == ExtraAction.clearCompleted) { + store.clearCompleted(); + } + }, + itemBuilder: (BuildContext context) { + return >[ + PopupMenuItem( + key: ArchSampleKeys.toggleAll, + value: ExtraAction.toggleAllComplete, + child: Text(store.hasActiveTodos + ? ArchSampleLocalizations.of(context).markAllComplete + : ArchSampleLocalizations.of(context).markAllIncomplete), + ), + PopupMenuItem( + key: ArchSampleKeys.clearCompleted, + value: ExtraAction.clearCompleted, + child: Text(ArchSampleLocalizations.of(context).clearCompleted), + ), + ]; + }, + ); + } +} + +enum ExtraAction { toggleAllComplete, clearCompleted } diff --git a/provider/lib/widgets/filter_button.dart b/provider/lib/home/filter_button.dart similarity index 60% rename from provider/lib/widgets/filter_button.dart rename to provider/lib/home/filter_button.dart index 31dd6e43..61b45606 100644 --- a/provider/lib/widgets/filter_button.dart +++ b/provider/lib/home/filter_button.dart @@ -3,38 +3,40 @@ // in the LICENSE file. import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; import 'package:provider/provider.dart'; import 'package:provider_sample/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; class FilterButton extends StatelessWidget { final bool isActive; - FilterButton({this.isActive, Key key}) : super(key: key); + const FilterButton({this.isActive, Key key}) : super(key: key); @override Widget build(BuildContext context) { - return AnimatedOpacity( - opacity: isActive ? 1.0 : 0.0, - duration: Duration(milliseconds: 150), - child: Consumer( - builder: (BuildContext context, TodoListModel model, Widget child) { - return PopupMenuButton( - key: ArchSampleKeys.filterButton, - tooltip: ArchSampleLocalizations.of(context).filterTodos, - onSelected: (filter) { - model.activeFilter = filter; - }, - itemBuilder: (BuildContext context) => _items(context, model), - icon: Icon(Icons.filter_list), - ); - }, + return IgnorePointer( + ignoring: !isActive, + child: AnimatedOpacity( + opacity: isActive ? 1.0 : 0.0, + duration: const Duration(milliseconds: 150), + child: Consumer( + builder: (context, model, _) { + return PopupMenuButton( + key: ArchSampleKeys.filterButton, + tooltip: ArchSampleLocalizations.of(context).filterTodos, + initialValue: model.filter, + onSelected: (filter) => model.filter = filter, + itemBuilder: (BuildContext context) => _items(context, model), + icon: const Icon(Icons.filter_list), + ); + }, + ), ), ); } List> _items( - BuildContext context, TodoListModel model) { + BuildContext context, TodoListModel store) { final activeStyle = Theme.of(context) .textTheme .body1 @@ -47,9 +49,8 @@ class FilterButton extends StatelessWidget { value: VisibilityFilter.all, child: Text( ArchSampleLocalizations.of(context).showAll, - style: model.activeFilter == VisibilityFilter.all - ? activeStyle - : defaultStyle, + style: + store.filter == VisibilityFilter.all ? activeStyle : defaultStyle, ), ), PopupMenuItem( @@ -57,7 +58,7 @@ class FilterButton extends StatelessWidget { value: VisibilityFilter.active, child: Text( ArchSampleLocalizations.of(context).showActive, - style: model.activeFilter == VisibilityFilter.active + style: store.filter == VisibilityFilter.active ? activeStyle : defaultStyle, ), @@ -67,7 +68,7 @@ class FilterButton extends StatelessWidget { value: VisibilityFilter.completed, child: Text( ArchSampleLocalizations.of(context).showCompleted, - style: model.activeFilter == VisibilityFilter.completed + style: store.filter == VisibilityFilter.completed ? activeStyle : defaultStyle, ), diff --git a/provider/lib/home/home_screen.dart b/provider/lib/home/home_screen.dart new file mode 100644 index 00000000..0a253b68 --- /dev/null +++ b/provider/lib/home/home_screen.dart @@ -0,0 +1,137 @@ +import 'package:flutter/material.dart' hide Action; +import 'package:provider/provider.dart'; +import 'package:provider_sample/home/stats_view.dart'; +import 'package:provider_sample/home/todo_list_view.dart'; +import 'package:provider_sample/localization.dart'; +import 'package:provider_sample/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +import '../models.dart'; +import 'extra_actions_button.dart'; +import 'filter_button.dart'; + +class HomeScreen extends StatefulWidget { + const HomeScreen(); + + @override + _HomeScreenState createState() => _HomeScreenState(); +} + +class _HomeScreenState extends State { + // Because the state of the tabs is only a concern to the HomeScreen Widget, + // it is stored as local state rather than in the TodoListModel. + final _tab = ValueNotifier(_HomeScreenTab.todos); + + @override + void dispose() { + _tab.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(ProviderLocalizations.of(context).appTitle), + actions: [ + AnimatedBuilder( + animation: _tab, + builder: (_, __) => FilterButton( + isActive: _tab.value == _HomeScreenTab.todos, + ), + ), + const ExtraActionsButton(), + ], + ), + floatingActionButton: FloatingActionButton( + key: ArchSampleKeys.addTodoFab, + onPressed: () => Navigator.pushNamed(context, ArchSampleRoutes.addTodo), + tooltip: ArchSampleLocalizations.of(context).addTodo, + child: const Icon(Icons.add), + ), + body: Selector( + selector: (context, model) => model.isLoading, + builder: (context, isLoading, _) { + if (isLoading) { + return Center( + child: CircularProgressIndicator( + key: ArchSampleKeys.todosLoading, + ), + ); + } + + return AnimatedBuilder( + animation: _tab, + builder: (context, _) { + switch (_tab.value) { + case _HomeScreenTab.stats: + return const StatsView(); + case _HomeScreenTab.todos: + default: + return TodoListView( + onRemove: (context, todo) { + Provider.of(context, listen: false) + .removeTodo(todo); + _showUndoSnackbar(context, todo); + }, + ); + } + }, + ); + }, + ), + bottomNavigationBar: BottomNavigationBar( + key: ArchSampleKeys.tabs, + currentIndex: _HomeScreenTab.values.indexOf(_tab.value), + onTap: (int index) { + _tab.value = _HomeScreenTab.values[index]; + }, + items: [ + for (final tab in _HomeScreenTab.values) + BottomNavigationBarItem( + icon: Icon(tab.icon, key: tab.key), + title: Text(tab.title), + ) + ], + ), + ); + } + + void _showUndoSnackbar(BuildContext context, Todo todo) { + Scaffold.of(context).showSnackBar( + SnackBar( + key: ArchSampleKeys.snackbar, + duration: const Duration(seconds: 2), + content: Text( + ArchSampleLocalizations.of(context).todoDeleted(todo.task), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + action: SnackBarAction( + key: ArchSampleKeys.snackbarAction(todo.id), + label: ArchSampleLocalizations.of(context).undo, + onPressed: () => + Provider.of(context, listen: false).addTodo(todo), + ), + ), + ); + } +} + +enum _HomeScreenTab { todos, stats } + +extension TabExtensions on _HomeScreenTab { + IconData get icon { + return (this == _HomeScreenTab.todos) ? Icons.list : Icons.show_chart; + } + + String get title { + return this == _HomeScreenTab.todos ? 'Todos' : 'Stats'; + } + + Key get key { + return this == _HomeScreenTab.stats + ? ArchSampleKeys.statsTab + : ArchSampleKeys.todoTab; + } +} diff --git a/provider/lib/home/stats_view.dart b/provider/lib/home/stats_view.dart new file mode 100644 index 00000000..d11bbd16 --- /dev/null +++ b/provider/lib/home/stats_view.dart @@ -0,0 +1,56 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:provider_sample/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class StatsView extends StatelessWidget { + const StatsView(); + + @override + Widget build(BuildContext context) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: Text( + ArchSampleLocalizations.of(context).completedTodos, + style: Theme.of(context).textTheme.title, + ), + ), + Padding( + padding: const EdgeInsets.only(bottom: 24.0), + child: Selector( + selector: (_, model) => model.numCompleted, + builder: (context, numCompleted, _) => Text( + '$numCompleted', + key: ArchSampleKeys.statsNumCompleted, + style: Theme.of(context).textTheme.subhead, + ), + ), + ), + Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: Text( + ArchSampleLocalizations.of(context).activeTodos, + style: Theme.of(context).textTheme.title, + ), + ), + Padding( + padding: const EdgeInsets.only(bottom: 24.0), + child: Selector( + selector: (_, model) => model.numActive, + builder: (context, numActive, _) => Text( + '$numActive', + key: ArchSampleKeys.statsNumActive, + style: Theme.of(context).textTheme.subhead, + ), + ), + ) + ], + ), + ); + } +} diff --git a/provider/lib/home/todo_list_view.dart b/provider/lib/home/todo_list_view.dart new file mode 100644 index 00000000..906f80c1 --- /dev/null +++ b/provider/lib/home/todo_list_view.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:provider_sample/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +import '../details_screen.dart'; +import '../models.dart'; + +class TodoListView extends StatelessWidget { + final void Function(BuildContext context, Todo todo) onRemove; + + TodoListView({Key key, @required this.onRemove}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Selector>( + selector: (_, model) => model.filteredTodos, + builder: (context, todos, _) { + return ListView.builder( + key: ArchSampleKeys.todoList, + itemCount: todos.length, + itemBuilder: (context, index) { + final todo = todos[index]; + + return Dismissible( + key: ArchSampleKeys.todoItem(todo.id), + onDismissed: (_) => onRemove(context, todo), + child: ListTile( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (_) { + return DetailsScreen( + id: todo?.id, + onRemove: () { + Navigator.pop(context); + onRemove(context, todo); + }, + ); + }, + ), + ); + }, + leading: Checkbox( + key: ArchSampleKeys.todoItemCheckbox(todo.id), + value: todo.complete, + onChanged: (complete) { + Provider.of(context, listen: false) + .updateTodo( + todo.copy(complete: complete), + ); + }, + ), + title: Text( + todo.task, + key: ArchSampleKeys.todoItemTask(todo.id), + style: Theme.of(context).textTheme.title, + ), + subtitle: Text( + todo.note, + key: ArchSampleKeys.todoItemNote(todo.id), + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: Theme.of(context).textTheme.subhead, + ), + ), + ); + }, + ); + }, + ); + } +} diff --git a/provider/lib/localization.dart b/provider/lib/localization.dart index a8615dce..9ca0b67d 100644 --- a/provider/lib/localization.dart +++ b/provider/lib/localization.dart @@ -12,7 +12,7 @@ class ProviderLocalizations { context, ProviderLocalizations); } - String get appTitle => "provider example"; + String get appTitle => 'Provider Example'; } class ProviderLocalizationsDelegate @@ -26,5 +26,5 @@ class ProviderLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/provider/lib/main.dart b/provider/lib/main.dart index 7bdc483a..5b777272 100644 --- a/provider/lib/main.dart +++ b/provider/lib/main.dart @@ -8,8 +8,8 @@ import 'package:provider_sample/app.dart'; import 'package:todos_repository_simple/todos_repository_simple.dart'; void main() { - const todoRepo = const TodosRepositoryFlutter( - fileStorage: const FileStorage( + const todoRepo = TodosRepositoryFlutter( + fileStorage: FileStorage( 'provider_todos', getApplicationDocumentsDirectory, ), diff --git a/provider/lib/models.dart b/provider/lib/models.dart index dd0519d5..699321cb 100644 --- a/provider/lib/models.dart +++ b/provider/lib/models.dart @@ -16,7 +16,7 @@ class Todo { final String task; Todo(this.task, {this.complete = false, this.note = '', String id}) - : this.id = id ?? Uuid().generateV4(); + : id = id ?? Uuid().generateV4(); @override int get hashCode => diff --git a/provider/lib/screens/add_edit_screen.dart b/provider/lib/screens/add_edit_screen.dart deleted file mode 100644 index 7aa1590e..00000000 --- a/provider/lib/screens/add_edit_screen.dart +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'dart:async'; - -import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; -import 'package:provider/provider.dart'; -import 'package:provider_sample/models.dart'; -import 'package:provider_sample/todo_list_model.dart'; - -class AddEditScreen extends StatefulWidget { - final String todoId; - - AddEditScreen({ - Key key, - this.todoId, - }) : super(key: key ?? ArchSampleKeys.addTodoScreen); - @override - _AddEditScreenState createState() => _AddEditScreenState(); -} - -class _AddEditScreenState extends State { - static final GlobalKey _formKey = GlobalKey(); - - String _task; - String _note; - - bool get isEditing => widget.todoId != null; - - @override - Widget build(BuildContext context) { - final localizations = ArchSampleLocalizations.of(context); - final textTheme = Theme.of(context).textTheme; - - return Scaffold( - appBar: AppBar( - title: Text( - isEditing ? localizations.editTodo : localizations.addTodo, - ), - ), - body: Padding( - padding: EdgeInsets.all(16.0), - child: Form( - key: _formKey, - autovalidate: false, - onWillPop: () { - return Future(() => true); - }, - child: Consumer( - builder: (BuildContext context, TodoListModel model, Widget child) { - var task = model.todoById(widget.todoId); - return ListView( - children: [ - TextFormField( - initialValue: task?.task ?? '', - key: ArchSampleKeys.taskField, - autofocus: !isEditing, - style: textTheme.headline, - decoration: InputDecoration( - hintText: localizations.newTodoHint, - ), - validator: (val) { - return val.trim().isEmpty - ? localizations.emptyTodoError - : null; - }, - onSaved: (value) => _task = value, - ), - TextFormField( - initialValue: task?.note ?? '', - key: ArchSampleKeys.noteField, - maxLines: 10, - style: textTheme.subhead, - decoration: InputDecoration( - hintText: localizations.notesHint, - ), - onSaved: (value) => _note = value, - ) - ], - ); - }, - ), - ), - ), - floatingActionButton: FloatingActionButton( - key: - isEditing ? ArchSampleKeys.saveTodoFab : ArchSampleKeys.saveNewTodo, - tooltip: isEditing ? localizations.saveChanges : localizations.addTodo, - child: Icon(isEditing ? Icons.check : Icons.add), - onPressed: () { - final form = _formKey.currentState; - if (form.validate()) { - form.save(); - - var model = Provider.of(context); - if (isEditing) { - var todo = model.todoById(widget.todoId); - model.updateTodo(todo.copy(task: _task, note: _note)); - } else { - model.addTodo(Todo(_task, note: _note)); - } - - Navigator.pop(context); - } - }, - ), - ); - } -} diff --git a/provider/lib/screens/detail_screen.dart b/provider/lib/screens/detail_screen.dart deleted file mode 100644 index eee1e814..00000000 --- a/provider/lib/screens/detail_screen.dart +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; -import 'package:provider/provider.dart'; -import 'package:provider_sample/models.dart'; -import 'package:provider_sample/screens/add_edit_screen.dart'; -import 'package:provider_sample/todo_list_model.dart'; - -class DetailScreen extends StatelessWidget { - final String todoId; - - DetailScreen({ - @required this.todoId, - }) : super(key: ArchSampleKeys.todoDetailsScreen); - - @override - Widget build(BuildContext context) { - return Consumer( - builder: (context, model, child) { - // fallback to empty item. When deleting it, it is null before the screen is gone - var todo = model.todoById(todoId) ?? Todo(''); - return Scaffold( - appBar: AppBar( - title: Text(ArchSampleLocalizations.of(context).todoDetails), - actions: [ - IconButton( - key: ArchSampleKeys.deleteTodoButton, - tooltip: ArchSampleLocalizations.of(context).deleteTodo, - icon: Icon(Icons.delete), - onPressed: () { - model.removeTodo(todo); - Navigator.pop(context, todo); - }, - ) - ], - ), - body: Padding( - padding: EdgeInsets.all(16.0), - child: ListView( - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only(right: 8.0), - child: Checkbox( - value: todo.complete, - key: ArchSampleKeys.detailsTodoItemCheckbox, - onChanged: (complete) { - model.updateTodo(todo.copy(complete: !todo.complete)); - }, - ), - ), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only( - top: 8.0, - bottom: 16.0, - ), - child: Text( - todo.task, - key: ArchSampleKeys.detailsTodoItemTask, - style: Theme.of(context).textTheme.headline, - ), - ), - Text( - todo.note, - key: ArchSampleKeys.detailsTodoItemNote, - style: Theme.of(context).textTheme.subhead, - ) - ], - ), - ), - ], - ), - ], - ), - ), - floatingActionButton: FloatingActionButton( - tooltip: ArchSampleLocalizations.of(context).editTodo, - child: Icon(Icons.edit), - key: ArchSampleKeys.editTodoFab, - onPressed: () { - Navigator.of(context).push( - MaterialPageRoute( - builder: (context) { - return AddEditScreen( - todoId: todoId, - key: ArchSampleKeys.editTodoScreen, - ); - }, - ), - ); - }, - ), - ); - }, - ); - } -} diff --git a/provider/lib/screens/home_screen.dart b/provider/lib/screens/home_screen.dart deleted file mode 100644 index 0f6a9738..00000000 --- a/provider/lib/screens/home_screen.dart +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; -import 'package:provider_sample/localization.dart'; -import 'package:provider_sample/models.dart'; -import 'package:provider_sample/widgets/extra_actions_button.dart'; -import 'package:provider_sample/widgets/filter_button.dart'; -import 'package:provider_sample/widgets/stats_counter.dart'; -import 'package:provider_sample/widgets/todo_list.dart'; - -class HomeScreen extends StatefulWidget { - HomeScreen() : super(key: ArchSampleKeys.homeScreen); - - @override - State createState() { - return HomeScreenState(); - } -} - -class HomeScreenState extends State { - AppTab _activeTab = AppTab.todos; - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text(ProviderLocalizations.of(context).appTitle), - actions: [ - FilterButton(isActive: _activeTab == AppTab.todos), - ExtraActionsButton() - ], - ), - body: _activeTab == AppTab.todos ? TodoList() : StatsCounter(), - floatingActionButton: FloatingActionButton( - key: ArchSampleKeys.addTodoFab, - onPressed: () { - Navigator.pushNamed(context, ArchSampleRoutes.addTodo); - }, - child: Icon(Icons.add), - tooltip: ArchSampleLocalizations.of(context).addTodo, - ), - bottomNavigationBar: BottomNavigationBar( - key: ArchSampleKeys.tabs, - currentIndex: AppTab.values.indexOf(_activeTab), - onTap: (index) { - _updateTab(AppTab.values[index]); - }, - items: AppTab.values.map((tab) { - return BottomNavigationBarItem( - icon: Icon( - tab == AppTab.todos ? Icons.list : Icons.show_chart, - key: tab == AppTab.stats - ? ArchSampleKeys.statsTab - : ArchSampleKeys.todoTab, - ), - title: Text( - tab == AppTab.stats - ? ArchSampleLocalizations.of(context).stats - : ArchSampleLocalizations.of(context).todos, - ), - ); - }).toList(), - ), - ); - } - - _updateTab(AppTab tab) { - setState(() { - _activeTab = tab; - }); - } -} diff --git a/provider/lib/todo_list_model.dart b/provider/lib/todo_list_model.dart index fb5bc2df..ee5f10ee 100644 --- a/provider/lib/todo_list_model.dart +++ b/provider/lib/todo_list_model.dart @@ -15,16 +15,16 @@ enum VisibilityFilter { all, active, completed } class TodoListModel extends ChangeNotifier { final TodosRepository repository; - VisibilityFilter _activeFilter; + VisibilityFilter _filter; - VisibilityFilter get activeFilter => _activeFilter; + VisibilityFilter get filter => _filter; - set activeFilter(VisibilityFilter filter) { - _activeFilter = filter; + set filter(VisibilityFilter filter) { + _filter = filter; notifyListeners(); } - List _todos = []; + List _todos; UnmodifiableListView get todos => UnmodifiableListView(_todos); @@ -32,12 +32,12 @@ class TodoListModel extends ChangeNotifier { bool get isLoading => _isLoading; - TodoListModel({@required this.repository, VisibilityFilter activeFilter}) - : this._activeFilter = activeFilter ?? VisibilityFilter.all; - - /// Wraps [ScopedModel.of] for this [Model]. See [ScopedModel.of] for more - // static TodoListModel of(BuildContext context) => - // ScopedModel.of(context); + TodoListModel({ + @required this.repository, + VisibilityFilter filter, + List todos, + }) : _todos = todos ?? [], + _filter = filter ?? VisibilityFilter.all; @override void addListener(VoidCallback listener) { @@ -54,29 +54,33 @@ class TodoListModel extends ChangeNotifier { notifyListeners(); return repository.loadTodos().then((loadedTodos) { - _todos = loadedTodos.map(Todo.fromEntity).toList(); + _todos.addAll(loadedTodos.map(Todo.fromEntity)); _isLoading = false; notifyListeners(); }).catchError((err) { _isLoading = false; - _todos = []; notifyListeners(); }); } - List get filteredTodos => _todos.where((todo) { - if (activeFilter == VisibilityFilter.all) { - return true; - } else if (activeFilter == VisibilityFilter.active) { + List get filteredTodos { + return _todos.where((todo) { + switch (filter) { + case VisibilityFilter.active: return !todo.complete; - } else if (activeFilter == VisibilityFilter.completed) { + case VisibilityFilter.completed: return todo.complete; - } - }).toList(); + case VisibilityFilter.all: + default: + return true; + } + }).toList(); + } void clearCompleted() { _todos.removeWhere((todo) => todo.complete); notifyListeners(); + _uploadItems(); } void toggleAll() { @@ -116,4 +120,14 @@ class TodoListModel extends ChangeNotifier { Todo todoById(String id) { return _todos.firstWhere((it) => it.id == id, orElse: () => null); } + + int get numCompleted => + todos.where((Todo todo) => todo.complete).toList().length; + + bool get hasCompleted => numCompleted > 0; + + int get numActive => + todos.where((Todo todo) => !todo.complete).toList().length; + + bool get hasActiveTodos => numActive > 0; } diff --git a/provider/lib/widgets/extra_actions_button.dart b/provider/lib/widgets/extra_actions_button.dart deleted file mode 100644 index 6b734073..00000000 --- a/provider/lib/widgets/extra_actions_button.dart +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; -import 'package:provider/provider.dart'; -import 'package:provider_sample/models.dart'; -import 'package:provider_sample/todo_list_model.dart'; - -class ExtraActionsButton extends StatelessWidget { - ExtraActionsButton({ - Key key, - }) : super(key: key); - - @override - Widget build(BuildContext context) { - return Consumer( - builder: (BuildContext context, TodoListModel model, Widget child) { - return PopupMenuButton( - key: ArchSampleKeys.extraActionsButton, - onSelected: (action) { - if (action == ExtraAction.toggleAllComplete) { - model.toggleAll(); - } else if (action == ExtraAction.clearCompleted) { - model.clearCompleted(); - } - }, - itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - key: ArchSampleKeys.toggleAll, - value: ExtraAction.toggleAllComplete, - child: Text(model.todos.any((it) => it.complete) - ? ArchSampleLocalizations.of(context).markAllIncomplete - : ArchSampleLocalizations.of(context).markAllComplete), - ), - PopupMenuItem( - key: ArchSampleKeys.clearCompleted, - value: ExtraAction.clearCompleted, - child: Text(ArchSampleLocalizations.of(context).clearCompleted), - ), - ], - ); - }); - } -} diff --git a/provider/lib/widgets/stats_counter.dart b/provider/lib/widgets/stats_counter.dart deleted file mode 100644 index 63312547..00000000 --- a/provider/lib/widgets/stats_counter.dart +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; -import 'package:provider/provider.dart'; -import 'package:provider_sample/models.dart'; -import 'package:provider_sample/todo_list_model.dart'; - -class StatsCounter extends StatelessWidget { - StatsCounter() : super(key: ArchSampleKeys.statsCounter); - - bool isActive(Todo todo) => !todo.complete; - - bool isCompleted(Todo todo) => todo.complete; - - @override - Widget build(BuildContext context) { - return Center( - child: Consumer(builder: (context, model, child) { - var numCompleted = model.todos.where(isCompleted).toList().length; - var numActive = model.todos.where(isActive).toList().length; - - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: EdgeInsets.only(bottom: 8.0), - child: Text( - ArchSampleLocalizations.of(context).completedTodos, - style: Theme.of(context).textTheme.title, - ), - ), - Padding( - padding: EdgeInsets.only(bottom: 24.0), - child: Text( - '$numCompleted', - key: ArchSampleKeys.statsNumCompleted, - style: Theme.of(context).textTheme.subhead, - ), - ), - Padding( - padding: EdgeInsets.only(bottom: 8.0), - child: Text( - ArchSampleLocalizations.of(context).activeTodos, - style: Theme.of(context).textTheme.title, - ), - ), - Padding( - padding: EdgeInsets.only(bottom: 24.0), - child: Text( - "$numActive", - key: ArchSampleKeys.statsNumActive, - style: Theme.of(context).textTheme.subhead, - ), - ) - ], - ); - }), - ); - } -} diff --git a/provider/lib/widgets/todo_item.dart b/provider/lib/widgets/todo_item.dart deleted file mode 100644 index 2027e755..00000000 --- a/provider/lib/widgets/todo_item.dart +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; -import 'package:provider_sample/models.dart'; - -class TodoItem extends StatelessWidget { - final DismissDirectionCallback onDismissed; - final GestureTapCallback onTap; - final ValueChanged onCheckboxChanged; - final Todo todo; - - TodoItem({ - @required this.onDismissed, - @required this.onTap, - @required this.onCheckboxChanged, - @required this.todo, - }); - - @override - Widget build(BuildContext context) { - return Dismissible( - key: ArchSampleKeys.todoItem(todo.id), - onDismissed: onDismissed, - child: ListTile( - onTap: onTap, - leading: Checkbox( - key: ArchSampleKeys.todoItemCheckbox(todo.id), - value: todo.complete, - onChanged: onCheckboxChanged, - ), - title: Text( - todo.task, - key: ArchSampleKeys.todoItemTask(todo.id), - style: Theme.of(context).textTheme.title, - ), - subtitle: Text( - todo.note, - key: ArchSampleKeys.todoItemNote(todo.id), - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: Theme.of(context).textTheme.subhead, - ), - ), - ); - } -} diff --git a/provider/lib/widgets/todo_list.dart b/provider/lib/widgets/todo_list.dart deleted file mode 100644 index e7eab619..00000000 --- a/provider/lib/widgets/todo_list.dart +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; -import 'package:provider/provider.dart'; -import 'package:provider_sample/models.dart'; -import 'package:provider_sample/screens/detail_screen.dart'; -import 'package:provider_sample/todo_list_model.dart'; -import 'package:provider_sample/widgets/todo_item.dart'; - -class TodoList extends StatelessWidget { - TodoList({Key key}) : super(key: key); - - @override - Widget build(BuildContext context) { - return Consumer( - builder: (context, model, child) { - return Container( - child: model.isLoading ? _buildLoading : _buildList(model), - ); - }, - ); - } - - Center get _buildLoading { - return Center( - child: CircularProgressIndicator( - key: ArchSampleKeys.todosLoading, - ), - ); - } - - ListView _buildList(TodoListModel model) { - final todos = model.filteredTodos; - - return ListView.builder( - key: ArchSampleKeys.todoList, - itemCount: todos.length, - itemBuilder: (BuildContext context, int index) { - final todo = todos[index]; - - return TodoItem( - todo: todo, - onDismissed: (direction) { - _removeTodo(context, todo); - }, - onTap: () { - Navigator.of(context).push( - MaterialPageRoute( - builder: (_) { - return DetailScreen( - todoId: todo.id, - ); - }, - ), - ).then((todo) { - if (todo is Todo) { - _showUndoSnackbar(context, todo); - } - }); - }, - onCheckboxChanged: (complete) { - var toggled = todo.copy(complete: !todo.complete); - model.updateTodo(toggled); - }, - ); - }, - ); - } - - void _removeTodo(BuildContext context, Todo todo) { - Provider.of(context, listen: false).removeTodo(todo); - - _showUndoSnackbar(context, todo); - } - - void _showUndoSnackbar(BuildContext context, Todo todo) { - Scaffold.of(context).showSnackBar( - SnackBar( - key: ArchSampleKeys.snackbar, - duration: Duration(seconds: 2), - backgroundColor: Theme.of(context).backgroundColor, - content: Text( - ArchSampleLocalizations.of(context).todoDeleted(todo.task), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - action: SnackBarAction( - key: ArchSampleKeys.snackbarAction(todo.id), - label: ArchSampleLocalizations.of(context).undo, - onPressed: () { - Provider.of(context, listen: false).addTodo(todo); - }, - ), - ), - ); - } -} diff --git a/provider/lib/widgets/typedefs.dart b/provider/lib/widgets/typedefs.dart deleted file mode 100644 index e518eecc..00000000 --- a/provider/lib/widgets/typedefs.dart +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'package:provider_sample/models.dart'; - -typedef TodoAdder(Todo todo); - -typedef TodoRemover(Todo todo); - -typedef TodoUpdater( - Todo todo, { - bool complete, - String id, - String note, - String task, -}); diff --git a/provider/line_count.md b/provider/line_count.md new file mode 100644 index 00000000..e69de29b diff --git a/provider/pubspec.yaml b/provider/pubspec.yaml index ed3be699..19760fac 100644 --- a/provider/pubspec.yaml +++ b/provider/pubspec.yaml @@ -14,10 +14,10 @@ description: A new Flutter project. version: 1.0.0+1 environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.6.0 <3.0.0" dependencies: - provider: ^2.0.1+1 + provider: ^4.0.1 todos_repository_simple: path: ../todos_repository_simple todos_app_core: @@ -25,13 +25,9 @@ dependencies: flutter: sdk: flutter - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^0.1.2 - dev_dependencies: - mockito: ^3.0.0 - test: ^1.3.0 + mockito: + test: flutter_test: sdk: flutter flutter_driver: diff --git a/provider/test/app_state_test.dart b/provider/test/app_state_test.dart index bf439cb6..6a0aa443 100644 --- a/provider/test/app_state_test.dart +++ b/provider/test/app_state_test.dart @@ -2,61 +2,41 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'dart:async'; - import 'package:provider_sample/models.dart'; import 'package:provider_sample/todo_list_model.dart'; import 'package:test/test.dart'; -import 'package:todos_repository_core/todos_repository_core.dart'; -main() { +import 'mock_repository.dart'; + +void main() { group('TodoListModel', () { test('should check if there are completed todos', () async { final model = TodoListModel( - repository: MockRepository([ - Todo('a'), - Todo('b'), - Todo('c', complete: true), - ])); - await model.loadTodos(); - - expect(model.todos.any((it) => it.complete), true); + repository: MockRepository(), + todos: [Todo('a'), Todo('b'), Todo('c', complete: true)], + ); + + expect(model.numCompleted, 1); + expect(model.hasCompleted, isTrue); }); test('should calculate the number of active todos', () async { final model = TodoListModel( - repository: MockRepository([ - Todo('a'), - Todo('b'), - Todo('c', complete: true), - ])); - await model.loadTodos(); - - expect(model.todos.where((it) => !it.complete).toList().length, 2); - }); + repository: MockRepository(), + todos: [Todo('a'), Todo('b'), Todo('c', complete: true)], + ); - test('should calculate the number of completed todos', () async { - final model = TodoListModel( - repository: MockRepository([ - Todo('a'), - Todo('b'), - Todo('c', complete: true), - ])); - await model.loadTodos(); - - expect(model.todos.where((it) => it.complete).toList().length, 1); + expect(model.hasActiveTodos, isTrue); + expect(model.numActive, 2); }); test('should return all todos if the VisibilityFilter is all', () async { - final todos = [ - Todo('a'), - Todo('b'), - Todo('c', complete: true), - ]; + final todos = [Todo('a'), Todo('b'), Todo('c', complete: true)]; final model = TodoListModel( - repository: MockRepository(todos), - activeFilter: VisibilityFilter.all); - await model.loadTodos(); + filter: VisibilityFilter.all, + repository: MockRepository(), + todos: todos, + ); expect(model.filteredTodos, todos); }); @@ -66,21 +46,13 @@ main() { final todo1 = Todo('a'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); - final todos = [ - todo1, - todo2, - todo3, - ]; final model = TodoListModel( - repository: MockRepository(todos), - activeFilter: VisibilityFilter.active, + filter: VisibilityFilter.active, + repository: MockRepository(), + todos: [todo1, todo2, todo3], ); - await model.loadTodos(); - expect(model.filteredTodos, [ - todo1, - todo2, - ]); + expect(model.filteredTodos, [todo1, todo2]); }); test('should return completed todos if the VisibilityFilter is completed', @@ -88,80 +60,86 @@ main() { final todo1 = Todo('a'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); - final todos = [ - todo1, - todo2, - todo3, - ]; final model = TodoListModel( - repository: MockRepository(todos), - activeFilter: VisibilityFilter.completed, + filter: VisibilityFilter.completed, + repository: MockRepository(), + todos: [todo1, todo2, todo3], ); - await model.loadTodos(); expect(model.filteredTodos, [todo3]); }); test('should clear the completed todos', () async { + final repository = MockRepository(); final todo1 = Todo('a'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); - final todos = [ - todo1, - todo2, - todo3, - ]; final model = TodoListModel( - repository: MockRepository(todos), + repository: repository, + todos: [todo1, todo2, todo3], ); - await model.loadTodos(); model.clearCompleted(); - expect(model.todos, [ - todo1, - todo2, - ]); + expect(model.todos, [todo1, todo2]); + expect(repository.saveCount, 1); }); test('toggle all as complete or incomplete', () async { - final todo1 = Todo('a'); - final todo2 = Todo('b'); - final todo3 = Todo('c', complete: true); - final todos = [ - todo1, - todo2, - todo3, - ]; + final repository = MockRepository(); final model = TodoListModel( - repository: MockRepository(todos), + repository: repository, + todos: [Todo('a'), Todo('b'), Todo('c', complete: true)], ); - await model.loadTodos(); // Toggle all complete model.toggleAll(); expect(model.todos.every((t) => t.complete), isTrue); + expect(repository.saveCount, 1); // Toggle all incomplete model.toggleAll(); expect(model.todos.every((t) => !t.complete), isTrue); + expect(repository.saveCount, 2); }); - }); -} -class MockRepository extends TodosRepository { - List entities; + test('should add a todo', () async { + final repository = MockRepository(); + final todo = Todo('A'); + final model = TodoListModel(repository: repository); - MockRepository(List todos) - : this.entities = todos.map((it) => it.toEntity()).toList(); + model.addTodo(todo); - @override - Future> loadTodos() { - return Future.value(entities); - } + expect(model.todos, [todo]); + expect(repository.saveCount, 1); + }); - @override - Future saveTodos(List todos) { - return Future.sync(() => entities = todos); - } + test('should remove a todo', () async { + final repository = MockRepository(); + final todo = Todo('A'); + final model = TodoListModel(repository: repository, todos: [todo]); + + model.removeTodo(todo); + + expect(model.todos, []); + expect(repository.saveCount, 1); + }); + + test('should update a todo', () async { + final repository = MockRepository(); + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final update = todo2.copy(complete: true); + final model = TodoListModel( + repository: repository, + todos: [todo1, todo2, todo3], + ); + + model.updateTodo(update); + + expect(model.todos, [todo1, update, todo3]); + expect(repository.saveCount, 1); + }); + }); } diff --git a/provider/test/home_screen_test.dart b/provider/test/home_screen_test.dart new file mode 100644 index 00000000..cd003dcc --- /dev/null +++ b/provider/test/home_screen_test.dart @@ -0,0 +1,132 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:provider/provider.dart'; +import 'package:provider_sample/home/home_screen.dart'; +import 'package:provider_sample/localization.dart'; +import 'package:provider_sample/models.dart'; +import 'package:provider_sample/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +import 'mock_repository.dart'; + +/// Demonstrates how to test Widgets +void main() { + group('HomeScreen', () { + final todoListFinder = find.byKey(ArchSampleKeys.todoList); + final todoItem1Finder = find.byKey(ArchSampleKeys.todoItem('1')); + final todoItem2Finder = find.byKey(ArchSampleKeys.todoItem('2')); + final todoItem3Finder = find.byKey(ArchSampleKeys.todoItem('3')); + + testWidgets('should render loading indicator at first', (tester) async { + await tester.pumpWidget(_TestWidget()); + await tester.pump(Duration.zero); + + expect(find.byKey(ArchSampleKeys.todosLoading), findsOneWidget); + }); + + testWidgets('should display a list after loading todos', (tester) async { + final handle = tester.ensureSemantics(); + await tester.pumpWidget(_TestWidget()); + await tester.pumpAndSettle(); + + final checkbox1 = find.descendant( + of: find.byKey(ArchSampleKeys.todoItemCheckbox('1')), + matching: find.byType(Focus), + ); + final checkbox2 = find.descendant( + of: find.byKey(ArchSampleKeys.todoItemCheckbox('2')), + matching: find.byType(Focus), + ); + final checkbox3 = find.descendant( + of: find.byKey(ArchSampleKeys.todoItemCheckbox('3')), + matching: find.byType(Focus), + ); + + expect(todoListFinder, findsOneWidget); + expect(todoItem1Finder, findsOneWidget); + expect(find.text('T1'), findsOneWidget); + expect(find.text('N1'), findsOneWidget); + expect(tester.getSemantics(checkbox1), isChecked(false)); + expect(todoItem2Finder, findsOneWidget); + expect(find.text('T2'), findsOneWidget); + expect(tester.getSemantics(checkbox2), isChecked(false)); + expect(todoItem3Finder, findsOneWidget); + expect(find.text('T3'), findsOneWidget); + expect(tester.getSemantics(checkbox3), isChecked(true)); + + handle.dispose(); + }); + + testWidgets('should remove todos using a dismissible', (tester) async { + await tester.pumpWidget(_TestWidget()); + await tester.pumpAndSettle(); + await tester.drag(todoItem1Finder, Offset(-1000, 0)); + await tester.pumpAndSettle(Duration(seconds: 5)); + + expect(todoItem1Finder, findsNothing); + expect(todoItem2Finder, findsOneWidget); + expect(todoItem3Finder, findsOneWidget); + }); + + testWidgets('should display stats when switching tabs', (tester) async { + await tester.pumpWidget(_TestWidget()); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(ArchSampleKeys.statsTab)); + await tester.pump(); + + expect(find.byKey(ArchSampleKeys.statsNumActive), findsOneWidget); + expect(find.byKey(ArchSampleKeys.statsNumActive), findsOneWidget); + }); + }); +} + +class _TestWidget extends StatelessWidget { + final Widget child; + final TodosRepository repository; + final List todos; + + const _TestWidget({ + Key key, + this.child, + this.repository, + this.todos = const [], + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (_) => TodoListModel( + repository: MockRepository([]), + todos: defaultTodos(), + ), + child: MaterialApp( + localizationsDelegates: [ + ProviderLocalizationsDelegate(), + ArchSampleLocalizationsDelegate(), + ], + home: child ?? const HomeScreen(), + ), + ); + } +} + +List defaultTodos() { + return [ + Todo('T1', id: '1', note: 'N1'), + Todo('T2', id: '2'), + Todo('T3', id: '3', complete: true), + ]; +} + +Matcher isChecked(bool isChecked) { + return matchesSemantics( + isChecked: isChecked, + hasCheckedState: true, + hasEnabledState: true, + isEnabled: true, + isFocusable: true, + hasTapAction: true, + ); +} diff --git a/provider/test/mock_repository.dart b/provider/test/mock_repository.dart new file mode 100644 index 00000000..a57aeb19 --- /dev/null +++ b/provider/test/mock_repository.dart @@ -0,0 +1,21 @@ +// Provides a Mock repository that can be used for testing in place of the real +// thing. +import 'package:provider_sample/models.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +class MockRepository extends TodosRepository { + List entities; + int saveCount = 0; + + MockRepository([List todos = const []]) + : entities = todos.map((it) => it.toEntity()).toList(); + + @override + Future> loadTodos() async => entities; + + @override + Future saveTodos(List todos) async { + saveCount++; + entities = todos; + } +} diff --git a/provider/test_driver/todo_app_test.dart b/provider/test_driver/todo_app_test.dart index 14ddb566..fa00c88c 100644 --- a/provider/test_driver/todo_app_test.dart +++ b/provider/test_driver/todo_app_test.dart @@ -1,9 +1,9 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. +// _copyright 2018 _the _flutter _architecture _sample _authors. _all rights reserved. +// _use of this source code is governed by the _m_i_t license that can be found +// in the _l_i_c_e_n_s_e file. -import 'package:integration_tests/integration_tests.dart' as integrationTests; +import 'package:integration_tests/integration_tests.dart' as integration_tests; -main() { - integrationTests.main(); +void main() { + integration_tests.main(); } diff --git a/scripts/line_counter.dart b/scripts/line_counter.dart index 1480131a..b036b8e6 100644 --- a/scripts/line_counter.dart +++ b/scripts/line_counter.dart @@ -22,6 +22,7 @@ class Output { void main() { final samples = [ + Sample('provider', ['provider']), Sample('bloc', ['bloc_flutter', 'blocs']), Sample('bloc library', ['bloc_library']), Sample('built_redux', ['built_redux']), @@ -55,12 +56,10 @@ Though not the only factor or even most important factor, the amount of code it takes to achieve a working product is an important consideration when comparing frameworks. -While this is an imperfect line count comparison -- some of the samples contain -a bit more functionality than others -- it's a pretty fair comparison overall: -All of the apps implement the spec using the provided `app_core` and -`todos_repository`, implement the same Flutter keys, use the same theme, are -formatted with dartfmt, and all comments / blank lines / generated code are -excluded. +This is an imperfect line count comparison -- some of the samples contain a bit +more functionality / are structured a bit differently than others -- and should +be taken with a grain of salt. All generated files, blank lines and comment +lines are removed for this comparison. For authors of frameworks or samples (hey, I'm one of those!): Please do not take this comparison personally, nor should folks play "Code Golf" with the @@ -75,7 +74,7 @@ Note: This file was generated on ${DateTime.now().toUtc()} using `scripts/line_c } int _countLines(List directories) { - final List dartFiles = _findDartFiles(directories); + final dartFiles = _findDartFiles(directories); return dartFiles.fold(0, (count, file) { final nonCommentsLineCount = From 4068e5bbf782df0422227c0d3d949259012a5a2e Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Fri, 10 Jan 2020 13:13:09 +0100 Subject: [PATCH 15/77] Update provider/lib/details_screen.dart Co-Authored-By: Remi Rousselet --- provider/lib/details_screen.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provider/lib/details_screen.dart b/provider/lib/details_screen.dart index 3ae9959d..af135b6a 100644 --- a/provider/lib/details_screen.dart +++ b/provider/lib/details_screen.dart @@ -15,7 +15,7 @@ class DetailsScreen extends StatelessWidget { @override Widget build(BuildContext context) { - final model = Provider.of(context, listen: true); + final model = Provider.of(context); final todo = model.todoById(id) ?? Todo(''); return Scaffold( From 0bc9d1b289c43afb91665997a1d270f7f17d2205 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Fri, 10 Jan 2020 15:21:31 +0100 Subject: [PATCH 16/77] Update provider/lib/details_screen.dart Co-Authored-By: Remi Rousselet --- provider/lib/details_screen.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provider/lib/details_screen.dart b/provider/lib/details_screen.dart index af135b6a..4bdfb945 100644 --- a/provider/lib/details_screen.dart +++ b/provider/lib/details_screen.dart @@ -8,7 +8,7 @@ import 'models.dart'; class DetailsScreen extends StatelessWidget { final String id; - final void Function() onRemove; + final VoidCallback onRemove; const DetailsScreen({@required this.id, @required this.onRemove}) : super(key: ArchSampleKeys.todoDetailsScreen); From b7945f0e3e72d66c8de61d17ff571444bfaa0045 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Fri, 10 Jan 2020 15:34:47 +0100 Subject: [PATCH 17/77] Update based on feedback --- provider/lib/app.dart | 3 +- provider/lib/details_screen.dart | 109 +++++++++++--------- provider/lib/home/extra_actions_button.dart | 15 +-- provider/lib/home/home_screen.dart | 62 +++++------ 4 files changed, 95 insertions(+), 94 deletions(-) diff --git a/provider/lib/app.dart b/provider/lib/app.dart index 225a1eaa..0bf17ab3 100644 --- a/provider/lib/app.dart +++ b/provider/lib/app.dart @@ -25,12 +25,13 @@ class ProviderApp extends StatelessWidget { return ChangeNotifierProvider( create: (_) => TodoListModel(repository: repository), child: MaterialApp( - title: ProviderLocalizations().appTitle, theme: ArchSampleTheme.theme, localizationsDelegates: [ ArchSampleLocalizationsDelegate(), ProviderLocalizationsDelegate(), ], + onGenerateTitle: (context) => + ProviderLocalizations.of(context).appTitle, routes: { ArchSampleRoutes.home: (context) => HomeScreen(), ArchSampleRoutes.addTodo: (context) { diff --git a/provider/lib/details_screen.dart b/provider/lib/details_screen.dart index 4bdfb945..35333e34 100644 --- a/provider/lib/details_screen.dart +++ b/provider/lib/details_screen.dart @@ -5,6 +5,7 @@ import 'package:todos_app_core/todos_app_core.dart'; import 'edit_todo_screen.dart'; import 'models.dart'; +import 'todo_list_model.dart'; class DetailsScreen extends StatelessWidget { final String id; @@ -15,9 +16,6 @@ class DetailsScreen extends StatelessWidget { @override Widget build(BuildContext context) { - final model = Provider.of(context); - final todo = model.todoById(id) ?? Todo(''); - return Scaffold( appBar: AppBar( title: Text(ArchSampleLocalizations.of(context).todoDetails), @@ -30,6 +28,58 @@ class DetailsScreen extends StatelessWidget { ) ], ), + body: Selector( + selector: (context, model) => model.todoById(id), + shouldRebuild: (prev, next) => next != null, + builder: (context, todo, _) { + return Padding( + padding: const EdgeInsets.all(16.0), + child: ListView( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(right: 8.0), + child: Checkbox( + key: ArchSampleKeys.detailsTodoItemCheckbox, + value: todo.complete, + onChanged: (complete) { + Provider.of(context, listen: false) + .updateTodo(todo.copy(complete: !todo.complete)); + }, + ), + ), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only( + top: 8.0, + bottom: 16.0, + ), + child: Text( + todo.task, + key: ArchSampleKeys.detailsTodoItemTask, + style: Theme.of(context).textTheme.headline, + ), + ), + Text( + todo.note, + key: ArchSampleKeys.detailsTodoItemNote, + style: Theme.of(context).textTheme.subhead, + ) + ], + ), + ), + ], + ), + ], + ), + ); + }, + ), floatingActionButton: FloatingActionButton( key: ArchSampleKeys.editTodoFab, onPressed: () { @@ -39,9 +89,11 @@ class DetailsScreen extends StatelessWidget { builder: (context) => EditTodoScreen( id: id, onEdit: (task, note) { - Provider.of(context, listen: false).updateTodo( - todo.copy(task: task, note: note), - ); + final model = + Provider.of(context, listen: false); + final todo = model.todoById(id); + + model.updateTodo(todo.copy(task: task, note: note)); return Navigator.pop(context); }, @@ -51,51 +103,6 @@ class DetailsScreen extends StatelessWidget { }, child: const Icon(Icons.edit), ), - body: Padding( - padding: const EdgeInsets.all(16.0), - child: ListView( - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.only(right: 8.0), - child: Checkbox( - key: ArchSampleKeys.detailsTodoItemCheckbox, - value: todo.complete, - onChanged: (complete) { - model.updateTodo(todo.copy(complete: !todo.complete)); - }, - ), - ), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.only( - top: 8.0, - bottom: 16.0, - ), - child: Text( - todo.task, - key: ArchSampleKeys.detailsTodoItemTask, - style: Theme.of(context).textTheme.headline, - ), - ), - Text( - todo.note, - key: ArchSampleKeys.detailsTodoItemNote, - style: Theme.of(context).textTheme.subhead, - ) - ], - ), - ), - ], - ), - ], - ), - ), ); } } diff --git a/provider/lib/home/extra_actions_button.dart b/provider/lib/home/extra_actions_button.dart index e4b70043..81ac1b9f 100644 --- a/provider/lib/home/extra_actions_button.dart +++ b/provider/lib/home/extra_actions_button.dart @@ -15,15 +15,18 @@ class ExtraActionsButton extends StatelessWidget { @override Widget build(BuildContext context) { - final store = Provider.of(context); + final model = Provider.of(context); return PopupMenuButton( key: ArchSampleKeys.extraActionsButton, onSelected: (action) { - if (action == ExtraAction.toggleAllComplete) { - store.toggleAll(); - } else if (action == ExtraAction.clearCompleted) { - store.clearCompleted(); + switch (action) { + case ExtraAction.toggleAllComplete: + model.toggleAll(); + break; + case ExtraAction.clearCompleted: + model.clearCompleted(); + break; } }, itemBuilder: (BuildContext context) { @@ -31,7 +34,7 @@ class ExtraActionsButton extends StatelessWidget { PopupMenuItem( key: ArchSampleKeys.toggleAll, value: ExtraAction.toggleAllComplete, - child: Text(store.hasActiveTodos + child: Text(model.hasActiveTodos ? ArchSampleLocalizations.of(context).markAllComplete : ArchSampleLocalizations.of(context).markAllIncomplete), ), diff --git a/provider/lib/home/home_screen.dart b/provider/lib/home/home_screen.dart index 0a253b68..7b2d1366 100644 --- a/provider/lib/home/home_screen.dart +++ b/provider/lib/home/home_screen.dart @@ -34,10 +34,10 @@ class _HomeScreenState extends State { appBar: AppBar( title: Text(ProviderLocalizations.of(context).appTitle), actions: [ - AnimatedBuilder( - animation: _tab, - builder: (_, __) => FilterButton( - isActive: _tab.value == _HomeScreenTab.todos, + ValueListenableBuilder<_HomeScreenTab>( + valueListenable: _tab, + builder: (_, tab, __) => FilterButton( + isActive: tab == _HomeScreenTab.todos, ), ), const ExtraActionsButton(), @@ -60,10 +60,10 @@ class _HomeScreenState extends State { ); } - return AnimatedBuilder( - animation: _tab, - builder: (context, _) { - switch (_tab.value) { + return ValueListenableBuilder<_HomeScreenTab>( + valueListenable: _tab, + builder: (context, tab, _) { + switch (tab) { case _HomeScreenTab.stats: return const StatsView(); case _HomeScreenTab.todos: @@ -80,19 +80,25 @@ class _HomeScreenState extends State { ); }, ), - bottomNavigationBar: BottomNavigationBar( - key: ArchSampleKeys.tabs, - currentIndex: _HomeScreenTab.values.indexOf(_tab.value), - onTap: (int index) { - _tab.value = _HomeScreenTab.values[index]; + bottomNavigationBar: ValueListenableBuilder<_HomeScreenTab>( + valueListenable: _tab, + builder: (context, tab, _) { + return BottomNavigationBar( + key: ArchSampleKeys.tabs, + currentIndex: _HomeScreenTab.values.indexOf(tab), + onTap: (int index) => _tab.value = _HomeScreenTab.values[index], + items: [ + BottomNavigationBarItem( + icon: Icon(Icons.list, key: ArchSampleKeys.todoTab), + title: Text(ArchSampleLocalizations.of(context).todos), + ), + BottomNavigationBarItem( + icon: Icon(Icons.show_chart, key: ArchSampleKeys.statsTab), + title: Text(ArchSampleLocalizations.of(context).stats), + ), + ], + ); }, - items: [ - for (final tab in _HomeScreenTab.values) - BottomNavigationBarItem( - icon: Icon(tab.icon, key: tab.key), - title: Text(tab.title), - ) - ], ), ); } @@ -119,19 +125,3 @@ class _HomeScreenState extends State { } enum _HomeScreenTab { todos, stats } - -extension TabExtensions on _HomeScreenTab { - IconData get icon { - return (this == _HomeScreenTab.todos) ? Icons.list : Icons.show_chart; - } - - String get title { - return this == _HomeScreenTab.todos ? 'Todos' : 'Stats'; - } - - Key get key { - return this == _HomeScreenTab.stats - ? ArchSampleKeys.statsTab - : ArchSampleKeys.todoTab; - } -} From a9e53caff4f34d4b216367ea4ad13fe539dcd227 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Fri, 10 Jan 2020 15:50:25 +0100 Subject: [PATCH 18/77] Fix formatting, remove callbacks where possible. --- mvu/lib/edit/types.dart | 8 +++++-- provider/lib/add_todo_screen.dart | 10 ++++----- provider/lib/app.dart | 10 +-------- provider/lib/home/todo_list_view.dart | 4 +--- scripts/line_counter.dart | 22 +++++++++++++------ .../lib/src/reactive_repository.dart | 2 +- 6 files changed, 29 insertions(+), 27 deletions(-) diff --git a/mvu/lib/edit/types.dart b/mvu/lib/edit/types.dart index 48bde014..ff8ee109 100644 --- a/mvu/lib/edit/types.dart +++ b/mvu/lib/edit/types.dart @@ -1,6 +1,5 @@ import 'package:built_value/built_value.dart'; import 'package:flutter/widgets.dart' as widgets; - import 'package:todos_repository_core/todos_repository_core.dart'; part 'types.g.dart'; @@ -8,11 +7,15 @@ part 'types.g.dart'; abstract class EditTodoModel implements Built { widgets.TextEditingController get task; + widgets.TextEditingController get note; + String get id; EditTodoModel._(); - factory EditTodoModel([void Function(EditTodoModelBuilder b) update]) = _$EditTodoModel; + + factory EditTodoModel([void Function(EditTodoModelBuilder b) update]) = + _$EditTodoModel; } abstract class EditTodoMessage {} @@ -21,5 +24,6 @@ class Save implements EditTodoMessage {} class OnSaved implements EditTodoMessage { final TodoEntity todo; + OnSaved(this.todo); } diff --git a/provider/lib/add_todo_screen.dart b/provider/lib/add_todo_screen.dart index 0d5737b4..d12e1b0f 100644 --- a/provider/lib/add_todo_screen.dart +++ b/provider/lib/add_todo_screen.dart @@ -1,13 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:todos_app_core/todos_app_core.dart'; import 'models.dart'; +import 'todo_list_model.dart'; class AddTodoScreen extends StatefulWidget { - final void Function(Todo) onAdd; - - const AddTodoScreen({@required this.onAdd}) - : super(key: ArchSampleKeys.addTodoScreen); + const AddTodoScreen() : super(key: ArchSampleKeys.addTodoScreen); @override _AddTodoScreenState createState() => _AddTodoScreenState(); @@ -71,10 +70,11 @@ class _AddTodoScreenState extends State { tooltip: localizations.addTodo, onPressed: () { if (_formKey.currentState.validate()) { - widget.onAdd(Todo( + Provider.of(context, listen: false).addTodo(Todo( _titleEditingController.text, note: _notesEditingController.text, )); + Navigator.pop(context); } }, child: const Icon(Icons.add), diff --git a/provider/lib/app.dart b/provider/lib/app.dart index 0bf17ab3..1b4015e8 100644 --- a/provider/lib/app.dart +++ b/provider/lib/app.dart @@ -34,15 +34,7 @@ class ProviderApp extends StatelessWidget { ProviderLocalizations.of(context).appTitle, routes: { ArchSampleRoutes.home: (context) => HomeScreen(), - ArchSampleRoutes.addTodo: (context) { - return AddTodoScreen( - onAdd: (todo) { - Provider.of(context, listen: false) - .addTodo(todo); - Navigator.pop(context); - }, - ); - }, + ArchSampleRoutes.addTodo: (context) => AddTodoScreen(), }, ), ); diff --git a/provider/lib/home/todo_list_view.dart b/provider/lib/home/todo_list_view.dart index 906f80c1..fdad2a99 100644 --- a/provider/lib/home/todo_list_view.dart +++ b/provider/lib/home/todo_list_view.dart @@ -47,9 +47,7 @@ class TodoListView extends StatelessWidget { value: todo.complete, onChanged: (complete) { Provider.of(context, listen: false) - .updateTodo( - todo.copy(complete: complete), - ); + .updateTodo(todo.copy(complete: complete)); }, ), title: Text( diff --git a/scripts/line_counter.dart b/scripts/line_counter.dart index b036b8e6..233b704c 100644 --- a/scripts/line_counter.dart +++ b/scripts/line_counter.dart @@ -43,11 +43,12 @@ void main() { sample.name, _countLines(sample.directories), ); - }).toList(growable: false)..sort((a, b) => a.lineCount - b.lineCount); - - - final strings = outputs.map((output) => '| ${output.name} | ${output.lineCount} |').join('\n'); + }).toList(growable: false) + ..sort((a, b) => a.lineCount - b.lineCount); + final strings = outputs + .map((output) => '| ${output.name} | ${output.lineCount} |') + .join('\n'); print(''' # Line Counts @@ -77,8 +78,10 @@ int _countLines(List directories) { final dartFiles = _findDartFiles(directories); return dartFiles.fold(0, (count, file) { - final nonCommentsLineCount = - file.readAsLinesSync().where((line) => !line.startsWith('//') && line.trim().isNotEmpty).length; + final nonCommentsLineCount = file + .readAsLinesSync() + .where((line) => !line.startsWith('//') && line.trim().isNotEmpty) + .length; return count + nonCommentsLineCount; }); @@ -90,7 +93,12 @@ List _findDartFiles(List directories) { .listSync(recursive: true) .whereType() .map((file) => file.path) - .where((path) => path.endsWith('.dart') && !path.endsWith('.g.dart') && !path.contains('todos_repository') && !path.contains('file_storage') && !path.contains('web_client')) + .where((path) => + path.endsWith('.dart') && + !path.endsWith('.g.dart') && + !path.contains('todos_repository') && + !path.contains('file_storage') && + !path.contains('web_client')) .toSet(); return {...files, ...currentDirectoryDartFiles}; diff --git a/todos_repository_simple/lib/src/reactive_repository.dart b/todos_repository_simple/lib/src/reactive_repository.dart index ee0fc5ae..6b3952e5 100644 --- a/todos_repository_simple/lib/src/reactive_repository.dart +++ b/todos_repository_simple/lib/src/reactive_repository.dart @@ -57,7 +57,7 @@ class ReactiveTodosRepositoryFlutter implements ReactiveTodosRepository { _repository.loadTodos().then((entities) { _subject.add(List.unmodifiable( - [if (_subject.value != null ) ..._subject.value, ...entities], + [if (_subject.value != null) ..._subject.value, ...entities], )); }); } From 901ab5252a16f25e54447ee2776dc279153afa54 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Fri, 10 Jan 2020 15:58:46 +0100 Subject: [PATCH 19/77] Rename provider_sample to change_notifier_provider_sample to clarify this particular usage of Provider --- .cirrus.yml | 4 ++-- .travis.yml | 8 ++++---- README.md | 2 +- {provider => change_notifier_provider}/.gitignore | 0 {provider => change_notifier_provider}/.metadata | 4 ++-- {provider => change_notifier_provider}/README.md | 0 .../android/.gitignore | 0 .../android/app/build.gradle | 2 +- .../android/app/src/debug/AndroidManifest.xml | 2 +- .../android/app/src/main/AndroidManifest.xml | 4 ++-- .../change_notifier_provider}/MainActivity.kt | 2 +- .../app/src/main/res/drawable/launch_background.xml | 0 .../app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../app/src/main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../app/src/main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../android/app/src/main/res/values/styles.xml | 0 .../android/app/src/profile/AndroidManifest.xml | 2 +- .../android/build.gradle | 0 .../android/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.properties | 0 .../android/settings.gradle | 0 .../ios/.gitignore | 0 .../ios/Flutter/AppFrameworkInfo.plist | 0 .../ios/Flutter/Debug.xcconfig | 0 .../ios/Flutter/Release.xcconfig | 0 {provider => change_notifier_provider}/ios/Podfile | 0 .../ios/Runner.xcodeproj/project.pbxproj | 6 +++--- .../project.xcworkspace/contents.xcworkspacedata | 0 .../xcshareddata/xcschemes/Runner.xcscheme | 0 .../ios/Runner.xcworkspace/contents.xcworkspacedata | 0 .../ios/Runner/AppDelegate.swift | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/Icon-App-1024x1024@1x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin .../AppIcon.appiconset/Icon-App-83.5x83.5@2x.png | Bin .../LaunchImage.imageset/Contents.json | 0 .../LaunchImage.imageset/LaunchImage.png | Bin .../LaunchImage.imageset/LaunchImage@2x.png | Bin .../LaunchImage.imageset/LaunchImage@3x.png | Bin .../Assets.xcassets/LaunchImage.imageset/README.md | 0 .../ios/Runner/Base.lproj/LaunchScreen.storyboard | 0 .../ios/Runner/Base.lproj/Main.storyboard | 0 .../ios/Runner/Info.plist | 2 +- .../ios/Runner/Runner-Bridging-Header.h | 0 .../lib/add_todo_screen.dart | 0 {provider => change_notifier_provider}/lib/app.dart | 6 +++--- .../lib/details_screen.dart | 2 +- .../lib/edit_todo_screen.dart | 2 +- .../lib/home/extra_actions_button.dart | 0 .../lib/home/filter_button.dart | 2 +- .../lib/home/home_screen.dart | 8 ++++---- .../lib/home/stats_view.dart | 2 +- .../lib/home/todo_list_view.dart | 2 +- .../lib/localization.dart | 0 .../lib/main.dart | 2 +- .../lib/models.dart | 0 .../lib/todo_list_model.dart | 2 +- .../line_count.md | 0 {provider => change_notifier_provider}/pubspec.yaml | 2 +- .../test/app_state_test.dart | 4 ++-- .../test/home_screen_test.dart | 8 ++++---- .../test/mock_repository.dart | 2 +- .../test_driver/todo_app.dart | 2 +- .../test_driver/todo_app_test.dart | 0 change_notifier_provider/web/index.html | 10 ++++++++++ scripts/line_counter.dart | 2 +- 80 files changed, 53 insertions(+), 43 deletions(-) rename {provider => change_notifier_provider}/.gitignore (100%) rename {provider => change_notifier_provider}/.metadata (76%) rename {provider => change_notifier_provider}/README.md (100%) rename {provider => change_notifier_provider}/android/.gitignore (100%) rename {provider => change_notifier_provider}/android/app/build.gradle (97%) rename {provider => change_notifier_provider}/android/app/src/debug/AndroidManifest.xml (84%) rename {provider => change_notifier_provider}/android/app/src/main/AndroidManifest.xml (93%) rename {provider/android/app/src/main/kotlin/com/example/provider => change_notifier_provider/android/app/src/main/kotlin/com/example/change_notifier_provider}/MainActivity.kt (89%) rename {provider => change_notifier_provider}/android/app/src/main/res/drawable/launch_background.xml (100%) rename {provider => change_notifier_provider}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename {provider => change_notifier_provider}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename {provider => change_notifier_provider}/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename {provider => change_notifier_provider}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {provider => change_notifier_provider}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {provider => change_notifier_provider}/android/app/src/main/res/values/styles.xml (100%) rename {provider => change_notifier_provider}/android/app/src/profile/AndroidManifest.xml (84%) rename {provider => change_notifier_provider}/android/build.gradle (100%) rename {provider => change_notifier_provider}/android/gradle.properties (100%) rename {provider => change_notifier_provider}/android/gradle/wrapper/gradle-wrapper.properties (100%) rename {provider => change_notifier_provider}/android/settings.gradle (100%) rename {provider => change_notifier_provider}/ios/.gitignore (100%) rename {provider => change_notifier_provider}/ios/Flutter/AppFrameworkInfo.plist (100%) rename {provider => change_notifier_provider}/ios/Flutter/Debug.xcconfig (100%) rename {provider => change_notifier_provider}/ios/Flutter/Release.xcconfig (100%) rename {provider => change_notifier_provider}/ios/Podfile (100%) rename {provider => change_notifier_provider}/ios/Runner.xcodeproj/project.pbxproj (99%) rename {provider => change_notifier_provider}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename {provider => change_notifier_provider}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (100%) rename {provider => change_notifier_provider}/ios/Runner.xcworkspace/contents.xcworkspacedata (100%) rename {provider => change_notifier_provider}/ios/Runner/AppDelegate.swift (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png (100%) rename {provider => change_notifier_provider}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md (100%) rename {provider => change_notifier_provider}/ios/Runner/Base.lproj/LaunchScreen.storyboard (100%) rename {provider => change_notifier_provider}/ios/Runner/Base.lproj/Main.storyboard (100%) rename {provider => change_notifier_provider}/ios/Runner/Info.plist (97%) rename {provider => change_notifier_provider}/ios/Runner/Runner-Bridging-Header.h (100%) rename {provider => change_notifier_provider}/lib/add_todo_screen.dart (100%) rename {provider => change_notifier_provider}/lib/app.dart (85%) rename {provider => change_notifier_provider}/lib/details_screen.dart (98%) rename {provider => change_notifier_provider}/lib/edit_todo_screen.dart (97%) rename {provider => change_notifier_provider}/lib/home/extra_actions_button.dart (100%) rename {provider => change_notifier_provider}/lib/home/filter_button.dart (97%) rename {provider => change_notifier_provider}/lib/home/home_screen.dart (93%) rename {provider => change_notifier_provider}/lib/home/stats_view.dart (96%) rename {provider => change_notifier_provider}/lib/home/todo_list_view.dart (97%) rename {provider => change_notifier_provider}/lib/localization.dart (100%) rename {provider => change_notifier_provider}/lib/main.dart (90%) rename {provider => change_notifier_provider}/lib/models.dart (100%) rename {provider => change_notifier_provider}/lib/todo_list_model.dart (98%) rename {provider => change_notifier_provider}/line_count.md (100%) rename {provider => change_notifier_provider}/pubspec.yaml (98%) rename {provider => change_notifier_provider}/test/app_state_test.dart (96%) rename {provider => change_notifier_provider}/test/home_screen_test.dart (93%) rename {provider => change_notifier_provider}/test/mock_repository.dart (89%) rename {provider => change_notifier_provider}/test_driver/todo_app.dart (83%) rename {provider => change_notifier_provider}/test_driver/todo_app_test.dart (100%) create mode 100644 change_notifier_provider/web/index.html diff --git a/.cirrus.yml b/.cirrus.yml index 63583f73..601b9d96 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -33,7 +33,7 @@ task: app_arch: mvc app_arch: mvi_flutter app_arch: mvu - app_arch: provider + app_arch: change_notifier_provider app_arch: redux app_arch: scoped_model app_arch: simple_bloc_flutter @@ -74,7 +74,7 @@ task: app_arch: mvc app_arch: mvi_flutter app_arch: mvu - app_arch: provider + app_arch: change_notifier_provider app_arch: redux app_arch: scoped_model app_arch: simple_bloc_flutter diff --git a/.travis.yml b/.travis.yml index 1bd4cab9..3aab3f97 100644 --- a/.travis.yml +++ b/.travis.yml @@ -283,14 +283,14 @@ jobs: script: travis_retry ./scripts/ci.sh ./redux - <<: *integration-test os: linux - env: provider_android - script: travis_retry ./scripts/ci.sh ./provider + env: change_notifier_provider_android + script: travis_retry ./scripts/ci.sh ./change_notifier_provider - <<: *integration-test os: osx osx_image: xcode8.0 - env: provider_ios + env: change_notifier_provider_ios before_install: *before_install_osx - script: travis_retry ./scripts/ci.sh ./provider + script: travis_retry ./scripts/ci.sh ./change_notifier_provider - <<: *integration-test os: linux env: scoped_model_android diff --git a/README.md b/README.md index 6ee7b6c2..10e20eca 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Examples have been updated to Dart 2. - [MVC Example](mvc) - Uses the [MVC](https://pub.dartlang.org/packages/mvc_pattern) library to implement the traditional MVC design pattern. - [Frideos Example](frideos_library) - Uses the [Frideos](https://pub.dartlang.org/packages/frideos) library to manage app state and update widgets using streams. - [MobX Example](mobx) - Uses the [MobX](https://pub.dev/packages/mobx) library to manage app state and update widgets using `Observables`, `Actions` and `Reactions`. -- [Provider Example](provider) - Uses the [provider](https://pub.dev/packages/provider) package now recommended by the Flutter team. +- [Change Notifier + Provider Example](change_notifier_provider) - Uses the [ChangeNotifier](https://api.flutter.dev/flutter/foundation/ChangeNotifier-class.html) class from Flutter with [provider](https://pub.dev/packages/provider) package now recommended by the Flutter team. ### Supporting Code diff --git a/provider/.gitignore b/change_notifier_provider/.gitignore similarity index 100% rename from provider/.gitignore rename to change_notifier_provider/.gitignore diff --git a/provider/.metadata b/change_notifier_provider/.metadata similarity index 76% rename from provider/.metadata rename to change_notifier_provider/.metadata index 1b5cec02..361e1e4c 100644 --- a/provider/.metadata +++ b/change_notifier_provider/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: 27321ebbad34b0a3fafe99fac037102196d655ff - channel: stable + revision: 18cd7a3601bcffb36fdf2f679f763b5e827c2e8e + channel: beta project_type: app diff --git a/provider/README.md b/change_notifier_provider/README.md similarity index 100% rename from provider/README.md rename to change_notifier_provider/README.md diff --git a/provider/android/.gitignore b/change_notifier_provider/android/.gitignore similarity index 100% rename from provider/android/.gitignore rename to change_notifier_provider/android/.gitignore diff --git a/provider/android/app/build.gradle b/change_notifier_provider/android/app/build.gradle similarity index 97% rename from provider/android/app/build.gradle rename to change_notifier_provider/android/app/build.gradle index e68c49c0..84853055 100644 --- a/provider/android/app/build.gradle +++ b/change_notifier_provider/android/app/build.gradle @@ -38,7 +38,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.provider" + applicationId "com.example.change_notifier_provider" minSdkVersion 16 targetSdkVersion 28 versionCode flutterVersionCode.toInteger() diff --git a/provider/android/app/src/debug/AndroidManifest.xml b/change_notifier_provider/android/app/src/debug/AndroidManifest.xml similarity index 84% rename from provider/android/app/src/debug/AndroidManifest.xml rename to change_notifier_provider/android/app/src/debug/AndroidManifest.xml index 47be3d0d..a9a5b33e 100644 --- a/provider/android/app/src/debug/AndroidManifest.xml +++ b/change_notifier_provider/android/app/src/debug/AndroidManifest.xml @@ -1,5 +1,5 @@ + package="com.example.change_notifier_provider"> diff --git a/provider/android/app/src/main/AndroidManifest.xml b/change_notifier_provider/android/app/src/main/AndroidManifest.xml similarity index 93% rename from provider/android/app/src/main/AndroidManifest.xml rename to change_notifier_provider/android/app/src/main/AndroidManifest.xml index 14dc0971..afb0b62e 100644 --- a/provider/android/app/src/main/AndroidManifest.xml +++ b/change_notifier_provider/android/app/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ + package="com.example.change_notifier_provider"> + package="com.example.change_notifier_provider"> diff --git a/provider/android/build.gradle b/change_notifier_provider/android/build.gradle similarity index 100% rename from provider/android/build.gradle rename to change_notifier_provider/android/build.gradle diff --git a/provider/android/gradle.properties b/change_notifier_provider/android/gradle.properties similarity index 100% rename from provider/android/gradle.properties rename to change_notifier_provider/android/gradle.properties diff --git a/provider/android/gradle/wrapper/gradle-wrapper.properties b/change_notifier_provider/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from provider/android/gradle/wrapper/gradle-wrapper.properties rename to change_notifier_provider/android/gradle/wrapper/gradle-wrapper.properties diff --git a/provider/android/settings.gradle b/change_notifier_provider/android/settings.gradle similarity index 100% rename from provider/android/settings.gradle rename to change_notifier_provider/android/settings.gradle diff --git a/provider/ios/.gitignore b/change_notifier_provider/ios/.gitignore similarity index 100% rename from provider/ios/.gitignore rename to change_notifier_provider/ios/.gitignore diff --git a/provider/ios/Flutter/AppFrameworkInfo.plist b/change_notifier_provider/ios/Flutter/AppFrameworkInfo.plist similarity index 100% rename from provider/ios/Flutter/AppFrameworkInfo.plist rename to change_notifier_provider/ios/Flutter/AppFrameworkInfo.plist diff --git a/provider/ios/Flutter/Debug.xcconfig b/change_notifier_provider/ios/Flutter/Debug.xcconfig similarity index 100% rename from provider/ios/Flutter/Debug.xcconfig rename to change_notifier_provider/ios/Flutter/Debug.xcconfig diff --git a/provider/ios/Flutter/Release.xcconfig b/change_notifier_provider/ios/Flutter/Release.xcconfig similarity index 100% rename from provider/ios/Flutter/Release.xcconfig rename to change_notifier_provider/ios/Flutter/Release.xcconfig diff --git a/provider/ios/Podfile b/change_notifier_provider/ios/Podfile similarity index 100% rename from provider/ios/Podfile rename to change_notifier_provider/ios/Podfile diff --git a/provider/ios/Runner.xcodeproj/project.pbxproj b/change_notifier_provider/ios/Runner.xcodeproj/project.pbxproj similarity index 99% rename from provider/ios/Runner.xcodeproj/project.pbxproj rename to change_notifier_provider/ios/Runner.xcodeproj/project.pbxproj index 468189ac..a50c875c 100644 --- a/provider/ios/Runner.xcodeproj/project.pbxproj +++ b/change_notifier_provider/ios/Runner.xcodeproj/project.pbxproj @@ -320,7 +320,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.provider; + PRODUCT_BUNDLE_IDENTIFIER = com.example.changeNotifierProvider; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -454,7 +454,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.provider; + PRODUCT_BUNDLE_IDENTIFIER = com.example.changeNotifierProvider; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -481,7 +481,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.provider; + PRODUCT_BUNDLE_IDENTIFIER = com.example.changeNotifierProvider; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/provider/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/change_notifier_provider/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from provider/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to change_notifier_provider/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/provider/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/change_notifier_provider/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 100% rename from provider/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to change_notifier_provider/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme diff --git a/provider/ios/Runner.xcworkspace/contents.xcworkspacedata b/change_notifier_provider/ios/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from provider/ios/Runner.xcworkspace/contents.xcworkspacedata rename to change_notifier_provider/ios/Runner.xcworkspace/contents.xcworkspacedata diff --git a/provider/ios/Runner/AppDelegate.swift b/change_notifier_provider/ios/Runner/AppDelegate.swift similarity index 100% rename from provider/ios/Runner/AppDelegate.swift rename to change_notifier_provider/ios/Runner/AppDelegate.swift diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png diff --git a/provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png diff --git a/provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/change_notifier_provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json similarity index 100% rename from provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json rename to change_notifier_provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json diff --git a/provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/change_notifier_provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png diff --git a/provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png diff --git a/provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png similarity index 100% rename from provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png rename to change_notifier_provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png diff --git a/provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/change_notifier_provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md similarity index 100% rename from provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md rename to change_notifier_provider/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md diff --git a/provider/ios/Runner/Base.lproj/LaunchScreen.storyboard b/change_notifier_provider/ios/Runner/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from provider/ios/Runner/Base.lproj/LaunchScreen.storyboard rename to change_notifier_provider/ios/Runner/Base.lproj/LaunchScreen.storyboard diff --git a/provider/ios/Runner/Base.lproj/Main.storyboard b/change_notifier_provider/ios/Runner/Base.lproj/Main.storyboard similarity index 100% rename from provider/ios/Runner/Base.lproj/Main.storyboard rename to change_notifier_provider/ios/Runner/Base.lproj/Main.storyboard diff --git a/provider/ios/Runner/Info.plist b/change_notifier_provider/ios/Runner/Info.plist similarity index 97% rename from provider/ios/Runner/Info.plist rename to change_notifier_provider/ios/Runner/Info.plist index 63ac6e91..cbeedc31 100644 --- a/provider/ios/Runner/Info.plist +++ b/change_notifier_provider/ios/Runner/Info.plist @@ -11,7 +11,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - provider + change_notifier_provider CFBundlePackageType APPL CFBundleShortVersionString diff --git a/provider/ios/Runner/Runner-Bridging-Header.h b/change_notifier_provider/ios/Runner/Runner-Bridging-Header.h similarity index 100% rename from provider/ios/Runner/Runner-Bridging-Header.h rename to change_notifier_provider/ios/Runner/Runner-Bridging-Header.h diff --git a/provider/lib/add_todo_screen.dart b/change_notifier_provider/lib/add_todo_screen.dart similarity index 100% rename from provider/lib/add_todo_screen.dart rename to change_notifier_provider/lib/add_todo_screen.dart diff --git a/provider/lib/app.dart b/change_notifier_provider/lib/app.dart similarity index 85% rename from provider/lib/app.dart rename to change_notifier_provider/lib/app.dart index 1b4015e8..dede20c9 100644 --- a/provider/lib/app.dart +++ b/change_notifier_provider/lib/app.dart @@ -5,9 +5,9 @@ import 'package:flutter/material.dart'; import 'package:meta/meta.dart'; import 'package:provider/provider.dart'; -import 'package:provider_sample/add_todo_screen.dart'; -import 'package:provider_sample/localization.dart'; -import 'package:provider_sample/todo_list_model.dart'; +import 'package:change_notifier_provider_sample/add_todo_screen.dart'; +import 'package:change_notifier_provider_sample/localization.dart'; +import 'package:change_notifier_provider_sample/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; diff --git a/provider/lib/details_screen.dart b/change_notifier_provider/lib/details_screen.dart similarity index 98% rename from provider/lib/details_screen.dart rename to change_notifier_provider/lib/details_screen.dart index 35333e34..d6e96a36 100644 --- a/provider/lib/details_screen.dart +++ b/change_notifier_provider/lib/details_screen.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:provider_sample/todo_list_model.dart'; +import 'package:change_notifier_provider_sample/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; import 'edit_todo_screen.dart'; diff --git a/provider/lib/edit_todo_screen.dart b/change_notifier_provider/lib/edit_todo_screen.dart similarity index 97% rename from provider/lib/edit_todo_screen.dart rename to change_notifier_provider/lib/edit_todo_screen.dart index 8213f1de..b50ef9dc 100644 --- a/provider/lib/edit_todo_screen.dart +++ b/change_notifier_provider/lib/edit_todo_screen.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:provider_sample/todo_list_model.dart'; +import 'package:change_notifier_provider_sample/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; class EditTodoScreen extends StatefulWidget { diff --git a/provider/lib/home/extra_actions_button.dart b/change_notifier_provider/lib/home/extra_actions_button.dart similarity index 100% rename from provider/lib/home/extra_actions_button.dart rename to change_notifier_provider/lib/home/extra_actions_button.dart diff --git a/provider/lib/home/filter_button.dart b/change_notifier_provider/lib/home/filter_button.dart similarity index 97% rename from provider/lib/home/filter_button.dart rename to change_notifier_provider/lib/home/filter_button.dart index 61b45606..229c13dd 100644 --- a/provider/lib/home/filter_button.dart +++ b/change_notifier_provider/lib/home/filter_button.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:provider_sample/todo_list_model.dart'; +import 'package:change_notifier_provider_sample/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; class FilterButton extends StatelessWidget { diff --git a/provider/lib/home/home_screen.dart b/change_notifier_provider/lib/home/home_screen.dart similarity index 93% rename from provider/lib/home/home_screen.dart rename to change_notifier_provider/lib/home/home_screen.dart index 7b2d1366..af67034e 100644 --- a/provider/lib/home/home_screen.dart +++ b/change_notifier_provider/lib/home/home_screen.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart' hide Action; import 'package:provider/provider.dart'; -import 'package:provider_sample/home/stats_view.dart'; -import 'package:provider_sample/home/todo_list_view.dart'; -import 'package:provider_sample/localization.dart'; -import 'package:provider_sample/todo_list_model.dart'; +import 'package:change_notifier_provider_sample/home/stats_view.dart'; +import 'package:change_notifier_provider_sample/home/todo_list_view.dart'; +import 'package:change_notifier_provider_sample/localization.dart'; +import 'package:change_notifier_provider_sample/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; import '../models.dart'; diff --git a/provider/lib/home/stats_view.dart b/change_notifier_provider/lib/home/stats_view.dart similarity index 96% rename from provider/lib/home/stats_view.dart rename to change_notifier_provider/lib/home/stats_view.dart index d11bbd16..f6566284 100644 --- a/provider/lib/home/stats_view.dart +++ b/change_notifier_provider/lib/home/stats_view.dart @@ -1,7 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:provider_sample/todo_list_model.dart'; +import 'package:change_notifier_provider_sample/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; class StatsView extends StatelessWidget { diff --git a/provider/lib/home/todo_list_view.dart b/change_notifier_provider/lib/home/todo_list_view.dart similarity index 97% rename from provider/lib/home/todo_list_view.dart rename to change_notifier_provider/lib/home/todo_list_view.dart index fdad2a99..ef34d820 100644 --- a/provider/lib/home/todo_list_view.dart +++ b/change_notifier_provider/lib/home/todo_list_view.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:provider_sample/todo_list_model.dart'; +import 'package:change_notifier_provider_sample/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; import '../details_screen.dart'; diff --git a/provider/lib/localization.dart b/change_notifier_provider/lib/localization.dart similarity index 100% rename from provider/lib/localization.dart rename to change_notifier_provider/lib/localization.dart diff --git a/provider/lib/main.dart b/change_notifier_provider/lib/main.dart similarity index 90% rename from provider/lib/main.dart rename to change_notifier_provider/lib/main.dart index 5b777272..4815feb6 100644 --- a/provider/lib/main.dart +++ b/change_notifier_provider/lib/main.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; import 'package:path_provider/path_provider.dart'; -import 'package:provider_sample/app.dart'; +import 'package:change_notifier_provider_sample/app.dart'; import 'package:todos_repository_simple/todos_repository_simple.dart'; void main() { diff --git a/provider/lib/models.dart b/change_notifier_provider/lib/models.dart similarity index 100% rename from provider/lib/models.dart rename to change_notifier_provider/lib/models.dart diff --git a/provider/lib/todo_list_model.dart b/change_notifier_provider/lib/todo_list_model.dart similarity index 98% rename from provider/lib/todo_list_model.dart rename to change_notifier_provider/lib/todo_list_model.dart index ee5f10ee..9e0ecbcf 100644 --- a/provider/lib/todo_list_model.dart +++ b/change_notifier_provider/lib/todo_list_model.dart @@ -7,7 +7,7 @@ import 'dart:collection'; import 'package:flutter/widgets.dart'; import 'package:meta/meta.dart'; -import 'package:provider_sample/models.dart'; +import 'package:change_notifier_provider_sample/models.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; enum VisibilityFilter { all, active, completed } diff --git a/provider/line_count.md b/change_notifier_provider/line_count.md similarity index 100% rename from provider/line_count.md rename to change_notifier_provider/line_count.md diff --git a/provider/pubspec.yaml b/change_notifier_provider/pubspec.yaml similarity index 98% rename from provider/pubspec.yaml rename to change_notifier_provider/pubspec.yaml index 19760fac..6ec01911 100644 --- a/provider/pubspec.yaml +++ b/change_notifier_provider/pubspec.yaml @@ -1,4 +1,4 @@ -name: provider_sample +name: change_notifier_provider_sample description: A new Flutter project. # The following defines the version and build number for your application. diff --git a/provider/test/app_state_test.dart b/change_notifier_provider/test/app_state_test.dart similarity index 96% rename from provider/test/app_state_test.dart rename to change_notifier_provider/test/app_state_test.dart index 6a0aa443..d1a792a1 100644 --- a/provider/test/app_state_test.dart +++ b/change_notifier_provider/test/app_state_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:provider_sample/models.dart'; -import 'package:provider_sample/todo_list_model.dart'; +import 'package:change_notifier_provider_sample/models.dart'; +import 'package:change_notifier_provider_sample/todo_list_model.dart'; import 'package:test/test.dart'; import 'mock_repository.dart'; diff --git a/provider/test/home_screen_test.dart b/change_notifier_provider/test/home_screen_test.dart similarity index 93% rename from provider/test/home_screen_test.dart rename to change_notifier_provider/test/home_screen_test.dart index cd003dcc..31c1cb49 100644 --- a/provider/test/home_screen_test.dart +++ b/change_notifier_provider/test/home_screen_test.dart @@ -2,10 +2,10 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:provider/provider.dart'; -import 'package:provider_sample/home/home_screen.dart'; -import 'package:provider_sample/localization.dart'; -import 'package:provider_sample/models.dart'; -import 'package:provider_sample/todo_list_model.dart'; +import 'package:change_notifier_provider_sample/home/home_screen.dart'; +import 'package:change_notifier_provider_sample/localization.dart'; +import 'package:change_notifier_provider_sample/models.dart'; +import 'package:change_notifier_provider_sample/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; diff --git a/provider/test/mock_repository.dart b/change_notifier_provider/test/mock_repository.dart similarity index 89% rename from provider/test/mock_repository.dart rename to change_notifier_provider/test/mock_repository.dart index a57aeb19..bbe13c77 100644 --- a/provider/test/mock_repository.dart +++ b/change_notifier_provider/test/mock_repository.dart @@ -1,6 +1,6 @@ // Provides a Mock repository that can be used for testing in place of the real // thing. -import 'package:provider_sample/models.dart'; +import 'package:change_notifier_provider_sample/models.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; class MockRepository extends TodosRepository { diff --git a/provider/test_driver/todo_app.dart b/change_notifier_provider/test_driver/todo_app.dart similarity index 83% rename from provider/test_driver/todo_app.dart rename to change_notifier_provider/test_driver/todo_app.dart index e7f74564..6436159b 100644 --- a/provider/test_driver/todo_app.dart +++ b/change_notifier_provider/test_driver/todo_app.dart @@ -4,7 +4,7 @@ // This line imports the extension import 'package:flutter_driver/driver_extension.dart'; -import 'package:provider_sample/main.dart' as app; +import 'package:change_notifier_provider_sample/main.dart' as app; void main() { enableFlutterDriverExtension(); diff --git a/provider/test_driver/todo_app_test.dart b/change_notifier_provider/test_driver/todo_app_test.dart similarity index 100% rename from provider/test_driver/todo_app_test.dart rename to change_notifier_provider/test_driver/todo_app_test.dart diff --git a/change_notifier_provider/web/index.html b/change_notifier_provider/web/index.html new file mode 100644 index 00000000..47bbc93b --- /dev/null +++ b/change_notifier_provider/web/index.html @@ -0,0 +1,10 @@ + + + + + change_notifier_provider + + + + + diff --git a/scripts/line_counter.dart b/scripts/line_counter.dart index 233b704c..dfec857e 100644 --- a/scripts/line_counter.dart +++ b/scripts/line_counter.dart @@ -22,7 +22,7 @@ class Output { void main() { final samples = [ - Sample('provider', ['provider']), + Sample('change_notifier_provider', ['change_notifier_provider']), Sample('bloc', ['bloc_flutter', 'blocs']), Sample('bloc library', ['bloc_library']), Sample('built_redux', ['built_redux']), From 9e93b60e588f0ca2618ce0bcf2e74f9ad3e3b842 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Fri, 10 Jan 2020 15:59:37 +0100 Subject: [PATCH 20/77] Add latest line count --- line_count.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/line_count.md b/line_count.md index b0431a7f..06c94c66 100644 --- a/line_count.md +++ b/line_count.md @@ -17,19 +17,19 @@ samples to make them smaller, unless doing so improves the application overall. |--------|-------------------| | scoped_model | 778 | | mobx | 815 | +| change_notifier_provider | 830 | | inherited_widget | 832 | -| provider | 835 | | mvc | 842 | | vanilla | 842 | | frideos_library | 878 | | simple blocs | 1076 | | built_redux | 1172 | -| bloc | 1186 | -| mvu | 1190 | +| mvu | 1191 | +| bloc | 1194 | | bloc library | 1214 | | mvi | 1244 | | redux | 1362 | | firestore_redux | 1429 | -Note: This file was generated on 2020-01-08 19:04:25.222051Z using `scripts/line_counter.dart`. +Note: This file was generated on 2020-01-10 14:59:25.151846Z using `scripts/line_counter.dart`. From f0c2bd65fb316a86acb7ad8287b23948f703cc7b Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Fri, 10 Jan 2020 16:17:34 +0100 Subject: [PATCH 21/77] Fix built_redux tests that were accidentally refactored --- built_redux/lib/actions/actions.g.dart | 141 +++++++++--------- .../lib/containers/filter_selector.g.dart | 42 +++--- built_redux/lib/containers/stats.g.dart | 41 +++-- built_redux/lib/models/app_state.g.dart | 66 ++++---- built_redux/lib/models/app_tab.g.dart | 22 +-- built_redux/lib/models/extra_actions.g.dart | 23 ++- built_redux/lib/models/serializers.g.dart | 19 +-- built_redux/lib/models/todo.g.dart | 56 +++---- .../lib/models/visibility_filter.g.dart | 24 ++- built_redux/pubspec.yaml | 16 +- 10 files changed, 213 insertions(+), 237 deletions(-) diff --git a/built_redux/lib/actions/actions.g.dart b/built_redux/lib/actions/actions.g.dart index 44c1cd37..025f841c 100644 --- a/built_redux/lib/actions/actions.g.dart +++ b/built_redux/lib/actions/actions.g.dart @@ -3,33 +3,37 @@ part of actions; // ************************************************************************** -// Generator: BuiltReduxGenerator +// BuiltReduxGenerator // ************************************************************************** +// ignore_for_file: avoid_classes_with_only_static_members +// ignore_for_file: annotate_overrides +// ignore_for_file: overridden_fields +// ignore_for_file: type_annotate_public_apis + class _$AppActions extends AppActions { - factory _$AppActions() => _$AppActions._(); + factory _$AppActions() => new _$AppActions._(); _$AppActions._() : super._(); - final ActionDispatcher addTodoAction = - ActionDispatcher('AppActions-addTodoAction'); - final ActionDispatcher clearCompletedAction = - ActionDispatcher('AppActions-clearCompletedAction'); - final ActionDispatcher deleteTodoAction = - ActionDispatcher('AppActions-deleteTodoAction'); - final ActionDispatcher fetchTodosAction = - ActionDispatcher('AppActions-fetchTodosAction'); - final ActionDispatcher toggleAllAction = - ActionDispatcher('AppActions-toggleAllAction'); - final ActionDispatcher> loadTodosSuccess = - ActionDispatcher>('AppActions-loadTodosSuccess'); - final ActionDispatcher loadTodosFailure = - ActionDispatcher('AppActions-loadTodosFailure'); - final ActionDispatcher updateFilterAction = - ActionDispatcher('AppActions-updateFilterAction'); - final ActionDispatcher updateTabAction = - ActionDispatcher('AppActions-updateTabAction'); - final ActionDispatcher updateTodoAction = - ActionDispatcher('AppActions-updateTodoAction'); + final addTodoAction = new ActionDispatcher('AppActions-addTodoAction'); + final clearCompletedAction = + new ActionDispatcher('AppActions-clearCompletedAction'); + final deleteTodoAction = + new ActionDispatcher('AppActions-deleteTodoAction'); + final fetchTodosAction = + new ActionDispatcher('AppActions-fetchTodosAction'); + final toggleAllAction = + new ActionDispatcher('AppActions-toggleAllAction'); + final loadTodosSuccess = + new ActionDispatcher>('AppActions-loadTodosSuccess'); + final loadTodosFailure = + new ActionDispatcher('AppActions-loadTodosFailure'); + final updateFilterAction = + new ActionDispatcher('AppActions-updateFilterAction'); + final updateTabAction = + new ActionDispatcher('AppActions-updateTabAction'); + final updateTodoAction = new ActionDispatcher( + 'AppActions-updateTodoAction'); @override void setDispatcher(Dispatcher dispatcher) { @@ -47,42 +51,33 @@ class _$AppActions extends AppActions { } class AppActionsNames { - static final ActionName addTodoAction = - ActionName('AppActions-addTodoAction'); - static final ActionName clearCompletedAction = - ActionName('AppActions-clearCompletedAction'); - static final ActionName deleteTodoAction = - ActionName('AppActions-deleteTodoAction'); - static final ActionName fetchTodosAction = - ActionName('AppActions-fetchTodosAction'); - static final ActionName toggleAllAction = - ActionName('AppActions-toggleAllAction'); - static final ActionName> loadTodosSuccess = - ActionName>('AppActions-loadTodosSuccess'); - static final ActionName loadTodosFailure = - ActionName('AppActions-loadTodosFailure'); - static final ActionName updateFilterAction = - ActionName('AppActions-updateFilterAction'); - static final ActionName updateTabAction = - ActionName('AppActions-updateTabAction'); - static final ActionName updateTodoAction = - ActionName('AppActions-updateTodoAction'); + static final addTodoAction = new ActionName('AppActions-addTodoAction'); + static final clearCompletedAction = + new ActionName('AppActions-clearCompletedAction'); + static final deleteTodoAction = + new ActionName('AppActions-deleteTodoAction'); + static final fetchTodosAction = + new ActionName('AppActions-fetchTodosAction'); + static final toggleAllAction = + new ActionName('AppActions-toggleAllAction'); + static final loadTodosSuccess = + new ActionName>('AppActions-loadTodosSuccess'); + static final loadTodosFailure = + new ActionName('AppActions-loadTodosFailure'); + static final updateFilterAction = + new ActionName('AppActions-updateFilterAction'); + static final updateTabAction = + new ActionName('AppActions-updateTabAction'); + static final updateTodoAction = + new ActionName('AppActions-updateTodoAction'); } // ************************************************************************** -// Generator: BuiltValueGenerator +// BuiltValueGenerator // ************************************************************************** -// ignore_for_file: always_put_control_body_on_new_line -// ignore_for_file: annotate_overrides -// ignore_for_file: avoid_annotating_with_dynamic -// ignore_for_file: avoid_returning_this -// ignore_for_file: omit_local_variable_types -// ignore_for_file: prefer_expression_function_bodies -// ignore_for_file: sort_constructors_first - Serializer _$updateTodoActionPayloadSerializer = - _$UpdateTodoActionPayloadSerializer(); + new _$UpdateTodoActionPayloadSerializer(); class _$UpdateTodoActionPayloadSerializer implements StructuredSerializer { @@ -95,7 +90,8 @@ class _$UpdateTodoActionPayloadSerializer final String wireName = 'UpdateTodoActionPayload'; @override - Iterable serialize(Serializers serializers, UpdateTodoActionPayload object, + Iterable serialize( + Serializers serializers, UpdateTodoActionPayload object, {FullType specifiedType = FullType.unspecified}) { final result = [ 'id', @@ -110,9 +106,9 @@ class _$UpdateTodoActionPayloadSerializer @override UpdateTodoActionPayload deserialize( - Serializers serializers, Iterable serialized, + Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { - final result = UpdateTodoActionPayloadBuilder(); + final result = new UpdateTodoActionPayloadBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -142,32 +138,34 @@ class _$UpdateTodoActionPayload extends UpdateTodoActionPayload { final Todo updatedTodo; factory _$UpdateTodoActionPayload( - [void Function(UpdateTodoActionPayloadBuilder b) updates]) => - (UpdateTodoActionPayloadBuilder()..update(updates)).build(); + [void Function(UpdateTodoActionPayloadBuilder) updates]) => + (new UpdateTodoActionPayloadBuilder()..update(updates)).build(); _$UpdateTodoActionPayload._({this.id, this.updatedTodo}) : super._() { if (id == null) { - throw BuiltValueNullFieldError('UpdateTodoActionPayload', 'id'); + throw new BuiltValueNullFieldError('UpdateTodoActionPayload', 'id'); } if (updatedTodo == null) { - throw BuiltValueNullFieldError('UpdateTodoActionPayload', 'updatedTodo'); + throw new BuiltValueNullFieldError( + 'UpdateTodoActionPayload', 'updatedTodo'); } } @override UpdateTodoActionPayload rebuild( - void Function(UpdateTodoActionPayloadBuilder b) updates) => + void Function(UpdateTodoActionPayloadBuilder) updates) => (toBuilder()..update(updates)).build(); @override UpdateTodoActionPayloadBuilder toBuilder() => - UpdateTodoActionPayloadBuilder()..replace(this); + new UpdateTodoActionPayloadBuilder()..replace(this); @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { if (identical(other, this)) return true; - if (other is! UpdateTodoActionPayload) return false; - return id == other.id && updatedTodo == other.updatedTodo; + return other is UpdateTodoActionPayload && + id == other.id && + updatedTodo == other.updatedTodo; } @override @@ -194,7 +192,7 @@ class UpdateTodoActionPayloadBuilder set id(String id) => _$this._id = id; TodoBuilder _updatedTodo; - TodoBuilder get updatedTodo => _$this._updatedTodo ??= TodoBuilder(); + TodoBuilder get updatedTodo => _$this._updatedTodo ??= new TodoBuilder(); set updatedTodo(TodoBuilder updatedTodo) => _$this._updatedTodo = updatedTodo; UpdateTodoActionPayloadBuilder(); @@ -210,12 +208,14 @@ class UpdateTodoActionPayloadBuilder @override void replace(UpdateTodoActionPayload other) { - if (other == null) throw ArgumentError.notNull('other'); + if (other == null) { + throw new ArgumentError.notNull('other'); + } _$v = other as _$UpdateTodoActionPayload; } @override - void update(void Function(UpdateTodoActionPayloadBuilder b) updates) { + void update(void Function(UpdateTodoActionPayloadBuilder) updates) { if (updates != null) updates(this); } @@ -224,14 +224,15 @@ class UpdateTodoActionPayloadBuilder _$UpdateTodoActionPayload _$result; try { _$result = _$v ?? - _$UpdateTodoActionPayload._(id: id, updatedTodo: updatedTodo.build()); + new _$UpdateTodoActionPayload._( + id: id, updatedTodo: updatedTodo.build()); } catch (_) { String _$failedField; try { _$failedField = 'updatedTodo'; updatedTodo.build(); } catch (e) { - throw BuiltValueNestedFieldError( + throw new BuiltValueNestedFieldError( 'UpdateTodoActionPayload', _$failedField, e.toString()); } rethrow; @@ -240,3 +241,5 @@ class UpdateTodoActionPayloadBuilder return _$result; } } + +// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new diff --git a/built_redux/lib/containers/filter_selector.g.dart b/built_redux/lib/containers/filter_selector.g.dart index f84c8981..3001e3a9 100644 --- a/built_redux/lib/containers/filter_selector.g.dart +++ b/built_redux/lib/containers/filter_selector.g.dart @@ -3,17 +3,9 @@ part of filter_selector; // ************************************************************************** -// Generator: BuiltValueGenerator +// BuiltValueGenerator // ************************************************************************** -// ignore_for_file: always_put_control_body_on_new_line -// ignore_for_file: annotate_overrides -// ignore_for_file: avoid_annotating_with_dynamic -// ignore_for_file: avoid_returning_this -// ignore_for_file: omit_local_variable_types -// ignore_for_file: prefer_expression_function_bodies -// ignore_for_file: sort_constructors_first - class _$FilterSelectorViewModel extends FilterSelectorViewModel { @override final OnFilterSelected onFilterSelected; @@ -21,35 +13,37 @@ class _$FilterSelectorViewModel extends FilterSelectorViewModel { final VisibilityFilter activeFilter; factory _$FilterSelectorViewModel( - [void Function(FilterSelectorViewModelBuilder b) updates]) => - (FilterSelectorViewModelBuilder()..update(updates)).build(); + [void Function(FilterSelectorViewModelBuilder) updates]) => + (new FilterSelectorViewModelBuilder()..update(updates)).build(); _$FilterSelectorViewModel._({this.onFilterSelected, this.activeFilter}) : super._() { if (onFilterSelected == null) { - throw BuiltValueNullFieldError( + throw new BuiltValueNullFieldError( 'FilterSelectorViewModel', 'onFilterSelected'); } if (activeFilter == null) { - throw BuiltValueNullFieldError('FilterSelectorViewModel', 'activeFilter'); + throw new BuiltValueNullFieldError( + 'FilterSelectorViewModel', 'activeFilter'); } } @override FilterSelectorViewModel rebuild( - void Function(FilterSelectorViewModelBuilder b) updates) => + void Function(FilterSelectorViewModelBuilder) updates) => (toBuilder()..update(updates)).build(); @override FilterSelectorViewModelBuilder toBuilder() => - FilterSelectorViewModelBuilder()..replace(this); + new FilterSelectorViewModelBuilder()..replace(this); @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { if (identical(other, this)) return true; - if (other is! FilterSelectorViewModel) return false; - return onFilterSelected == other.onFilterSelected && - activeFilter == other.filter; + final _$dynamicOther = other as dynamic; + return other is FilterSelectorViewModel && + onFilterSelected == _$dynamicOther.onFilterSelected && + activeFilter == other.activeFilter; } @override @@ -94,21 +88,25 @@ class FilterSelectorViewModelBuilder @override void replace(FilterSelectorViewModel other) { - if (other == null) throw ArgumentError.notNull('other'); + if (other == null) { + throw new ArgumentError.notNull('other'); + } _$v = other as _$FilterSelectorViewModel; } @override - void update(void Function(FilterSelectorViewModelBuilder b) updates) { + void update(void Function(FilterSelectorViewModelBuilder) updates) { if (updates != null) updates(this); } @override _$FilterSelectorViewModel build() { final _$result = _$v ?? - _$FilterSelectorViewModel._( + new _$FilterSelectorViewModel._( onFilterSelected: onFilterSelected, activeFilter: activeFilter); replace(_$result); return _$result; } } + +// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new diff --git a/built_redux/lib/containers/stats.g.dart b/built_redux/lib/containers/stats.g.dart index 09497158..b0e50bc9 100644 --- a/built_redux/lib/containers/stats.g.dart +++ b/built_redux/lib/containers/stats.g.dart @@ -3,47 +3,40 @@ part of stats; // ************************************************************************** -// Generator: BuiltValueGenerator +// BuiltValueGenerator // ************************************************************************** -// ignore_for_file: always_put_control_body_on_new_line -// ignore_for_file: annotate_overrides -// ignore_for_file: avoid_annotating_with_dynamic -// ignore_for_file: avoid_returning_this -// ignore_for_file: omit_local_variable_types -// ignore_for_file: prefer_expression_function_bodies -// ignore_for_file: sort_constructors_first - class _$StatsProps extends StatsProps { @override final int numCompleted; @override final int numActive; - factory _$StatsProps([void Function(StatsPropsBuilder b) updates]) => - (StatsPropsBuilder()..update(updates)).build(); + factory _$StatsProps([void Function(StatsPropsBuilder) updates]) => + (new StatsPropsBuilder()..update(updates)).build(); _$StatsProps._({this.numCompleted, this.numActive}) : super._() { if (numCompleted == null) { - throw BuiltValueNullFieldError('StatsProps', 'numCompleted'); + throw new BuiltValueNullFieldError('StatsProps', 'numCompleted'); } if (numActive == null) { - throw BuiltValueNullFieldError('StatsProps', 'numActive'); + throw new BuiltValueNullFieldError('StatsProps', 'numActive'); } } @override - StatsProps rebuild(void Function(StatsPropsBuilder b) updates) => + StatsProps rebuild(void Function(StatsPropsBuilder) updates) => (toBuilder()..update(updates)).build(); @override - StatsPropsBuilder toBuilder() => StatsPropsBuilder()..replace(this); + StatsPropsBuilder toBuilder() => new StatsPropsBuilder()..replace(this); @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { if (identical(other, this)) return true; - if (other is! StatsProps) return false; - return numCompleted == other.numCompleted && numActive == other.numActive; + return other is StatsProps && + numCompleted == other.numCompleted && + numActive == other.numActive; } @override @@ -84,20 +77,24 @@ class StatsPropsBuilder implements Builder { @override void replace(StatsProps other) { - if (other == null) throw ArgumentError.notNull('other'); + if (other == null) { + throw new ArgumentError.notNull('other'); + } _$v = other as _$StatsProps; } @override - void update(void Function(StatsPropsBuilder b) updates) { + void update(void Function(StatsPropsBuilder) updates) { if (updates != null) updates(this); } @override _$StatsProps build() { - final _$result = - _$v ?? _$StatsProps._(numCompleted: numCompleted, numActive: numActive); + final _$result = _$v ?? + new _$StatsProps._(numCompleted: numCompleted, numActive: numActive); replace(_$result); return _$result; } } + +// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new diff --git a/built_redux/lib/models/app_state.g.dart b/built_redux/lib/models/app_state.g.dart index c35782e4..6b75b07d 100644 --- a/built_redux/lib/models/app_state.g.dart +++ b/built_redux/lib/models/app_state.g.dart @@ -3,18 +3,10 @@ part of app_state; // ************************************************************************** -// Generator: BuiltValueGenerator +// BuiltValueGenerator // ************************************************************************** -// ignore_for_file: always_put_control_body_on_new_line -// ignore_for_file: annotate_overrides -// ignore_for_file: avoid_annotating_with_dynamic -// ignore_for_file: avoid_returning_this -// ignore_for_file: omit_local_variable_types -// ignore_for_file: prefer_expression_function_bodies -// ignore_for_file: sort_constructors_first - -Serializer _$appStateSerializer = _$AppStateSerializer(); +Serializer _$appStateSerializer = new _$AppStateSerializer(); class _$AppStateSerializer implements StructuredSerializer { @override @@ -23,7 +15,7 @@ class _$AppStateSerializer implements StructuredSerializer { final String wireName = 'AppState'; @override - Iterable serialize(Serializers serializers, AppState object, + Iterable serialize(Serializers serializers, AppState object, {FullType specifiedType = FullType.unspecified}) { final result = [ 'isLoading', @@ -31,7 +23,8 @@ class _$AppStateSerializer implements StructuredSerializer { specifiedType: const FullType(bool)), 'todos', serializers.serialize(object.todos, - specifiedType: const FullType(BuiltList, [FullType(Todo)])), + specifiedType: + const FullType(BuiltList, const [const FullType(Todo)])), 'activeTab', serializers.serialize(object.activeTab, specifiedType: const FullType(AppTab)), @@ -44,9 +37,9 @@ class _$AppStateSerializer implements StructuredSerializer { } @override - AppState deserialize(Serializers serializers, Iterable serialized, + AppState deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { - final result = AppStateBuilder(); + final result = new AppStateBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -60,8 +53,9 @@ class _$AppStateSerializer implements StructuredSerializer { break; case 'todos': result.todos.replace(serializers.deserialize(value, - specifiedType: const FullType(BuiltList, [FullType(Todo)])) - as BuiltList); + specifiedType: + const FullType(BuiltList, const [const FullType(Todo)])) + as BuiltList); break; case 'activeTab': result.activeTab = serializers.deserialize(value, @@ -93,22 +87,22 @@ class _$AppState extends AppState { bool __allCompleteSelector; List __filteredTodosSelector; - factory _$AppState([void Function(AppStateBuilder b) updates]) => - (AppStateBuilder()..update(updates)).build(); + factory _$AppState([void Function(AppStateBuilder) updates]) => + (new AppStateBuilder()..update(updates)).build(); _$AppState._({this.isLoading, this.todos, this.activeTab, this.activeFilter}) : super._() { if (isLoading == null) { - throw BuiltValueNullFieldError('AppState', 'isLoading'); + throw new BuiltValueNullFieldError('AppState', 'isLoading'); } if (todos == null) { - throw BuiltValueNullFieldError('AppState', 'todos'); + throw new BuiltValueNullFieldError('AppState', 'todos'); } if (activeTab == null) { - throw BuiltValueNullFieldError('AppState', 'activeTab'); + throw new BuiltValueNullFieldError('AppState', 'activeTab'); } if (activeFilter == null) { - throw BuiltValueNullFieldError('AppState', 'activeFilter'); + throw new BuiltValueNullFieldError('AppState', 'activeFilter'); } } @@ -128,20 +122,20 @@ class _$AppState extends AppState { __filteredTodosSelector ??= super.filteredTodosSelector; @override - AppState rebuild(void Function(AppStateBuilder b) updates) => + AppState rebuild(void Function(AppStateBuilder) updates) => (toBuilder()..update(updates)).build(); @override - AppStateBuilder toBuilder() => AppStateBuilder()..replace(this); + AppStateBuilder toBuilder() => new AppStateBuilder()..replace(this); @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { if (identical(other, this)) return true; - if (other is! AppState) return false; - return isLoading == other.isLoading && - todos == other.filteredTodos && + return other is AppState && + isLoading == other.isLoading && + todos == other.todos && activeTab == other.activeTab && - activeFilter == other.filter; + activeFilter == other.activeFilter; } @override @@ -171,7 +165,7 @@ class AppStateBuilder implements Builder { set isLoading(bool isLoading) => _$this._isLoading = isLoading; ListBuilder _todos; - ListBuilder get todos => _$this._todos ??= ListBuilder(); + ListBuilder get todos => _$this._todos ??= new ListBuilder(); set todos(ListBuilder todos) => _$this._todos = todos; AppTab _activeTab; @@ -198,12 +192,14 @@ class AppStateBuilder implements Builder { @override void replace(AppState other) { - if (other == null) throw ArgumentError.notNull('other'); + if (other == null) { + throw new ArgumentError.notNull('other'); + } _$v = other as _$AppState; } @override - void update(void Function(AppStateBuilder b) updates) { + void update(void Function(AppStateBuilder) updates) { if (updates != null) updates(this); } @@ -212,7 +208,7 @@ class AppStateBuilder implements Builder { _$AppState _$result; try { _$result = _$v ?? - _$AppState._( + new _$AppState._( isLoading: isLoading, todos: todos.build(), activeTab: activeTab, @@ -223,7 +219,7 @@ class AppStateBuilder implements Builder { _$failedField = 'todos'; todos.build(); } catch (e) { - throw BuiltValueNestedFieldError( + throw new BuiltValueNestedFieldError( 'AppState', _$failedField, e.toString()); } rethrow; @@ -232,3 +228,5 @@ class AppStateBuilder implements Builder { return _$result; } } + +// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new diff --git a/built_redux/lib/models/app_tab.g.dart b/built_redux/lib/models/app_tab.g.dart index 2334d445..dc9598d7 100644 --- a/built_redux/lib/models/app_tab.g.dart +++ b/built_redux/lib/models/app_tab.g.dart @@ -3,19 +3,11 @@ part of app_tab; // ************************************************************************** -// Generator: BuiltValueGenerator +// BuiltValueGenerator // ************************************************************************** -// ignore_for_file: always_put_control_body_on_new_line -// ignore_for_file: annotate_overrides -// ignore_for_file: avoid_annotating_with_dynamic -// ignore_for_file: avoid_returning_this -// ignore_for_file: omit_local_variable_types -// ignore_for_file: prefer_expression_function_bodies -// ignore_for_file: sort_constructors_first - -const AppTab _$todos = AppTab._('todos'); -const AppTab _$stats = AppTab._('stats'); +const AppTab _$todos = const AppTab._('todos'); +const AppTab _$stats = const AppTab._('stats'); AppTab _$appTabValueOf(String name) { switch (name) { @@ -24,16 +16,16 @@ AppTab _$appTabValueOf(String name) { case 'stats': return _$stats; default: - throw ArgumentError(name); + throw new ArgumentError(name); } } -final BuiltSet _$appTabValues = BuiltSet(const [ +final BuiltSet _$appTabValues = new BuiltSet(const [ _$todos, _$stats, ]); -Serializer _$appTabSerializer = _$AppTabSerializer(); +Serializer _$appTabSerializer = new _$AppTabSerializer(); class _$AppTabSerializer implements PrimitiveSerializer { @override @@ -51,3 +43,5 @@ class _$AppTabSerializer implements PrimitiveSerializer { {FullType specifiedType = FullType.unspecified}) => AppTab.valueOf(serialized as String); } + +// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new diff --git a/built_redux/lib/models/extra_actions.g.dart b/built_redux/lib/models/extra_actions.g.dart index e678e33c..309b36b8 100644 --- a/built_redux/lib/models/extra_actions.g.dart +++ b/built_redux/lib/models/extra_actions.g.dart @@ -3,19 +3,12 @@ part of extra_actions; // ************************************************************************** -// Generator: BuiltValueGenerator +// BuiltValueGenerator // ************************************************************************** -// ignore_for_file: always_put_control_body_on_new_line -// ignore_for_file: annotate_overrides -// ignore_for_file: avoid_annotating_with_dynamic -// ignore_for_file: avoid_returning_this -// ignore_for_file: omit_local_variable_types -// ignore_for_file: prefer_expression_function_bodies -// ignore_for_file: sort_constructors_first - -const ExtraAction _$toggleAllComplete = ExtraAction._('toggleAllComplete'); -const ExtraAction _$clearCompleted = ExtraAction._('clearCompleted'); +const ExtraAction _$toggleAllComplete = + const ExtraAction._('toggleAllComplete'); +const ExtraAction _$clearCompleted = const ExtraAction._('clearCompleted'); ExtraAction _$extraActionValueOf(String name) { switch (name) { @@ -24,17 +17,17 @@ ExtraAction _$extraActionValueOf(String name) { case 'clearCompleted': return _$clearCompleted; default: - throw ArgumentError(name); + throw new ArgumentError(name); } } final BuiltSet _$extraActionValues = - BuiltSet(const [ + new BuiltSet(const [ _$toggleAllComplete, _$clearCompleted, ]); -Serializer _$extraActionSerializer = _$ExtraActionSerializer(); +Serializer _$extraActionSerializer = new _$ExtraActionSerializer(); class _$ExtraActionSerializer implements PrimitiveSerializer { @override @@ -52,3 +45,5 @@ class _$ExtraActionSerializer implements PrimitiveSerializer { {FullType specifiedType = FullType.unspecified}) => ExtraAction.valueOf(serialized as String); } + +// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new diff --git a/built_redux/lib/models/serializers.g.dart b/built_redux/lib/models/serializers.g.dart index ae587a0f..0eb437ee 100644 --- a/built_redux/lib/models/serializers.g.dart +++ b/built_redux/lib/models/serializers.g.dart @@ -3,23 +3,18 @@ part of serializers; // ************************************************************************** -// Generator: BuiltValueGenerator +// BuiltValueGenerator // ************************************************************************** -// ignore_for_file: always_put_control_body_on_new_line -// ignore_for_file: annotate_overrides -// ignore_for_file: avoid_annotating_with_dynamic -// ignore_for_file: avoid_returning_this -// ignore_for_file: omit_local_variable_types -// ignore_for_file: prefer_expression_function_bodies -// ignore_for_file: sort_constructors_first - -Serializers _$serializers = (Serializers().toBuilder() +Serializers _$serializers = (new Serializers().toBuilder() ..add(AppState.serializer) ..add(AppTab.serializer) ..add(ExtraAction.serializer) ..add(Todo.serializer) ..add(VisibilityFilter.serializer) - ..addBuilderFactory(const FullType(BuiltList, [FullType(Todo)]), - () => ListBuilder())) + ..addBuilderFactory( + const FullType(BuiltList, const [const FullType(Todo)]), + () => new ListBuilder())) .build(); + +// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new diff --git a/built_redux/lib/models/todo.g.dart b/built_redux/lib/models/todo.g.dart index a1c9b106..d59bf4b1 100644 --- a/built_redux/lib/models/todo.g.dart +++ b/built_redux/lib/models/todo.g.dart @@ -3,18 +3,10 @@ part of todo; // ************************************************************************** -// Generator: BuiltValueGenerator +// BuiltValueGenerator // ************************************************************************** -// ignore_for_file: always_put_control_body_on_new_line -// ignore_for_file: annotate_overrides -// ignore_for_file: avoid_annotating_with_dynamic -// ignore_for_file: avoid_returning_this -// ignore_for_file: omit_local_variable_types -// ignore_for_file: prefer_expression_function_bodies -// ignore_for_file: sort_constructors_first - -Serializer _$todoSerializer = _$TodoSerializer(); +Serializer _$todoSerializer = new _$TodoSerializer(); class _$TodoSerializer implements StructuredSerializer { @override @@ -23,7 +15,7 @@ class _$TodoSerializer implements StructuredSerializer { final String wireName = 'Todo'; @override - Iterable serialize(Serializers serializers, Todo object, + Iterable serialize(Serializers serializers, Todo object, {FullType specifiedType = FullType.unspecified}) { final result = [ 'complete', @@ -41,9 +33,9 @@ class _$TodoSerializer implements StructuredSerializer { } @override - Todo deserialize(Serializers serializers, Iterable serialized, + Todo deserialize(Serializers serializers, Iterable serialized, {FullType specifiedType = FullType.unspecified}) { - final result = TodoBuilder(); + final result = new TodoBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -84,30 +76,36 @@ class _$Todo extends Todo { @override final String task; - factory _$Todo([void Function(TodoBuilder b) updates]) => - (TodoBuilder()..update(updates)).build(); + factory _$Todo([void Function(TodoBuilder) updates]) => + (new TodoBuilder()..update(updates)).build(); _$Todo._({this.complete, this.id, this.note, this.task}) : super._() { if (complete == null) { - throw BuiltValueNullFieldError('Todo', 'complete'); + throw new BuiltValueNullFieldError('Todo', 'complete'); + } + if (id == null) { + throw new BuiltValueNullFieldError('Todo', 'id'); + } + if (note == null) { + throw new BuiltValueNullFieldError('Todo', 'note'); + } + if (task == null) { + throw new BuiltValueNullFieldError('Todo', 'task'); } - if (id == null) throw BuiltValueNullFieldError('Todo', 'id'); - if (note == null) throw BuiltValueNullFieldError('Todo', 'note'); - if (task == null) throw BuiltValueNullFieldError('Todo', 'task'); } @override - Todo rebuild(void Function(TodoBuilder b) updates) => + Todo rebuild(void Function(TodoBuilder) updates) => (toBuilder()..update(updates)).build(); @override - TodoBuilder toBuilder() => TodoBuilder()..replace(this); + TodoBuilder toBuilder() => new TodoBuilder()..replace(this); @override - bool operator ==(dynamic other) { + bool operator ==(Object other) { if (identical(other, this)) return true; - if (other is! Todo) return false; - return complete == other.complete && + return other is Todo && + complete == other.complete && id == other.id && note == other.note && task == other.task; @@ -165,20 +163,24 @@ class TodoBuilder implements Builder { @override void replace(Todo other) { - if (other == null) throw ArgumentError.notNull('other'); + if (other == null) { + throw new ArgumentError.notNull('other'); + } _$v = other as _$Todo; } @override - void update(void Function(TodoBuilder b) updates) { + void update(void Function(TodoBuilder) updates) { if (updates != null) updates(this); } @override _$Todo build() { final _$result = - _$v ?? _$Todo._(complete: complete, id: id, note: note, task: task); + _$v ?? new _$Todo._(complete: complete, id: id, note: note, task: task); replace(_$result); return _$result; } } + +// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new diff --git a/built_redux/lib/models/visibility_filter.g.dart b/built_redux/lib/models/visibility_filter.g.dart index 56773185..d8bab605 100644 --- a/built_redux/lib/models/visibility_filter.g.dart +++ b/built_redux/lib/models/visibility_filter.g.dart @@ -3,20 +3,12 @@ part of visibility_filter; // ************************************************************************** -// Generator: BuiltValueGenerator +// BuiltValueGenerator // ************************************************************************** -// ignore_for_file: always_put_control_body_on_new_line -// ignore_for_file: annotate_overrides -// ignore_for_file: avoid_annotating_with_dynamic -// ignore_for_file: avoid_returning_this -// ignore_for_file: omit_local_variable_types -// ignore_for_file: prefer_expression_function_bodies -// ignore_for_file: sort_constructors_first - -const VisibilityFilter _$all = VisibilityFilter._('all'); -const VisibilityFilter _$active = VisibilityFilter._('active'); -const VisibilityFilter _$completed = VisibilityFilter._('completed'); +const VisibilityFilter _$all = const VisibilityFilter._('all'); +const VisibilityFilter _$active = const VisibilityFilter._('active'); +const VisibilityFilter _$completed = const VisibilityFilter._('completed'); VisibilityFilter _$visibilityFilterValueOf(String name) { switch (name) { @@ -27,19 +19,19 @@ VisibilityFilter _$visibilityFilterValueOf(String name) { case 'completed': return _$completed; default: - throw ArgumentError(name); + throw new ArgumentError(name); } } final BuiltSet _$visibilityFilterValues = - BuiltSet(const [ + new BuiltSet(const [ _$all, _$active, _$completed, ]); Serializer _$visibilityFilterSerializer = - _$VisibilityFilterSerializer(); + new _$VisibilityFilterSerializer(); class _$VisibilityFilterSerializer implements PrimitiveSerializer { @@ -58,3 +50,5 @@ class _$VisibilityFilterSerializer {FullType specifiedType = FullType.unspecified}) => VisibilityFilter.valueOf(serialized as String); } + +// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new diff --git a/built_redux/pubspec.yaml b/built_redux/pubspec.yaml index 2ee444e4..b0159388 100644 --- a/built_redux/pubspec.yaml +++ b/built_redux/pubspec.yaml @@ -19,10 +19,10 @@ environment: dependencies: flutter: sdk: flutter - flutter_built_redux: ^0.6.0 - built_redux: ^7.4.5 - built_value: ^6.3.1 - built_collection: ^4.1.0 + flutter_built_redux: + built_redux: + built_value: + built_collection: todos_app_core: path: ../todos_app_core @@ -32,10 +32,10 @@ dev_dependencies: flutter_driver: sdk: flutter test: - build: ^1.2.1 - build_runner: ^1.2.8 - built_value_generator: ^6.1.0 - source_gen: ^0.9.0+1 + build: + build_runner: + built_value_generator: + source_gen: mockito: integration_tests: path: ../integration_tests From 6086109007c8c0d8b77900ce5af52c446ee082bf Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Fri, 10 Jan 2020 16:21:42 +0100 Subject: [PATCH 22/77] Add example to website --- index.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/index.html b/index.html index 6e24d625..53f7ec3e 100644 --- a/index.html +++ b/index.html @@ -230,6 +230,9 @@

Samples

  • Mobx
  • +
  • + ChangeNotifier + Provider +
  • From f4aa3f017cb2c2cf61144e3cfded5990bec667f9 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Fri, 10 Jan 2020 19:07:30 +0100 Subject: [PATCH 23/77] Fix ios build of change notifier provider sample --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3aab3f97..eb832b00 100644 --- a/.travis.yml +++ b/.travis.yml @@ -287,7 +287,7 @@ jobs: script: travis_retry ./scripts/ci.sh ./change_notifier_provider - <<: *integration-test os: osx - osx_image: xcode8.0 + osx_image: xcode11.3 env: change_notifier_provider_ios before_install: *before_install_osx script: travis_retry ./scripts/ci.sh ./change_notifier_provider From ede8196908931e085cec78ddc13328394235c8c0 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Fri, 10 Jan 2020 19:13:31 +0100 Subject: [PATCH 24/77] Try updated version of scoped model --- scoped_model/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scoped_model/pubspec.yaml b/scoped_model/pubspec.yaml index cd7bfa12..6087b730 100644 --- a/scoped_model/pubspec.yaml +++ b/scoped_model/pubspec.yaml @@ -19,7 +19,7 @@ environment: dependencies: flutter: sdk: flutter - scoped_model: ^0.3.0 + scoped_model: ^1.0.1 todos_repository_simple: path: ../todos_repository_simple todos_app_core: From e9826926871966a44cb1bf391d8c6ed4c752bf09 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Thu, 9 Jan 2020 21:04:38 +0100 Subject: [PATCH 25/77] Add local storage repository --- ...epository.dart => flutter_repository.dart} | 0 .../lib/src/local_storage.dart | 34 +++++++++++++ .../lib/src/local_storage_repository.dart | 51 +++++++++++++++++++ .../lib/todos_repository_simple.dart | 2 +- todos_repository_simple/pubspec.yaml | 1 + 5 files changed, 87 insertions(+), 1 deletion(-) rename todos_repository_simple/lib/src/{repository.dart => flutter_repository.dart} (100%) create mode 100644 todos_repository_simple/lib/src/local_storage.dart create mode 100644 todos_repository_simple/lib/src/local_storage_repository.dart diff --git a/todos_repository_simple/lib/src/repository.dart b/todos_repository_simple/lib/src/flutter_repository.dart similarity index 100% rename from todos_repository_simple/lib/src/repository.dart rename to todos_repository_simple/lib/src/flutter_repository.dart diff --git a/todos_repository_simple/lib/src/local_storage.dart b/todos_repository_simple/lib/src/local_storage.dart new file mode 100644 index 00000000..51fd663f --- /dev/null +++ b/todos_repository_simple/lib/src/local_storage.dart @@ -0,0 +1,34 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:convert'; + +import 'package:key_value_store/key_value_store.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +/// Loads and saves a List of Todos using a provided KeyValueStore, which works +/// on mobile and web. +class LocalStorage { + final String tag; + final KeyValueStore store; + final JsonCodec codec; + + const LocalStorage(this.tag, this.store, [this.codec = json]); + + List loadTodos() { + return codec + .decode(store.getString(tag))['todos'] + .map(TodoEntity.fromJson) + .toList(growable: false); + } + + Future saveTodos(List todos) { + return store.setString( + tag, + codec.encode({ + 'todos': todos.map((todo) => todo.toJson()).toList(), + }), + ); + } +} diff --git a/todos_repository_simple/lib/src/local_storage_repository.dart b/todos_repository_simple/lib/src/local_storage_repository.dart new file mode 100644 index 00000000..eb1e0b64 --- /dev/null +++ b/todos_repository_simple/lib/src/local_storage_repository.dart @@ -0,0 +1,51 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; +import 'dart:core'; + +import 'package:meta/meta.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; +import 'package:todos_repository_simple/src/local_storage.dart'; + +import 'web_client.dart'; + +/// A class that glues together our local storage and web client. It has a +/// clear responsibility: Load Todos and Persist todos. +/// +/// It interacts with the LocalStorage class which can be used for either web +/// or mobile. +class LocalStorageRepository implements TodosRepository { + final LocalStorage localStorage; + final WebClient webClient; + + const LocalStorageRepository({ + @required this.localStorage, + this.webClient = const WebClient(), + }); + + /// Loads todos first from File storage. If they don't exist or encounter an + /// error, it attempts to load the Todos from a Web Client. + @override + Future> loadTodos() async { + try { + return localStorage.loadTodos(); + } catch (e) { + final todos = await webClient.fetchTodos(); + + await localStorage.saveTodos(todos); + + return todos; + } + } + + // Persists todos to local disk and the web + @override + Future> saveTodos(List todos) { + return Future.wait([ + localStorage.saveTodos(todos), + webClient.postTodos(todos), + ]); + } +} diff --git a/todos_repository_simple/lib/todos_repository_simple.dart b/todos_repository_simple/lib/todos_repository_simple.dart index 11eee072..56e83581 100644 --- a/todos_repository_simple/lib/todos_repository_simple.dart +++ b/todos_repository_simple/lib/todos_repository_simple.dart @@ -6,5 +6,5 @@ library todos_repository_simple; export 'src/file_storage.dart'; export 'src/reactive_repository.dart'; -export 'src/repository.dart'; +export 'src/flutter_repository.dart'; export 'src/web_client.dart'; diff --git a/todos_repository_simple/pubspec.yaml b/todos_repository_simple/pubspec.yaml index 7921c74c..c100ac00 100644 --- a/todos_repository_simple/pubspec.yaml +++ b/todos_repository_simple/pubspec.yaml @@ -10,6 +10,7 @@ dependencies: todos_repository_core: path: ../todos_repository_core rxdart: ^0.23.1 + key_value_store: dev_dependencies: test: From 5c81c6a83554f32241f7f9af9426919da81130b7 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Thu, 9 Jan 2020 21:40:43 +0100 Subject: [PATCH 26/77] Add web support to mobx example --- mobx/lib/app.dart | 47 +++++++++++++++ mobx/lib/main.dart | 60 ++++--------------- mobx/lib/main_web.dart | 20 +++++++ mobx/pubspec.yaml | 3 + .../lib/src/local_storage.dart | 9 +-- .../lib/todos_repository_simple.dart | 2 + 6 files changed, 89 insertions(+), 52 deletions(-) create mode 100644 mobx/lib/app.dart create mode 100644 mobx/lib/main_web.dart diff --git a/mobx/lib/app.dart b/mobx/lib/app.dart new file mode 100644 index 00000000..4ff3841e --- /dev/null +++ b/mobx/lib/app.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; +import 'package:mobx_sample/add_todo_screen.dart'; +import 'package:mobx_sample/localization.dart'; +import 'package:mobx_sample/models/todo.dart'; +import 'package:mobx_sample/stores/todo_store.dart'; +import 'package:provider/provider.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +import 'home/home_screen.dart'; + +class MobxApp extends StatelessWidget { + final TodosRepository repository; + + const MobxApp({Key key, @required this.repository}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Provider( + create: (_) { + final store = TodoStore(repository)..init(); + + return store; + }, + dispose: (_, store) => store.dispose(), // Clean up after we're done + child: MaterialApp( + initialRoute: ArchSampleRoutes.home, + theme: ArchSampleTheme.theme, + localizationsDelegates: [ + MobxLocalizationsDelegate(), + ArchSampleLocalizationsDelegate(), + ], + routes: { + ArchSampleRoutes.home: (context) => const HomeScreen(), + ArchSampleRoutes.addTodo: (context) { + return AddTodoScreen( + onAdd: (Todo todo) { + Provider.of(context, listen: false).todos.add(todo); + Navigator.pop(context); + }, + ); + } + }, + ), + ); + } +} diff --git a/mobx/lib/main.dart b/mobx/lib/main.dart index 389b9ddd..0b9475db 100644 --- a/mobx/lib/main.dart +++ b/mobx/lib/main.dart @@ -1,57 +1,21 @@ import 'package:flutter/material.dart'; -import 'package:mobx_sample/add_todo_screen.dart'; -import 'package:mobx_sample/localization.dart'; -import 'package:mobx_sample/models/todo.dart'; -import 'package:mobx_sample/stores/todo_store.dart'; -import 'package:path_provider/path_provider.dart'; -import 'package:provider/provider.dart'; -import 'package:todos_app_core/todos_app_core.dart'; +import 'package:key_value_store_flutter/key_value_store_flutter.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:todos_repository_simple/todos_repository_simple.dart'; -import 'home/home_screen.dart'; +import 'app.dart'; -void main() => runApp(const MyApp()); +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); -class MyApp extends StatelessWidget { - const MyApp(); - - @override - Widget build(BuildContext context) { - return Provider( - create: (_) { - final store = TodoStore( - const TodosRepositoryFlutter( - fileStorage: FileStorage( - '__mobx_local_storage__', - getApplicationDocumentsDirectory, - ), + runApp( + MobxApp( + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'mobx_todos', + FlutterKeyValueStore(await SharedPreferences.getInstance()), ), - ); - - store.init(); - - return store; - }, - dispose: (_, store) => store.dispose(), // Clean up after we're done - child: MaterialApp( - initialRoute: ArchSampleRoutes.home, - theme: ArchSampleTheme.theme, - localizationsDelegates: [ - MobxLocalizationsDelegate(), - ArchSampleLocalizationsDelegate(), - ], - routes: { - ArchSampleRoutes.home: (context) => const HomeScreen(), - ArchSampleRoutes.addTodo: (context) { - return AddTodoScreen( - onAdd: (Todo todo) { - Provider.of(context, listen: false).todos.add(todo); - Navigator.pop(context); - }, - ); - } - }, + ), ), ); - } } diff --git a/mobx/lib/main_web.dart b/mobx/lib/main_web.dart new file mode 100644 index 00000000..7b5d8806 --- /dev/null +++ b/mobx/lib/main_web.dart @@ -0,0 +1,20 @@ +import 'dart:html'; + +import 'package:flutter/material.dart'; +import 'package:key_value_store_web/key_value_store_web.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; + +import 'app.dart'; + +Future main() async { + runApp( + MobxApp( + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'mobx_todos', + WebKeyValueStore(window.localStorage), + ), + ), + ), + ); +} diff --git a/mobx/pubspec.yaml b/mobx/pubspec.yaml index d2d189c2..73d99332 100644 --- a/mobx/pubspec.yaml +++ b/mobx/pubspec.yaml @@ -29,6 +29,9 @@ dependencies: path: ../todos_app_core flutter: sdk: flutter + key_value_store_flutter: + key_value_store_web: + shared_preferences: dev_dependencies: mobx_codegen: ^0.4.0+1 diff --git a/todos_repository_simple/lib/src/local_storage.dart b/todos_repository_simple/lib/src/local_storage.dart index 51fd663f..b0506022 100644 --- a/todos_repository_simple/lib/src/local_storage.dart +++ b/todos_repository_simple/lib/src/local_storage.dart @@ -10,22 +10,23 @@ import 'package:todos_repository_core/todos_repository_core.dart'; /// Loads and saves a List of Todos using a provided KeyValueStore, which works /// on mobile and web. class LocalStorage { - final String tag; + final String key; final KeyValueStore store; final JsonCodec codec; - const LocalStorage(this.tag, this.store, [this.codec = json]); + const LocalStorage(this.key, this.store, [this.codec = json]); List loadTodos() { return codec - .decode(store.getString(tag))['todos'] + .decode(store.getString(key))['todos'] + .cast>() .map(TodoEntity.fromJson) .toList(growable: false); } Future saveTodos(List todos) { return store.setString( - tag, + key, codec.encode({ 'todos': todos.map((todo) => todo.toJson()).toList(), }), diff --git a/todos_repository_simple/lib/todos_repository_simple.dart b/todos_repository_simple/lib/todos_repository_simple.dart index 56e83581..c4564483 100644 --- a/todos_repository_simple/lib/todos_repository_simple.dart +++ b/todos_repository_simple/lib/todos_repository_simple.dart @@ -8,3 +8,5 @@ export 'src/file_storage.dart'; export 'src/reactive_repository.dart'; export 'src/flutter_repository.dart'; export 'src/web_client.dart'; +export 'src/local_storage.dart'; +export 'src/local_storage_repository.dart'; From c4cd196fa1f5e9227c281ef03b59305aa87b5b2d Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Fri, 10 Jan 2020 01:31:28 +0100 Subject: [PATCH 27/77] Web version of bloc_flutter --- .gitignore | 72 +++++++++---------- bloc_flutter/.flutter-plugins-dependencies | 1 - bloc_flutter/lib/app.dart | 56 +++++++++++++++ bloc_flutter/lib/main.dart | 22 +++--- bloc_flutter/lib/main_firebase.dart | 17 +++-- bloc_flutter/lib/main_web.dart | 38 ++++++++++ bloc_flutter/lib/run_bloc_app.dart | 49 ------------- bloc_flutter/pubspec.yaml | 3 + bloc_flutter/web/index.html | 10 +++ mobx/.flutter-plugins-dependencies | 1 - mobx/pubspec.yaml | 1 - .../ios/Flutter/Generated.xcconfig | 7 -- .../ios/Runner/GeneratedPluginRegistrant.m | 12 ---- 13 files changed, 167 insertions(+), 122 deletions(-) delete mode 100644 bloc_flutter/.flutter-plugins-dependencies create mode 100644 bloc_flutter/lib/app.dart create mode 100644 bloc_flutter/lib/main_web.dart delete mode 100644 bloc_flutter/lib/run_bloc_app.dart create mode 100644 bloc_flutter/web/index.html delete mode 100644 mobx/.flutter-plugins-dependencies delete mode 100644 todos_repository_simple/ios/Flutter/Generated.xcconfig delete mode 100644 todos_repository_simple/ios/Runner/GeneratedPluginRegistrant.m diff --git a/.gitignore b/.gitignore index b58e010c..7af44141 100644 --- a/.gitignore +++ b/.gitignore @@ -49,44 +49,44 @@ lcov.info /build/ # Android related -**/android/**/gradle-wrapper.jar -**/android/.gradle -**/android/captures/ -**/android/gradlew -**/android/gradlew.bat -**/android/local.properties -**/android/**/GeneratedPluginRegistrant.java +**/*/android/**/gradle-wrapper.jar +**/*/android/.gradle +**/*/android/captures/ +**/*/android/gradlew +**/*/android/gradlew.bat +**/*/android/local.properties +**/*/android/**/GeneratedPluginRegistrant.java # iOS/XCode related -**/ios/**/*.mode1v3 -**/ios/**/*.mode2v3 -**/ios/**/*.moved-aside -**/ios/**/*.pbxuser -**/ios/**/*.perspectivev3 -**/ios/**/*sync/ -**/ios/**/.sconsign.dblite -**/ios/**/.tags* -**/ios/**/.vagrant/ -**/ios/**/DerivedData/ -**/ios/**/Icon? -**/ios/**/Pods/ -**/ios/**/.symlinks/ -**/ios/**/profile -**/ios/**/xcuserdata -**/ios/.generated/ -**/ios/Flutter/App.framework -**/ios/Flutter/Flutter.framework -**/ios/Flutter/Generated.xcconfig -**/ios/Flutter/app.flx -**/ios/Flutter/app.zip -**/ios/Flutter/flutter_assets/ -**/ios/Flutter/flutter_export_environment.sh -**/ios/ServiceDefinitions.json -**/ios/Runner/GeneratedPluginRegistrant.* +**/*/ios/**/*.mode1v3 +**/*/ios/**/*.mode2v3 +**/*/ios/**/*.moved-aside +**/*/ios/**/*.pbxuser +**/*/ios/**/*.perspectivev3 +**/*/ios/**/*sync/ +**/*/ios/**/.sconsign.dblite +**/*/ios/**/.tags* +**/*/ios/**/.vagrant/ +**/*/ios/**/DerivedData/ +**/*/ios/**/Icon? +**/*/ios/**/Pods/ +**/*/ios/**/.symlinks/ +**/*/ios/**/profile +**/*/ios/**/xcuserdata +**/*/ios/.generated/ +**/*/ios/Flutter/App.framework +**/*/ios/Flutter/Flutter.framework +**/*/ios/Flutter/Generated.xcconfig +**/*/ios/Flutter/app.flx +**/*/ios/Flutter/app.zip +**/*/ios/Flutter/flutter_assets/ +**/*/ios/Flutter/flutter_export_environment.sh +**/*/ios/ServiceDefinitions.json +**/*/ios/Runner/GeneratedPluginRegistrant.* **/.flutter-plugins-dependencies # Exceptions to above rules. -!**/ios/**/default.mode1v3 -!**/ios/**/default.mode2v3 -!**/ios/**/default.pbxuser -!**/ios/**/default.perspectivev3 +!**/*/ios/**/default.mode1v3 +!**/*/ios/**/default.mode2v3 +!**/*/ios/**/default.pbxuser +!**/*/ios/**/default.perspectivev3 diff --git a/bloc_flutter/.flutter-plugins-dependencies b/bloc_flutter/.flutter-plugins-dependencies deleted file mode 100644 index 135b8721..00000000 --- a/bloc_flutter/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core"]},{"name":"firebase_auth","dependencies":["firebase_core","firebase_auth_web"]},{"name":"firebase_auth_web","dependencies":[]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"path_provider","dependencies":[]}]} \ No newline at end of file diff --git a/bloc_flutter/lib/app.dart b/bloc_flutter/lib/app.dart new file mode 100644 index 00000000..0c72a5a0 --- /dev/null +++ b/bloc_flutter/lib/app.dart @@ -0,0 +1,56 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:bloc_flutter_sample/dependency_injection.dart'; +import 'package:bloc_flutter_sample/localization.dart'; +import 'package:bloc_flutter_sample/screens/add_edit_screen.dart'; +import 'package:bloc_flutter_sample/screens/home_screen.dart'; +import 'package:bloc_flutter_sample/widgets/todos_bloc_provider.dart'; +import 'package:blocs/blocs.dart'; +import 'package:flutter/material.dart'; +import 'package:meta/meta.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +class BlocApp extends StatelessWidget { + final TodosInteractor todosInteractor; + final UserRepository userRepository; + + const BlocApp({ + Key key, + @required this.todosInteractor, + @required this.userRepository, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Injector( + todosInteractor: todosInteractor, + userRepository: userRepository, + child: TodosBlocProvider( + bloc: TodosListBloc(todosInteractor), + child: MaterialApp( + title: BlocLocalizations().appTitle, + theme: ArchSampleTheme.theme, + localizationsDelegates: [ + ArchSampleLocalizationsDelegate(), + InheritedWidgetLocalizationsDelegate(), + ], + routes: { + ArchSampleRoutes.home: (context) { + return HomeScreen( + repository: Injector.of(context).userRepository, + ); + }, + ArchSampleRoutes.addTodo: (context) { + return AddEditScreen( + addTodo: TodosBlocProvider.of(context).addTodo.add, + ); + }, + }, + ), + ), + ); + } +} diff --git a/bloc_flutter/lib/main.dart b/bloc_flutter/lib/main.dart index c5dd2475..47582ef1 100644 --- a/bloc_flutter/lib/main.dart +++ b/bloc_flutter/lib/main.dart @@ -4,26 +4,30 @@ import 'dart:async'; -import 'package:bloc_flutter_sample/run_bloc_app.dart'; +import 'package:bloc_flutter_sample/app.dart'; import 'package:blocs/blocs.dart'; -import 'package:path_provider/path_provider.dart'; +import 'package:flutter/widgets.dart'; +import 'package:key_value_store_flutter/key_value_store_flutter.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; import 'package:todos_repository_simple/todos_repository_simple.dart'; -void main() { - runBlocApp( +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + + runApp(BlocApp( todosInteractor: TodosInteractor( ReactiveTodosRepositoryFlutter( - repository: TodosRepositoryFlutter( - fileStorage: FileStorage( - '__bloc_local_storage', - getApplicationDocumentsDirectory, + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'bloc_todos', + FlutterKeyValueStore(await SharedPreferences.getInstance()), ), ), ), ), userRepository: AnonymousUserRepository(), - ); + )); } class AnonymousUserRepository implements UserRepository { diff --git a/bloc_flutter/lib/main_firebase.dart b/bloc_flutter/lib/main_firebase.dart index 13835f02..8bc05b4e 100644 --- a/bloc_flutter/lib/main_firebase.dart +++ b/bloc_flutter/lib/main_firebase.dart @@ -2,18 +2,23 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:bloc_flutter_sample/run_bloc_app.dart'; +import 'package:bloc_flutter_sample/app.dart'; import 'package:blocs/blocs.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_flutter_repository/reactive_todos_repository.dart'; import 'package:firebase_flutter_repository/user_repository.dart'; +import 'package:flutter/widgets.dart'; void main() { - runBlocApp( - todosInteractor: TodosInteractor( - FirestoreReactiveTodosRepository(Firestore.instance), - ), - userRepository: FirebaseUserRepository(FirebaseAuth.instance), + WidgetsFlutterBinding.ensureInitialized(); + + runApp( + BlocApp( + todosInteractor: TodosInteractor( + FirestoreReactiveTodosRepository(Firestore.instance), + ), + userRepository: FirebaseUserRepository(FirebaseAuth.instance), + ) ); } diff --git a/bloc_flutter/lib/main_web.dart b/bloc_flutter/lib/main_web.dart new file mode 100644 index 00000000..a249c2e6 --- /dev/null +++ b/bloc_flutter/lib/main_web.dart @@ -0,0 +1,38 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; +import 'dart:html'; + +import 'package:bloc_flutter_sample/app.dart'; +import 'package:blocs/blocs.dart'; +import 'package:flutter/widgets.dart'; +import 'package:key_value_store_web/key_value_store_web.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; + +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + + runApp(BlocApp( + todosInteractor: TodosInteractor( + ReactiveTodosRepositoryFlutter( + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'bloc_todos', + WebKeyValueStore(window.localStorage), + ), + ), + ), + ), + userRepository: AnonymousUserRepository(), + )); +} + +class AnonymousUserRepository implements UserRepository { + @override + Future login() { + return Future.value(UserEntity(id: 'anonymous')); + } +} diff --git a/bloc_flutter/lib/run_bloc_app.dart b/bloc_flutter/lib/run_bloc_app.dart deleted file mode 100644 index 239326fd..00000000 --- a/bloc_flutter/lib/run_bloc_app.dart +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'package:bloc_flutter_sample/dependency_injection.dart'; -import 'package:bloc_flutter_sample/localization.dart'; -import 'package:bloc_flutter_sample/screens/add_edit_screen.dart'; -import 'package:bloc_flutter_sample/screens/home_screen.dart'; -import 'package:bloc_flutter_sample/widgets/todos_bloc_provider.dart'; -import 'package:blocs/blocs.dart'; -import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; -import 'package:meta/meta.dart'; -import 'package:todos_repository_core/todos_repository_core.dart'; - -void runBlocApp({ - @required TodosInteractor todosInteractor, - @required UserRepository userRepository, -}) { - WidgetsFlutterBinding.ensureInitialized(); - - runApp(Injector( - todosInteractor: todosInteractor, - userRepository: userRepository, - child: TodosBlocProvider( - bloc: TodosListBloc(todosInteractor), - child: MaterialApp( - title: BlocLocalizations().appTitle, - theme: ArchSampleTheme.theme, - localizationsDelegates: [ - ArchSampleLocalizationsDelegate(), - InheritedWidgetLocalizationsDelegate(), - ], - routes: { - ArchSampleRoutes.home: (context) { - return HomeScreen( - repository: Injector.of(context).userRepository, - ); - }, - ArchSampleRoutes.addTodo: (context) { - return AddEditScreen( - addTodo: TodosBlocProvider.of(context).addTodo.add, - ); - }, - }, - ), - ), - )); -} diff --git a/bloc_flutter/pubspec.yaml b/bloc_flutter/pubspec.yaml index 572e8114..5324b264 100644 --- a/bloc_flutter/pubspec.yaml +++ b/bloc_flutter/pubspec.yaml @@ -28,6 +28,9 @@ dependencies: blocs: path: ../blocs rxdart: ^0.23.1 + key_value_store_flutter: + key_value_store_web: + shared_preferences: dev_dependencies: flutter_test: diff --git a/bloc_flutter/web/index.html b/bloc_flutter/web/index.html new file mode 100644 index 00000000..f99ea3a2 --- /dev/null +++ b/bloc_flutter/web/index.html @@ -0,0 +1,10 @@ + + + + + bloc_flutter + + + + + diff --git a/mobx/.flutter-plugins-dependencies b/mobx/.flutter-plugins-dependencies deleted file mode 100644 index 17d9de06..00000000 --- a/mobx/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"path_provider","dependencies":[]}]} \ No newline at end of file diff --git a/mobx/pubspec.yaml b/mobx/pubspec.yaml index 73d99332..764b0e48 100644 --- a/mobx/pubspec.yaml +++ b/mobx/pubspec.yaml @@ -20,7 +20,6 @@ dependencies: mobx: ^0.4.0 flutter_mobx: ^0.3.0 provider: ^4.0.0 - path_provider: todos_repository_simple: path: ../todos_repository_simple todos_repository_core: diff --git a/todos_repository_simple/ios/Flutter/Generated.xcconfig b/todos_repository_simple/ios/Flutter/Generated.xcconfig deleted file mode 100644 index 5f57805e..00000000 --- a/todos_repository_simple/ios/Flutter/Generated.xcconfig +++ /dev/null @@ -1,7 +0,0 @@ -// This is a generated file; do not edit or check into version control. -FLUTTER_ROOT=/Users/jenkins/Library/flutter -FLUTTER_APPLICATION_PATH=/Users/jenkins/dev/github.com/mmcc007/flutter_architecture_samples/example/todos_repository_simple -FLUTTER_TARGET=lib/main.dart -FLUTTER_BUILD_DIR=build -SYMROOT=${SOURCE_ROOT}/../build/ios -FLUTTER_FRAMEWORK_DIR=/Users/jenkins/Library/flutter/bin/cache/artifacts/engine/ios diff --git a/todos_repository_simple/ios/Runner/GeneratedPluginRegistrant.m b/todos_repository_simple/ios/Runner/GeneratedPluginRegistrant.m deleted file mode 100644 index 60dfa42b..00000000 --- a/todos_repository_simple/ios/Runner/GeneratedPluginRegistrant.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// Generated file. Do not edit. -// - -#import "GeneratedPluginRegistrant.h" - -@implementation GeneratedPluginRegistrant - -+ (void)registerWithRegistry:(NSObject*)registry { -} - -@end From b2abff4efb22d59bb1a2e120d47cebc81ae38185 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 01:32:38 +0100 Subject: [PATCH 28/77] Add web version of change_notifier_provider sample --- bloc_flutter/lib/app.dart | 2 +- bloc_library/lib/main.dart | 15 ++++++------- built_redux/lib/main.dart | 5 +++-- change_notifier_provider/lib/main.dart | 21 +++++++++---------- change_notifier_provider/lib/main_web.dart | 21 +++++++++++++++++++ change_notifier_provider/pubspec.yaml | 3 +++ firestore_redux/lib/main.dart | 3 ++- frideos_library/lib/main.dart | 7 ++----- inherited_widget/lib/app.dart | 5 +++-- mvi_flutter/lib/run_mvi_app.dart | 2 +- redux/lib/main.dart | 2 +- scoped_model/lib/app.dart | 5 +++-- simple_bloc_flutter/lib/run_firebase_app.dart | 4 ++-- vanilla/lib/app.dart | 2 +- 14 files changed, 61 insertions(+), 36 deletions(-) create mode 100644 change_notifier_provider/lib/main_web.dart diff --git a/bloc_flutter/lib/app.dart b/bloc_flutter/lib/app.dart index 0c72a5a0..44f322e9 100644 --- a/bloc_flutter/lib/app.dart +++ b/bloc_flutter/lib/app.dart @@ -31,7 +31,7 @@ class BlocApp extends StatelessWidget { child: TodosBlocProvider( bloc: TodosListBloc(todosInteractor), child: MaterialApp( - title: BlocLocalizations().appTitle, + onGenerateTitle: (context) => BlocLocalizations.of(context).appTitle, theme: ArchSampleTheme.theme, localizationsDelegates: [ ArchSampleLocalizationsDelegate(), diff --git a/bloc_library/lib/main.dart b/bloc_library/lib/main.dart index 1164d217..b014bc7a 100644 --- a/bloc_library/lib/main.dart +++ b/bloc_library/lib/main.dart @@ -2,16 +2,16 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:flutter/material.dart'; import 'package:bloc/bloc.dart'; -import 'package:path_provider/path_provider.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; -import 'package:todos_app_core/todos_app_core.dart'; -import 'package:bloc_library/localization.dart'; import 'package:bloc_library/blocs/blocs.dart'; +import 'package:bloc_library/localization.dart'; import 'package:bloc_library/models/models.dart'; import 'package:bloc_library/screens/screens.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; void main() { // BlocSupervisor oversees Blocs and delegates to BlocDelegate. @@ -40,7 +40,8 @@ class TodosApp extends StatelessWidget { Widget build(BuildContext context) { final todosBloc = BlocProvider.of(context); return MaterialApp( - title: FlutterBlocLocalizations().appTitle, + onGenerateTitle: (context) => + FlutterBlocLocalizations.of(context).appTitle, theme: ArchSampleTheme.theme, localizationsDelegates: [ ArchSampleLocalizationsDelegate(), diff --git a/built_redux/lib/main.dart b/built_redux/lib/main.dart index 1801b2e0..bbf0e2b0 100644 --- a/built_redux/lib/main.dart +++ b/built_redux/lib/main.dart @@ -13,8 +13,8 @@ import 'package:built_redux_sample/models/models.dart'; import 'package:built_redux_sample/presentation/home_screen.dart'; import 'package:built_redux_sample/reducers/reducers.dart'; import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; import 'package:flutter_built_redux/flutter_built_redux.dart'; +import 'package:todos_app_core/todos_app_core.dart'; void main() { runApp(BuiltReduxApp()); @@ -53,7 +53,8 @@ class BuiltReduxAppState extends State { return ReduxProvider( store: store, child: MaterialApp( - title: BuiltReduxLocalizations().appTitle, + onGenerateTitle: (context) => + BuiltReduxLocalizations.of(context).appTitle, theme: ArchSampleTheme.theme, localizationsDelegates: [ ArchSampleLocalizationsDelegate(), diff --git a/change_notifier_provider/lib/main.dart b/change_notifier_provider/lib/main.dart index 4815feb6..97ca0681 100644 --- a/change_notifier_provider/lib/main.dart +++ b/change_notifier_provider/lib/main.dart @@ -2,20 +2,19 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:flutter/material.dart'; -import 'package:path_provider/path_provider.dart'; import 'package:change_notifier_provider_sample/app.dart'; +import 'package:flutter/material.dart'; +import 'package:key_value_store_flutter/key_value_store_flutter.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:todos_repository_simple/todos_repository_simple.dart'; -void main() { - const todoRepo = TodosRepositoryFlutter( - fileStorage: FileStorage( - 'provider_todos', - getApplicationDocumentsDirectory, - ), - ); - +Future main() async { runApp(ProviderApp( - repository: todoRepo, + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'mobx_todos', + FlutterKeyValueStore(await SharedPreferences.getInstance()), + ), + ), )); } diff --git a/change_notifier_provider/lib/main_web.dart b/change_notifier_provider/lib/main_web.dart new file mode 100644 index 00000000..482eb102 --- /dev/null +++ b/change_notifier_provider/lib/main_web.dart @@ -0,0 +1,21 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:html'; + +import 'package:change_notifier_provider_sample/app.dart'; +import 'package:flutter/material.dart'; +import 'package:key_value_store_web/key_value_store_web.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; + +Future main() async { + runApp(ProviderApp( + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'mobx_todos', + WebKeyValueStore(window.localStorage), + ), + ), + )); +} diff --git a/change_notifier_provider/pubspec.yaml b/change_notifier_provider/pubspec.yaml index 6ec01911..63323d7a 100644 --- a/change_notifier_provider/pubspec.yaml +++ b/change_notifier_provider/pubspec.yaml @@ -24,6 +24,9 @@ dependencies: path: ../todos_app_core flutter: sdk: flutter + key_value_store_flutter: + key_value_store_web: + shared_preferences: dev_dependencies: mockito: diff --git a/firestore_redux/lib/main.dart b/firestore_redux/lib/main.dart index 59e9fc6a..2482ffbe 100644 --- a/firestore_redux/lib/main.dart +++ b/firestore_redux/lib/main.dart @@ -50,7 +50,8 @@ class ReduxApp extends StatelessWidget { return StoreProvider( store: store, child: MaterialApp( - title: FirestoreReduxLocalizations().appTitle, + onGenerateTitle: (context) => + FirestoreReduxLocalizations.of(context).appTitle, theme: ArchSampleTheme.theme, localizationsDelegates: [ ArchSampleLocalizationsDelegate(), diff --git a/frideos_library/lib/main.dart b/frideos_library/lib/main.dart index bbdb4ccd..909d6f94 100644 --- a/frideos_library/lib/main.dart +++ b/frideos_library/lib/main.dart @@ -1,13 +1,10 @@ import 'package:flutter/material.dart'; - -import 'package:todos_app_core/todos_app_core.dart'; - import 'package:frideos/frideos.dart'; - import 'package:frideos_library/app_state.dart'; import 'package:frideos_library/localization.dart'; import 'package:frideos_library/screens/add_edit_screen.dart'; import 'package:frideos_library/screens/homescreen.dart'; +import 'package:todos_app_core/todos_app_core.dart'; void main() { runApp(FrideosApp()); @@ -21,7 +18,7 @@ class FrideosApp extends StatelessWidget { return AppStateProvider( appState: appState, child: MaterialApp( - title: FrideosLocalizations().appTitle, + onGenerateTitle: (context) => FrideosLocalizations.of(context).appTitle, theme: ArchSampleTheme.theme, localizationsDelegates: [ ArchSampleLocalizationsDelegate(), diff --git a/inherited_widget/lib/app.dart b/inherited_widget/lib/app.dart index 6c132b64..cb90e610 100644 --- a/inherited_widget/lib/app.dart +++ b/inherited_widget/lib/app.dart @@ -3,16 +3,17 @@ // in the LICENSE file. import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; import 'package:inherited_widget_sample/localization.dart'; import 'package:inherited_widget_sample/screens/add_edit_screen.dart'; import 'package:inherited_widget_sample/screens/home_screen.dart'; +import 'package:todos_app_core/todos_app_core.dart'; class InheritedWidgetApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - title: InheritedWidgetLocalizations().appTitle, + onGenerateTitle: (context) => + InheritedWidgetLocalizations.of(context).appTitle, theme: ArchSampleTheme.theme, localizationsDelegates: [ ArchSampleLocalizationsDelegate(), diff --git a/mvi_flutter/lib/run_mvi_app.dart b/mvi_flutter/lib/run_mvi_app.dart index d6733eb0..aa4ce817 100644 --- a/mvi_flutter/lib/run_mvi_app.dart +++ b/mvi_flutter/lib/run_mvi_app.dart @@ -19,7 +19,7 @@ void runMviApp({ todosInteractor: todosRepository, userInteractor: userInteractor, child: MaterialApp( - title: BlocLocalizations().appTitle, + onGenerateTitle: (context) => BlocLocalizations.of(context).appTitle, theme: ArchSampleTheme.theme, localizationsDelegates: [ ArchSampleLocalizationsDelegate(), diff --git a/redux/lib/main.dart b/redux/lib/main.dart index 2fb3efa6..f5a68e91 100644 --- a/redux/lib/main.dart +++ b/redux/lib/main.dart @@ -30,7 +30,7 @@ class ReduxApp extends StatelessWidget { return StoreProvider( store: store, child: MaterialApp( - title: ReduxLocalizations().appTitle, + onGenerateTitle: (context) => ReduxLocalizations.of(context).appTitle, theme: ArchSampleTheme.theme, localizationsDelegates: [ ArchSampleLocalizationsDelegate(), diff --git a/scoped_model/lib/app.dart b/scoped_model/lib/app.dart index bb6783c8..1828cf85 100644 --- a/scoped_model/lib/app.dart +++ b/scoped_model/lib/app.dart @@ -3,13 +3,13 @@ // in the LICENSE file. import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; import 'package:meta/meta.dart'; import 'package:scoped_model/scoped_model.dart'; import 'package:scoped_model_sample/localization.dart'; import 'package:scoped_model_sample/screens/add_edit_screen.dart'; import 'package:scoped_model_sample/screens/home_screen.dart'; import 'package:scoped_model_sample/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; class ScopedModelApp extends StatelessWidget { @@ -22,7 +22,8 @@ class ScopedModelApp extends StatelessWidget { @override Widget build(BuildContext context) { var app = MaterialApp( - title: ScopedModelLocalizations().appTitle, + onGenerateTitle: (context) => + ScopedModelLocalizations.of(context).appTitle, theme: ArchSampleTheme.theme, localizationsDelegates: [ ArchSampleLocalizationsDelegate(), diff --git a/simple_bloc_flutter/lib/run_firebase_app.dart b/simple_bloc_flutter/lib/run_firebase_app.dart index e6ec90bb..9d27f437 100644 --- a/simple_bloc_flutter/lib/run_firebase_app.dart +++ b/simple_bloc_flutter/lib/run_firebase_app.dart @@ -3,7 +3,6 @@ // in the LICENSE file. import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; import 'package:meta/meta.dart'; import 'package:simple_bloc_flutter_sample/dependency_injection.dart'; import 'package:simple_bloc_flutter_sample/localization.dart'; @@ -11,6 +10,7 @@ import 'package:simple_bloc_flutter_sample/screens/add_edit_screen.dart'; import 'package:simple_bloc_flutter_sample/screens/home_screen.dart'; import 'package:simple_bloc_flutter_sample/widgets/todos_bloc_provider.dart'; import 'package:simple_blocs/simple_blocs.dart'; +import 'package:todos_app_core/todos_app_core.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; void runSimpleBlocApp({ @@ -23,7 +23,7 @@ void runSimpleBlocApp({ child: TodosBlocProvider( bloc: TodosListBloc(todosInteractor), child: MaterialApp( - title: BlocLocalizations().appTitle, + onGenerateTitle: (context) => BlocLocalizations.of(context).appTitle, theme: ArchSampleTheme.theme, localizationsDelegates: [ ArchSampleLocalizationsDelegate(), diff --git a/vanilla/lib/app.dart b/vanilla/lib/app.dart index b95aa41b..e544ba8f 100644 --- a/vanilla/lib/app.dart +++ b/vanilla/lib/app.dart @@ -45,7 +45,7 @@ class VanillaAppState extends State { @override Widget build(BuildContext context) { return MaterialApp( - title: VanillaLocalizations().appTitle, + onGenerateTitle: (context) => VanillaLocalizations.of(context).appTitle, theme: ArchSampleTheme.theme, localizationsDelegates: [ ArchSampleLocalizationsDelegate(), From 620a9c6eacf0f945b7500256b22433315cef6cbe Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 01:41:35 +0100 Subject: [PATCH 29/77] Add web version of inherited_widget sample --- inherited_widget/lib/app.dart | 2 ++ inherited_widget/lib/main.dart | 13 +++++++++++-- inherited_widget/lib/main_web.dart | 23 +++++++++++++++++++++++ inherited_widget/lib/state_container.dart | 9 +-------- inherited_widget/pubspec.yaml | 3 +++ inherited_widget/web/index.html | 10 ++++++++++ mobx/lib/main.dart | 8 ++------ 7 files changed, 52 insertions(+), 16 deletions(-) create mode 100644 inherited_widget/lib/main_web.dart create mode 100644 inherited_widget/web/index.html diff --git a/inherited_widget/lib/app.dart b/inherited_widget/lib/app.dart index cb90e610..6d7eb57b 100644 --- a/inherited_widget/lib/app.dart +++ b/inherited_widget/lib/app.dart @@ -9,6 +9,8 @@ import 'package:inherited_widget_sample/screens/home_screen.dart'; import 'package:todos_app_core/todos_app_core.dart'; class InheritedWidgetApp extends StatelessWidget { + const InheritedWidgetApp(); + @override Widget build(BuildContext context) { return MaterialApp( diff --git a/inherited_widget/lib/main.dart b/inherited_widget/lib/main.dart index 162e5872..c812fad6 100644 --- a/inherited_widget/lib/main.dart +++ b/inherited_widget/lib/main.dart @@ -5,9 +5,18 @@ import 'package:flutter/material.dart'; import 'package:inherited_widget_sample/app.dart'; import 'package:inherited_widget_sample/state_container.dart'; +import 'package:key_value_store_flutter/key_value_store_flutter.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; -void main() { +Future main() async { runApp(StateContainer( - child: InheritedWidgetApp(), + child: const InheritedWidgetApp(), + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'mobx_todos', + FlutterKeyValueStore(await SharedPreferences.getInstance()), + ), + ), )); } diff --git a/inherited_widget/lib/main_web.dart b/inherited_widget/lib/main_web.dart new file mode 100644 index 00000000..387ecf58 --- /dev/null +++ b/inherited_widget/lib/main_web.dart @@ -0,0 +1,23 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:html'; + +import 'package:flutter/material.dart'; +import 'package:inherited_widget_sample/app.dart'; +import 'package:inherited_widget_sample/state_container.dart'; +import 'package:key_value_store_web/key_value_store_web.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; + +void main() { + runApp(StateContainer( + child: const InheritedWidgetApp(), + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'mobx_todos', + WebKeyValueStore(window.localStorage), + ), + ), + )); +} diff --git a/inherited_widget/lib/state_container.dart b/inherited_widget/lib/state_container.dart index ad8ca0f0..77d7a51e 100644 --- a/inherited_widget/lib/state_container.dart +++ b/inherited_widget/lib/state_container.dart @@ -5,9 +5,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:inherited_widget_sample/models.dart'; -import 'package:path_provider/path_provider.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; class StateContainer extends StatefulWidget { final AppState state; @@ -16,12 +14,7 @@ class StateContainer extends StatefulWidget { StateContainer({ @required this.child, - this.repository = const TodosRepositoryFlutter( - fileStorage: FileStorage( - 'inherited_widget_sample', - getApplicationDocumentsDirectory, - ), - ), + this.repository, this.state, }); diff --git a/inherited_widget/pubspec.yaml b/inherited_widget/pubspec.yaml index 93761b18..7a5c5c61 100644 --- a/inherited_widget/pubspec.yaml +++ b/inherited_widget/pubspec.yaml @@ -23,6 +23,9 @@ dependencies: path: ../todos_repository_simple todos_app_core: path: ../todos_app_core + key_value_store_flutter: + key_value_store_web: + shared_preferences: dev_dependencies: flutter_test: diff --git a/inherited_widget/web/index.html b/inherited_widget/web/index.html new file mode 100644 index 00000000..6424b68b --- /dev/null +++ b/inherited_widget/web/index.html @@ -0,0 +1,10 @@ + + + + + inherited_widget + + + + + diff --git a/mobx/lib/main.dart b/mobx/lib/main.dart index 0b9475db..1996d882 100644 --- a/mobx/lib/main.dart +++ b/mobx/lib/main.dart @@ -10,12 +10,8 @@ Future main() async { runApp( MobxApp( - repository: LocalStorageRepository( - localStorage: LocalStorage( - 'mobx_todos', - FlutterKeyValueStore(await SharedPreferences.getInstance()), - ), - ), + repository: + , ), ); } From 1d94b7efdcbc162c76ae5c7cddc97cffe8304278 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 01:42:02 +0100 Subject: [PATCH 30/77] Revert mobx accident --- mobx/lib/main.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mobx/lib/main.dart b/mobx/lib/main.dart index 1996d882..0b9475db 100644 --- a/mobx/lib/main.dart +++ b/mobx/lib/main.dart @@ -10,8 +10,12 @@ Future main() async { runApp( MobxApp( - repository: - , + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'mobx_todos', + FlutterKeyValueStore(await SharedPreferences.getInstance()), + ), + ), ), ); } From bc106693b3d04b278350256681b1df5fd149c90a Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 01:55:58 +0100 Subject: [PATCH 31/77] Add web version of mvi sample --- change_notifier_provider/lib/main.dart | 2 +- change_notifier_provider/lib/main_web.dart | 2 +- inherited_widget/lib/main.dart | 2 +- inherited_widget/lib/main_web.dart | 2 +- mvi_flutter/lib/main.dart | 19 +++---- mvi_flutter/lib/main_firebase.dart | 5 +- mvi_flutter/lib/main_web.dart | 40 +++++++++++++++ mvi_flutter/lib/run_mvi_app.dart | 59 ++++++++++++---------- mvi_flutter/pubspec.yaml | 3 ++ mvi_flutter/web/index.html | 10 ++++ 10 files changed, 102 insertions(+), 42 deletions(-) create mode 100644 mvi_flutter/lib/main_web.dart create mode 100644 mvi_flutter/web/index.html diff --git a/change_notifier_provider/lib/main.dart b/change_notifier_provider/lib/main.dart index 97ca0681..ce40de67 100644 --- a/change_notifier_provider/lib/main.dart +++ b/change_notifier_provider/lib/main.dart @@ -12,7 +12,7 @@ Future main() async { runApp(ProviderApp( repository: LocalStorageRepository( localStorage: LocalStorage( - 'mobx_todos', + 'change_notifier_provider_todos', FlutterKeyValueStore(await SharedPreferences.getInstance()), ), ), diff --git a/change_notifier_provider/lib/main_web.dart b/change_notifier_provider/lib/main_web.dart index 482eb102..e4acc6e2 100644 --- a/change_notifier_provider/lib/main_web.dart +++ b/change_notifier_provider/lib/main_web.dart @@ -13,7 +13,7 @@ Future main() async { runApp(ProviderApp( repository: LocalStorageRepository( localStorage: LocalStorage( - 'mobx_todos', + 'change_notifier_provider', WebKeyValueStore(window.localStorage), ), ), diff --git a/inherited_widget/lib/main.dart b/inherited_widget/lib/main.dart index c812fad6..ab9e7e8e 100644 --- a/inherited_widget/lib/main.dart +++ b/inherited_widget/lib/main.dart @@ -14,7 +14,7 @@ Future main() async { child: const InheritedWidgetApp(), repository: LocalStorageRepository( localStorage: LocalStorage( - 'mobx_todos', + 'inherited_widget_todos', FlutterKeyValueStore(await SharedPreferences.getInstance()), ), ), diff --git a/inherited_widget/lib/main_web.dart b/inherited_widget/lib/main_web.dart index 387ecf58..9b2082fd 100644 --- a/inherited_widget/lib/main_web.dart +++ b/inherited_widget/lib/main_web.dart @@ -15,7 +15,7 @@ void main() { child: const InheritedWidgetApp(), repository: LocalStorageRepository( localStorage: LocalStorage( - 'mobx_todos', + 'inherited_widget_todos', WebKeyValueStore(window.localStorage), ), ), diff --git a/mvi_flutter/lib/main.dart b/mvi_flutter/lib/main.dart index 868512d7..ce63db23 100644 --- a/mvi_flutter/lib/main.dart +++ b/mvi_flutter/lib/main.dart @@ -4,29 +4,30 @@ import 'dart:async'; -import 'package:flutter/cupertino.dart'; +import 'package:flutter/widgets.dart'; +import 'package:key_value_store_flutter/key_value_store_flutter.dart'; import 'package:mvi_base/mvi_base.dart'; import 'package:mvi_flutter_sample/run_mvi_app.dart'; -import 'package:path_provider/path_provider.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; import 'package:todos_repository_simple/todos_repository_simple.dart'; -void main() { +Future main() async { WidgetsFlutterBinding.ensureInitialized(); - runMviApp( + runApp(MviApp( todosRepository: TodosInteractor( ReactiveTodosRepositoryFlutter( - repository: TodosRepositoryFlutter( - fileStorage: FileStorage( - '__bloc_local_storage', - getApplicationDocumentsDirectory, + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'mvi_flutter', + FlutterKeyValueStore(await SharedPreferences.getInstance()), ), ), ), ), userInteractor: UserInteractor(AnonymousUserRepository()), - ); + )); } class AnonymousUserRepository implements UserRepository { diff --git a/mvi_flutter/lib/main_firebase.dart b/mvi_flutter/lib/main_firebase.dart index a482efc3..977369d2 100644 --- a/mvi_flutter/lib/main_firebase.dart +++ b/mvi_flutter/lib/main_firebase.dart @@ -6,16 +6,17 @@ import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_flutter_repository/reactive_todos_repository.dart'; import 'package:firebase_flutter_repository/user_repository.dart'; +import 'package:flutter/widgets.dart'; import 'package:mvi_base/mvi_base.dart'; import 'package:mvi_flutter_sample/run_mvi_app.dart'; void main() { - runMviApp( + runApp(MviApp( todosRepository: TodosInteractor( FirestoreReactiveTodosRepository(Firestore.instance), ), userInteractor: UserInteractor( FirebaseUserRepository(FirebaseAuth.instance), ), - ); + )); } diff --git a/mvi_flutter/lib/main_web.dart b/mvi_flutter/lib/main_web.dart new file mode 100644 index 00000000..a17284fa --- /dev/null +++ b/mvi_flutter/lib/main_web.dart @@ -0,0 +1,40 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; +import 'dart:html'; + +import 'package:flutter/widgets.dart'; +import 'package:key_value_store_flutter/key_value_store_flutter.dart'; +import 'package:key_value_store_web/key_value_store_web.dart'; +import 'package:mvi_base/mvi_base.dart'; +import 'package:mvi_flutter_sample/run_mvi_app.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; + +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + + runApp(MviApp( + todosRepository: TodosInteractor( + ReactiveTodosRepositoryFlutter( + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'mvi_flutter', + WebKeyValueStore(window.localStorage), + ), + ), + ), + ), + userInteractor: UserInteractor(AnonymousUserRepository()), + )); +} + +class AnonymousUserRepository implements UserRepository { + @override + Future login() { + return Future.value(UserEntity(id: 'anonymous')); + } +} diff --git a/mvi_flutter/lib/run_mvi_app.dart b/mvi_flutter/lib/run_mvi_app.dart index aa4ce817..aea74421 100644 --- a/mvi_flutter/lib/run_mvi_app.dart +++ b/mvi_flutter/lib/run_mvi_app.dart @@ -3,38 +3,43 @@ // in the LICENSE file. import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; -import 'package:meta/meta.dart'; import 'package:mvi_base/mvi_base.dart'; import 'package:mvi_flutter_sample/dependency_injection.dart'; import 'package:mvi_flutter_sample/localization.dart'; import 'package:mvi_flutter_sample/screens/add_edit_screen.dart'; import 'package:mvi_flutter_sample/screens/home_screen.dart'; +import 'package:todos_app_core/todos_app_core.dart'; -void runMviApp({ - @required TodosInteractor todosRepository, - @required UserInteractor userInteractor, -}) { - runApp(Injector( - todosInteractor: todosRepository, - userInteractor: userInteractor, - child: MaterialApp( - onGenerateTitle: (context) => BlocLocalizations.of(context).appTitle, - theme: ArchSampleTheme.theme, - localizationsDelegates: [ - ArchSampleLocalizationsDelegate(), - InheritedWidgetLocalizationsDelegate(), - ], - routes: { - ArchSampleRoutes.home: (context) { - return HomeScreen(); - }, - ArchSampleRoutes.addTodo: (context) { - return AddEditScreen( - addTodo: Injector.of(context).todosInteractor.addNewTodo, - ); +class MviApp extends StatelessWidget { + final TodosInteractor todosRepository; + final UserInteractor userInteractor; + + const MviApp({Key key, this.todosRepository, this.userInteractor}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return Injector( + todosInteractor: todosRepository, + userInteractor: userInteractor, + child: MaterialApp( + onGenerateTitle: (context) => BlocLocalizations.of(context).appTitle, + theme: ArchSampleTheme.theme, + localizationsDelegates: [ + ArchSampleLocalizationsDelegate(), + InheritedWidgetLocalizationsDelegate(), + ], + routes: { + ArchSampleRoutes.home: (context) { + return HomeScreen(); + }, + ArchSampleRoutes.addTodo: (context) { + return AddEditScreen( + addTodo: Injector.of(context).todosInteractor.addNewTodo, + ); + }, }, - }, - ), - )); + ), + ); + } } diff --git a/mvi_flutter/pubspec.yaml b/mvi_flutter/pubspec.yaml index 4adb4766..8886f726 100644 --- a/mvi_flutter/pubspec.yaml +++ b/mvi_flutter/pubspec.yaml @@ -28,6 +28,9 @@ dependencies: mvi_base: path: ../mvi_base rxdart: ^0.23.1 + key_value_store_flutter: + key_value_store_web: + shared_preferences: dev_dependencies: flutter_test: diff --git a/mvi_flutter/web/index.html b/mvi_flutter/web/index.html new file mode 100644 index 00000000..5dad3de1 --- /dev/null +++ b/mvi_flutter/web/index.html @@ -0,0 +1,10 @@ + + + + + mvi_flutter + + + + + From 588da61c1a0947e24936c0ee602a229898909468 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 01:56:11 +0100 Subject: [PATCH 32/77] Remove generated file --- inherited_widget/.flutter-plugins-dependencies | 1 - 1 file changed, 1 deletion(-) delete mode 100644 inherited_widget/.flutter-plugins-dependencies diff --git a/inherited_widget/.flutter-plugins-dependencies b/inherited_widget/.flutter-plugins-dependencies deleted file mode 100644 index 17d9de06..00000000 --- a/inherited_widget/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"path_provider","dependencies":[]}]} \ No newline at end of file From 578fc7d4b3ac4e69be88b45eda4e94ebbdb10a7e Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 01:56:57 +0100 Subject: [PATCH 33/77] ignore generated dart plugin registrants --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 7af44141..34d26916 100644 --- a/.gitignore +++ b/.gitignore @@ -90,3 +90,4 @@ lcov.info !**/*/ios/**/default.mode2v3 !**/*/ios/**/default.pbxuser !**/*/ios/**/default.perspectivev3 +**/*/generated_plugin_registrant.dart From 89ac2826235345acb7918d05bb02ac9415ae5c27 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 02:09:03 +0100 Subject: [PATCH 34/77] Add web version of Redux example --- mvi_flutter/lib/main_web.dart | 2 - redux/.flutter-plugins-dependencies | 1 - redux/lib/app.dart | 42 +++++++++++++ redux/lib/main.dart | 63 ++++++------------- redux/lib/main_web.dart | 30 +++++++++ .../middleware/store_todos_middleware.dart | 13 +--- redux/pubspec.yaml | 5 ++ redux/web/index.html | 10 +++ 8 files changed, 110 insertions(+), 56 deletions(-) delete mode 100644 redux/.flutter-plugins-dependencies create mode 100644 redux/lib/app.dart create mode 100644 redux/lib/main_web.dart create mode 100644 redux/web/index.html diff --git a/mvi_flutter/lib/main_web.dart b/mvi_flutter/lib/main_web.dart index a17284fa..1f27a6f0 100644 --- a/mvi_flutter/lib/main_web.dart +++ b/mvi_flutter/lib/main_web.dart @@ -6,11 +6,9 @@ import 'dart:async'; import 'dart:html'; import 'package:flutter/widgets.dart'; -import 'package:key_value_store_flutter/key_value_store_flutter.dart'; import 'package:key_value_store_web/key_value_store_web.dart'; import 'package:mvi_base/mvi_base.dart'; import 'package:mvi_flutter_sample/run_mvi_app.dart'; -import 'package:shared_preferences/shared_preferences.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; import 'package:todos_repository_simple/todos_repository_simple.dart'; diff --git a/redux/.flutter-plugins-dependencies b/redux/.flutter-plugins-dependencies deleted file mode 100644 index 17d9de06..00000000 --- a/redux/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"path_provider","dependencies":[]}]} \ No newline at end of file diff --git a/redux/lib/app.dart b/redux/lib/app.dart new file mode 100644 index 00000000..92dc824d --- /dev/null +++ b/redux/lib/app.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_redux/flutter_redux.dart'; +import 'package:redux/redux.dart'; +import 'package:redux_sample/actions/actions.dart'; +import 'package:redux_sample/containers/add_todo.dart'; +import 'package:redux_sample/localization.dart'; +import 'package:redux_sample/models/models.dart'; +import 'package:redux_sample/presentation/home_screen.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class ReduxApp extends StatelessWidget { + final Store store; + + const ReduxApp({Key key, this.store}) : super(key: key); + + @override + Widget build(BuildContext context) { + return StoreProvider( + store: store, + child: MaterialApp( + onGenerateTitle: (context) => ReduxLocalizations.of(context).appTitle, + theme: ArchSampleTheme.theme, + localizationsDelegates: [ + ArchSampleLocalizationsDelegate(), + ReduxLocalizationsDelegate(), + ], + routes: { + ArchSampleRoutes.home: (context) { + return HomeScreen( + onInit: () { + StoreProvider.of(context).dispatch(LoadTodosAction()); + }, + ); + }, + ArchSampleRoutes.addTodo: (context) { + return AddTodo(); + }, + }, + ), + ); + } +} diff --git a/redux/lib/main.dart b/redux/lib/main.dart index f5a68e91..4189ac30 100644 --- a/redux/lib/main.dart +++ b/redux/lib/main.dart @@ -3,52 +3,29 @@ // in the LICENSE file. import 'package:flutter/material.dart'; -import 'package:todos_app_core/todos_app_core.dart'; -import 'package:flutter_redux/flutter_redux.dart'; +import 'package:key_value_store_flutter/key_value_store_flutter.dart'; import 'package:redux/redux.dart'; -import 'package:redux_sample/actions/actions.dart'; -import 'package:redux_sample/containers/add_todo.dart'; -import 'package:redux_sample/localization.dart'; -import 'package:redux_sample/middleware/store_todos_middleware.dart'; -import 'package:redux_sample/models/models.dart'; -import 'package:redux_sample/presentation/home_screen.dart'; +import 'package:redux_sample/app.dart'; import 'package:redux_sample/reducers/app_state_reducer.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; -void main() { - runApp(ReduxApp()); -} +import 'middleware/store_todos_middleware.dart'; +import 'models/app_state.dart'; -class ReduxApp extends StatelessWidget { - final store = Store( - appReducer, - initialState: AppState.loading(), - middleware: createStoreTodosMiddleware(), - ); +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); - @override - Widget build(BuildContext context) { - return StoreProvider( - store: store, - child: MaterialApp( - onGenerateTitle: (context) => ReduxLocalizations.of(context).appTitle, - theme: ArchSampleTheme.theme, - localizationsDelegates: [ - ArchSampleLocalizationsDelegate(), - ReduxLocalizationsDelegate(), - ], - routes: { - ArchSampleRoutes.home: (context) { - return HomeScreen( - onInit: () { - StoreProvider.of(context).dispatch(LoadTodosAction()); - }, - ); - }, - ArchSampleRoutes.addTodo: (context) { - return AddTodo(); - }, - }, - ), - ); - } + runApp(ReduxApp( + store: Store( + appReducer, + initialState: AppState.loading(), + middleware: createStoreTodosMiddleware(LocalStorageRepository( + localStorage: LocalStorage( + 'redux', + FlutterKeyValueStore(await SharedPreferences.getInstance()), + ), + )), + ), + )); } diff --git a/redux/lib/main_web.dart b/redux/lib/main_web.dart new file mode 100644 index 00000000..72880789 --- /dev/null +++ b/redux/lib/main_web.dart @@ -0,0 +1,30 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:html'; + +import 'package:flutter/material.dart'; +import 'package:key_value_store_web/key_value_store_web.dart'; +import 'package:redux/redux.dart'; +import 'package:redux_sample/app.dart'; +import 'package:redux_sample/reducers/app_state_reducer.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; + +import 'middleware/store_todos_middleware.dart'; +import 'models/app_state.dart'; + +Future main() async { + runApp(ReduxApp( + store: Store( + appReducer, + initialState: AppState.loading(), + middleware: createStoreTodosMiddleware(LocalStorageRepository( + localStorage: LocalStorage( + 'redux', + WebKeyValueStore(window.localStorage), + ), + )), + ), + )); +} diff --git a/redux/lib/middleware/store_todos_middleware.dart b/redux/lib/middleware/store_todos_middleware.dart index 4af46622..1b24e12f 100644 --- a/redux/lib/middleware/store_todos_middleware.dart +++ b/redux/lib/middleware/store_todos_middleware.dart @@ -2,22 +2,15 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:path_provider/path_provider.dart'; import 'package:redux/redux.dart'; import 'package:redux_sample/actions/actions.dart'; import 'package:redux_sample/models/models.dart'; import 'package:redux_sample/selectors/selectors.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; -List> createStoreTodosMiddleware([ - TodosRepository repository = const TodosRepositoryFlutter( - fileStorage: FileStorage( - '__redux_app__', - getApplicationDocumentsDirectory, - ), - ), -]) { +List> createStoreTodosMiddleware( + TodosRepository repository, +) { final saveTodos = _createSaveTodos(repository); final loadTodos = _createLoadTodos(repository); diff --git a/redux/pubspec.yaml b/redux/pubspec.yaml index f07bccc3..9dbd5185 100644 --- a/redux/pubspec.yaml +++ b/redux/pubspec.yaml @@ -24,8 +24,13 @@ dependencies: flutter_redux: ^0.5.3 todos_app_core: path: ../todos_app_core + todos_repository_core: + path: ../todos_repository_core todos_repository_simple: path: ../todos_repository_simple + key_value_store_flutter: + key_value_store_web: + shared_preferences: dev_dependencies: flutter_test: diff --git a/redux/web/index.html b/redux/web/index.html new file mode 100644 index 00000000..1f91a874 --- /dev/null +++ b/redux/web/index.html @@ -0,0 +1,10 @@ + + + + + redux + + + + + From 85a5faee1dbd5dc126a5e3762d9ef53b5ccc4dbb Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 02:24:10 +0100 Subject: [PATCH 35/77] Add web version of Simple Bloc example --- simple_bloc_flutter/lib/app.dart | 55 +++++++++++++++++++ simple_bloc_flutter/lib/localization.dart | 2 +- simple_bloc_flutter/lib/main.dart | 22 +++++--- simple_bloc_flutter/lib/main_firebase.dart | 7 ++- simple_bloc_flutter/lib/main_web.dart | 36 ++++++++++++ simple_bloc_flutter/lib/run_firebase_app.dart | 47 ---------------- simple_bloc_flutter/pubspec.yaml | 3 + simple_bloc_flutter/web/index.html | 10 ++++ 8 files changed, 122 insertions(+), 60 deletions(-) create mode 100644 simple_bloc_flutter/lib/app.dart create mode 100644 simple_bloc_flutter/lib/main_web.dart delete mode 100644 simple_bloc_flutter/lib/run_firebase_app.dart create mode 100644 simple_bloc_flutter/web/index.html diff --git a/simple_bloc_flutter/lib/app.dart b/simple_bloc_flutter/lib/app.dart new file mode 100644 index 00000000..127bfba9 --- /dev/null +++ b/simple_bloc_flutter/lib/app.dart @@ -0,0 +1,55 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:simple_bloc_flutter_sample/dependency_injection.dart'; +import 'package:simple_bloc_flutter_sample/localization.dart'; +import 'package:simple_bloc_flutter_sample/screens/add_edit_screen.dart'; +import 'package:simple_bloc_flutter_sample/screens/home_screen.dart'; +import 'package:simple_bloc_flutter_sample/widgets/todos_bloc_provider.dart'; +import 'package:simple_blocs/simple_blocs.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +class SimpleBlocApp extends StatelessWidget { + final TodosInteractor todosInteractor; + final UserRepository userRepository; + + const SimpleBlocApp({ + Key key, + this.todosInteractor, + this.userRepository, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Injector( + todosInteractor: todosInteractor, + userRepository: userRepository, + child: TodosBlocProvider( + bloc: TodosListBloc(todosInteractor), + child: MaterialApp( + onGenerateTitle: (context) => BlocLocalizations.of(context).appTitle, + theme: ArchSampleTheme.theme, + localizationsDelegates: [ + ArchSampleLocalizationsDelegate(), + InheritedWidgetLocalizationsDelegate(), + ], + routes: { + ArchSampleRoutes.home: (context) { + return HomeScreen( + repository: Injector.of(context).userRepository, + ); + }, + ArchSampleRoutes.addTodo: (context) { + return AddEditScreen( + addTodo: TodosBlocProvider.of(context).addTodo, + ); + }, + }, + ), + ), + ); + } +} diff --git a/simple_bloc_flutter/lib/localization.dart b/simple_bloc_flutter/lib/localization.dart index 78698325..855211d0 100644 --- a/simple_bloc_flutter/lib/localization.dart +++ b/simple_bloc_flutter/lib/localization.dart @@ -11,7 +11,7 @@ class BlocLocalizations { return Localizations.of(context, BlocLocalizations); } - String get appTitle => 'Bloc Example'; + String get appTitle => 'Simple Bloc Example'; } class InheritedWidgetLocalizationsDelegate diff --git a/simple_bloc_flutter/lib/main.dart b/simple_bloc_flutter/lib/main.dart index edba71c3..7f2c5d56 100644 --- a/simple_bloc_flutter/lib/main.dart +++ b/simple_bloc_flutter/lib/main.dart @@ -4,26 +4,30 @@ import 'dart:async'; -import 'package:path_provider/path_provider.dart'; -import 'package:simple_bloc_flutter_sample/run_firebase_app.dart'; +import 'package:flutter/widgets.dart'; +import 'package:key_value_store_flutter/key_value_store_flutter.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:simple_bloc_flutter_sample/app.dart'; import 'package:simple_blocs/simple_blocs.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; import 'package:todos_repository_simple/todos_repository_simple.dart'; -void main() { - runSimpleBlocApp( +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + + runApp(SimpleBlocApp( todosInteractor: TodosInteractor( ReactiveTodosRepositoryFlutter( - repository: TodosRepositoryFlutter( - fileStorage: FileStorage( - '__bloc_local_storage', - getApplicationDocumentsDirectory, + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'simple_bloc', + FlutterKeyValueStore(await SharedPreferences.getInstance()), ), ), ), ), userRepository: AnonymousUserRepository(), - ); + )); } class AnonymousUserRepository implements UserRepository { diff --git a/simple_bloc_flutter/lib/main_firebase.dart b/simple_bloc_flutter/lib/main_firebase.dart index 1777febb..92279144 100644 --- a/simple_bloc_flutter/lib/main_firebase.dart +++ b/simple_bloc_flutter/lib/main_firebase.dart @@ -6,14 +6,15 @@ import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_flutter_repository/reactive_todos_repository.dart'; import 'package:firebase_flutter_repository/user_repository.dart'; -import 'package:simple_bloc_flutter_sample/run_firebase_app.dart'; +import 'package:flutter/widgets.dart'; +import 'package:simple_bloc_flutter_sample/app.dart'; import 'package:simple_blocs/simple_blocs.dart'; void main() { - runSimpleBlocApp( + runApp(SimpleBlocApp( todosInteractor: TodosInteractor( FirestoreReactiveTodosRepository(Firestore.instance), ), userRepository: FirebaseUserRepository(FirebaseAuth.instance), - ); + )); } diff --git a/simple_bloc_flutter/lib/main_web.dart b/simple_bloc_flutter/lib/main_web.dart new file mode 100644 index 00000000..90219378 --- /dev/null +++ b/simple_bloc_flutter/lib/main_web.dart @@ -0,0 +1,36 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; +import 'dart:html'; + +import 'package:flutter/widgets.dart'; +import 'package:key_value_store_web/key_value_store_web.dart'; +import 'package:simple_bloc_flutter_sample/app.dart'; +import 'package:simple_blocs/simple_blocs.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; + +Future main() async { + runApp(SimpleBlocApp( + todosInteractor: TodosInteractor( + ReactiveTodosRepositoryFlutter( + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'simple_bloc', + WebKeyValueStore(window.localStorage), + ), + ), + ), + ), + userRepository: AnonymousUserRepository(), + )); +} + +class AnonymousUserRepository implements UserRepository { + @override + Future login() { + return Future.value(UserEntity(id: 'anonymous')); + } +} diff --git a/simple_bloc_flutter/lib/run_firebase_app.dart b/simple_bloc_flutter/lib/run_firebase_app.dart deleted file mode 100644 index 9d27f437..00000000 --- a/simple_bloc_flutter/lib/run_firebase_app.dart +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'package:flutter/material.dart'; -import 'package:meta/meta.dart'; -import 'package:simple_bloc_flutter_sample/dependency_injection.dart'; -import 'package:simple_bloc_flutter_sample/localization.dart'; -import 'package:simple_bloc_flutter_sample/screens/add_edit_screen.dart'; -import 'package:simple_bloc_flutter_sample/screens/home_screen.dart'; -import 'package:simple_bloc_flutter_sample/widgets/todos_bloc_provider.dart'; -import 'package:simple_blocs/simple_blocs.dart'; -import 'package:todos_app_core/todos_app_core.dart'; -import 'package:todos_repository_core/todos_repository_core.dart'; - -void runSimpleBlocApp({ - @required TodosInteractor todosInteractor, - @required UserRepository userRepository, -}) { - runApp(Injector( - todosInteractor: todosInteractor, - userRepository: userRepository, - child: TodosBlocProvider( - bloc: TodosListBloc(todosInteractor), - child: MaterialApp( - onGenerateTitle: (context) => BlocLocalizations.of(context).appTitle, - theme: ArchSampleTheme.theme, - localizationsDelegates: [ - ArchSampleLocalizationsDelegate(), - InheritedWidgetLocalizationsDelegate(), - ], - routes: { - ArchSampleRoutes.home: (context) { - return HomeScreen( - repository: Injector.of(context).userRepository, - ); - }, - ArchSampleRoutes.addTodo: (context) { - return AddEditScreen( - addTodo: TodosBlocProvider.of(context).addTodo, - ); - }, - }, - ), - ), - )); -} diff --git a/simple_bloc_flutter/pubspec.yaml b/simple_bloc_flutter/pubspec.yaml index 72bf2c04..d2f3d743 100644 --- a/simple_bloc_flutter/pubspec.yaml +++ b/simple_bloc_flutter/pubspec.yaml @@ -28,6 +28,9 @@ dependencies: simple_blocs: path: ../simple_blocs rxdart: ^0.23.1 + key_value_store_flutter: + key_value_store_web: + shared_preferences: dev_dependencies: flutter_test: diff --git a/simple_bloc_flutter/web/index.html b/simple_bloc_flutter/web/index.html new file mode 100644 index 00000000..515108bd --- /dev/null +++ b/simple_bloc_flutter/web/index.html @@ -0,0 +1,10 @@ + + + + + simple_bloc_flutter + + + + + From 210fb0c2c6a4905255354bc5b275e506b54b8fe0 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 02:34:51 +0100 Subject: [PATCH 36/77] Add web version of Vanilla example --- vanilla/.flutter-plugins-dependencies | 1 - vanilla/lib/main.dart | 16 +++++++++------- vanilla/lib/main_web.dart | 25 +++++++++++++++++++++++++ vanilla/pubspec.yaml | 3 +++ vanilla/web/index.html | 10 ++++++++++ 5 files changed, 47 insertions(+), 8 deletions(-) delete mode 100644 vanilla/.flutter-plugins-dependencies create mode 100644 vanilla/lib/main_web.dart create mode 100644 vanilla/web/index.html diff --git a/vanilla/.flutter-plugins-dependencies b/vanilla/.flutter-plugins-dependencies deleted file mode 100644 index 64257a6a..00000000 --- a/vanilla/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"android":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_macos-0.0.4+4\\\\","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_linux-0.0.1+2\\\\","dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_windows-0.0.4+1\\\\","dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]}],"date_created":"2020-10-02 21:52:27.754828","version":"1.22.0"} \ No newline at end of file diff --git a/vanilla/lib/main.dart b/vanilla/lib/main.dart index 0acd9e31..1cb33ee6 100644 --- a/vanilla/lib/main.dart +++ b/vanilla/lib/main.dart @@ -3,19 +3,21 @@ // in the LICENSE file. import 'package:flutter/material.dart'; -import 'package:path_provider/path_provider.dart'; +import 'package:key_value_store_flutter/key_value_store_flutter.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:todos_repository_simple/todos_repository_simple.dart'; import 'package:vanilla/app.dart'; -void main() { +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + runApp( VanillaApp( - repository: TodosRepositoryFlutter( - fileStorage: FileStorage( - 'vanilla_app', - getApplicationDocumentsDirectory, + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'vanilla', + FlutterKeyValueStore(await SharedPreferences.getInstance()), ), - webClient: WebClient(), ), ), ); diff --git a/vanilla/lib/main_web.dart b/vanilla/lib/main_web.dart new file mode 100644 index 00000000..0a6e8c43 --- /dev/null +++ b/vanilla/lib/main_web.dart @@ -0,0 +1,25 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:html'; + +import 'package:flutter/material.dart'; +import 'package:key_value_store_web/key_value_store_web.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:vanilla/app.dart'; + +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + + runApp( + VanillaApp( + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'vanilla', + WebKeyValueStore(window.localStorage), + ), + ), + ), + ); +} diff --git a/vanilla/pubspec.yaml b/vanilla/pubspec.yaml index 9437895a..96847fb5 100644 --- a/vanilla/pubspec.yaml +++ b/vanilla/pubspec.yaml @@ -23,6 +23,9 @@ dependencies: path: ../todos_app_core todos_repository_simple: path: ../todos_repository_simple + key_value_store_flutter: + key_value_store_web: + shared_preferences: dev_dependencies: flutter_test: diff --git a/vanilla/web/index.html b/vanilla/web/index.html new file mode 100644 index 00000000..6215e093 --- /dev/null +++ b/vanilla/web/index.html @@ -0,0 +1,10 @@ + + + + + vanilla + + + + + From 1d69beab257aa5f623365d7c8f397e2685d465bf Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 03:19:01 +0100 Subject: [PATCH 37/77] Add web version of Bloc Library example --- bloc_library/.flutter-plugins-dependencies | 1 - bloc_library/lib/blocs/todos/todos_bloc.dart | 3 +- bloc_library/lib/main.dart | 89 +++----------------- bloc_library/lib/main_web.dart | 17 ++++ bloc_library/lib/run_app.dart | 72 ++++++++++++++++ bloc_library/pubspec.yaml | 5 ++ bloc_library/web/index.html | 10 +++ 7 files changed, 118 insertions(+), 79 deletions(-) delete mode 100644 bloc_library/.flutter-plugins-dependencies create mode 100644 bloc_library/lib/main_web.dart create mode 100644 bloc_library/lib/run_app.dart create mode 100644 bloc_library/web/index.html diff --git a/bloc_library/.flutter-plugins-dependencies b/bloc_library/.flutter-plugins-dependencies deleted file mode 100644 index 17d9de06..00000000 --- a/bloc_library/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"path_provider","dependencies":[]}]} \ No newline at end of file diff --git a/bloc_library/lib/blocs/todos/todos_bloc.dart b/bloc_library/lib/blocs/todos/todos_bloc.dart index f39a98f5..82f8b9c0 100644 --- a/bloc_library/lib/blocs/todos/todos_bloc.dart +++ b/bloc_library/lib/blocs/todos/todos_bloc.dart @@ -8,10 +8,11 @@ import 'package:bloc/bloc.dart'; import 'package:meta/meta.dart'; import 'package:bloc_library/blocs/todos/todos.dart'; import 'package:bloc_library/models/models.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; import 'package:todos_repository_simple/todos_repository_simple.dart'; class TodosBloc extends Bloc { - final TodosRepositoryFlutter todosRepository; + final TodosRepository todosRepository; TodosBloc({@required this.todosRepository}); diff --git a/bloc_library/lib/main.dart b/bloc_library/lib/main.dart index b014bc7a..eaaca15c 100644 --- a/bloc_library/lib/main.dart +++ b/bloc_library/lib/main.dart @@ -1,81 +1,16 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'package:bloc/bloc.dart'; -import 'package:bloc_library/blocs/blocs.dart'; -import 'package:bloc_library/localization.dart'; -import 'package:bloc_library/models/models.dart'; -import 'package:bloc_library/screens/screens.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:path_provider/path_provider.dart'; -import 'package:todos_app_core/todos_app_core.dart'; +import 'package:bloc_library/run_app.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:key_value_store_flutter/key_value_store_flutter.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:todos_repository_simple/todos_repository_simple.dart'; -void main() { - // BlocSupervisor oversees Blocs and delegates to BlocDelegate. - // We can set the BlocSupervisor's delegate to an instance of `SimpleBlocDelegate`. - // This will allow us to handle all transitions and errors in SimpleBlocDelegate. - BlocSupervisor.delegate = SimpleBlocDelegate(); - runApp( - BlocProvider( - create: (context) { - return TodosBloc( - todosRepository: const TodosRepositoryFlutter( - fileStorage: FileStorage( - '__flutter_bloc_app__', - getApplicationDocumentsDirectory, - ), - ), - )..add(LoadTodos()); - }, - child: TodosApp(), - ), - ); -} +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); -class TodosApp extends StatelessWidget { - @override - Widget build(BuildContext context) { - final todosBloc = BlocProvider.of(context); - return MaterialApp( - onGenerateTitle: (context) => - FlutterBlocLocalizations.of(context).appTitle, - theme: ArchSampleTheme.theme, - localizationsDelegates: [ - ArchSampleLocalizationsDelegate(), - FlutterBlocLocalizationsDelegate(), - ], - routes: { - ArchSampleRoutes.home: (context) { - return MultiBlocProvider( - providers: [ - BlocProvider( - create: (context) => TabBloc(), - ), - BlocProvider( - create: (context) => FilteredTodosBloc(todosBloc: todosBloc), - ), - BlocProvider( - create: (context) => StatsBloc(todosBloc: todosBloc), - ), - ], - child: HomeScreen(), - ); - }, - ArchSampleRoutes.addTodo: (context) { - return AddEditScreen( - key: ArchSampleKeys.addTodoScreen, - onSave: (task, note) { - todosBloc.add( - AddTodo(Todo(task, note: note)), - ); - }, - isEditing: false, - ); - }, - }, - ); - } + runBlocLibraryApp(LocalStorageRepository( + localStorage: LocalStorage( + 'bloc_library', + FlutterKeyValueStore(await SharedPreferences.getInstance()), + ), + )); } diff --git a/bloc_library/lib/main_web.dart b/bloc_library/lib/main_web.dart new file mode 100644 index 00000000..57c83e9f --- /dev/null +++ b/bloc_library/lib/main_web.dart @@ -0,0 +1,17 @@ +import 'dart:html'; + +import 'package:bloc_library/run_app.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:key_value_store_web/key_value_store_web.dart'; +import 'package:todos_repository_simple/todos_repository_simple.dart'; + +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + + runBlocLibraryApp(LocalStorageRepository( + localStorage: LocalStorage( + 'bloc_library', + WebKeyValueStore(window.localStorage), + ), + )); +} diff --git a/bloc_library/lib/run_app.dart b/bloc_library/lib/run_app.dart new file mode 100644 index 00000000..c4a6dad4 --- /dev/null +++ b/bloc_library/lib/run_app.dart @@ -0,0 +1,72 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:bloc/bloc.dart'; +import 'package:bloc_library/blocs/blocs.dart'; +import 'package:bloc_library/localization.dart'; +import 'package:bloc_library/models/models.dart'; +import 'package:bloc_library/screens/screens.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +void runBlocLibraryApp(TodosRepository repository) { + // BlocSupervisor oversees Blocs and delegates to BlocDelegate. + // We can set the BlocSupervisor's delegate to an instance of `SimpleBlocDelegate`. + // This will allow us to handle all transitions and errors in SimpleBlocDelegate. + BlocSupervisor.delegate = SimpleBlocDelegate(); + runApp( + BlocProvider( + create: (context) { + return TodosBloc(todosRepository: repository)..add(LoadTodos()); + }, + child: TodosApp(), + ), + ); +} + +class TodosApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + final todosBloc = BlocProvider.of(context); + + return MaterialApp( + onGenerateTitle: (context) => + FlutterBlocLocalizations.of(context).appTitle, + theme: ArchSampleTheme.theme, + localizationsDelegates: [ + ArchSampleLocalizationsDelegate(), + FlutterBlocLocalizationsDelegate(), + ], + routes: { + ArchSampleRoutes.home: (context) { + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => TabBloc(), + ), + BlocProvider( + create: (context) => FilteredTodosBloc(todosBloc: todosBloc), + ), + BlocProvider( + create: (context) => StatsBloc(todosBloc: todosBloc), + ), + ], + child: HomeScreen(), + ); + }, + ArchSampleRoutes.addTodo: (context) { + return AddEditScreen( + key: ArchSampleKeys.addTodoScreen, + onSave: (task, note) { + todosBloc.add(AddTodo(Todo(task, note: note))); + }, + isEditing: false, + ); + }, + }, + ); + } +} diff --git a/bloc_library/pubspec.yaml b/bloc_library/pubspec.yaml index e9b5ee34..12f9176b 100644 --- a/bloc_library/pubspec.yaml +++ b/bloc_library/pubspec.yaml @@ -23,9 +23,14 @@ dependencies: path: ../todos_app_core todos_repository_simple: path: ../todos_repository_simple + todos_repository_core: + path: ../todos_repository_core meta: ">=1.1.0 <2.0.0" equatable: ^1.0.2 flutter_bloc: ^3.1.0 + key_value_store_flutter: + key_value_store_web: + shared_preferences: dev_dependencies: flutter_test: diff --git a/bloc_library/web/index.html b/bloc_library/web/index.html new file mode 100644 index 00000000..15cb829a --- /dev/null +++ b/bloc_library/web/index.html @@ -0,0 +1,10 @@ + + + + + bloc_library + + + + + From fa602023770131abeee054d86d66480292d5d1ae Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 03:41:08 +0100 Subject: [PATCH 38/77] Restore custom launcher icons --- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes mobx/ios/Runner.xcodeproj/project.pbxproj | 66 ++++++++++++++++++ .../contents.xcworkspacedata | 3 + .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 0 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 0 bytes .../LaunchImage.imageset/Contents.json | 23 ------ .../LaunchImage.imageset/LaunchImage.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/README.md | 5 -- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 4067 bytes .../AppIcon.appiconset/Contents.json | 6 -- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes 396 files changed, 69 insertions(+), 118 deletions(-) delete mode 100644 bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png rename redux/ios/Runner/{Assets.xcassets => }/AppIcon.appiconset/Contents.json (94%) create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json delete mode 100644 redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png delete mode 100644 redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png delete mode 100644 redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md delete mode 100644 scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png diff --git a/bloc_flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/bloc_flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/bloc_flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/bloc_flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/bloc_flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/bloc_flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/bloc_flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/bloc_flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 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 diff --git a/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 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 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC 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 delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 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 delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 3831 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 diff --git a/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 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 literal 0 HcmV?d00001 diff --git a/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 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 iW8_KLJ^8S) z0^jE4-R>Ze;(J3q9g9$gjklJedFrH&y@dGnCOfxpSk2|S%e#at%Kv}uNTs%Fe%kc= z{o|stTd$9e`oC?PBNdUi#J?1m@iUr(6SOgKF2jUb(th28#6TrouiJ*HB9p9NRbTf83FqWj2IpJ3a3UE!AE)dIY(O zLM?_|yIZ^N^>^e-ciTG|6(Ti1_Mi+S)g)8%$-#uX=4IEBK7r{tgVDJIJX$XG@(gqu zT9si*+n)=$w&^u7qSk%Y-q=xN0*<;@+CVK_DAP-o2ElYk?6h~UL_nG)@&nOo29$|h zY;jFs$HFvHZ$9m`@#4eE1S9Nq6e{9%N(|D*Q?@?g`sox2(Sla1BK#&JMpY@~0< zBZ$@G%*=E1?pKINz_$_XlcSw~NXL{|hN12UW`Hpg8{?VV+830Hc3Q!VhONXHrdtm% zNc2hq$43*?qBV^nB;mGOQ|%T*P5cY#Q*A8B7weHjX65tIP-LO<)FT8R-ku+R>07=t z3~xchKFWU@9){KHX}XEVNdchpBYL- z$LM1)>8IPg3uf*wSfdsP`Fmhtp5Kws3{SmOBNN4l2V_L|)3BkACVd!l3Z~F2a`pp{ z{CT%XH~NPiIV{N?avmKJlIFT*ImI_+dU>)u7BnZ6gG7`+JbV38wHV658OgzJly?$e z@z`{7YJ!0IJv@iG5qx0xXk{mjKY@lU)W$%5Z;rE|iB8wmr z>ZOMG1=u}a8A>Ps;1aPx{q~jnNz&h7A{#O(6%~;!=ckKIUkSl5#)%v4FNHW!mS(6$ zge-cn>y9ScMCoi}kjL10kI#@1u2U8DE6T@`5?Tyu3F+xSzsH1H+K(jGpCSN707z%J zdRcyA%EXG`m9ONmi-O3}sQnf*HPy{MW|o`J5`p|-6UsLvC=CbGvoBZAL_(YIUA(}C zq$K|fWu)vCoj_OCV0fig=84)~>a-rL1fIdz)6rQaOv!>%rltZzUb?D%W}1Zc4GP|p z^H%($yryvII&8*cvkO_3a|6_Y3Ne^+^dZAqx&&@H*&jW<)x?7BK+&|>2kb$D(%M>D zK;v4|9Ja~chD+0dRd4AudR=&@TfB%M^b#NZa4vqnusVGTPNf2(*tJBxI)af-OBWbz z{}u9MvaMdJIVK5l37}>h;SU*cMPwmcN)}e1ygHC!bQ_m8IYZ|A(o~$x2-;Q+j*20J zQWJ2U^AN^JAmXdpZ86)xkZjk{4ECU3CG;0O^5|JL;*R-BHc19csy~NL+fwYV_;0)5 z%W;FaUN8;IxStl5tYw=dkzc>E6EOUb$3`0PW3?dN-=J=ErF>D$q7<>AyC(|T3xl9$ zqR32b*C?UXP!nNOAg3%!KwyHQTkUD^Li4IvWDraaCP8C)7O8_(y zlvI*W=vYDt0!2VKTd0xWn;c-m5=1XZ%;AijiCUeL1*OeU_`4O3R#322*R z^YD<>!O3Cv*gToP5Zm2hXcd+5B07IJJ+nsT*XseyIuxdR#iZl-IrKG>Gw42;>yG>( zZy=-m;d~>RyqY|YCCOo5(no2A>Vf+)wX=dO*oOHF4<~sj%}MSf*_RLshs{v=?*6@3 zN$DI=-Zo~KaQaj_uqKLLiMyzdqJ4Q}$4{l;lH6aUJb^8+N;NkgYPayn%b<0hmzJ8j$^?zlvr;Lf*Kh97Su1cHn+;u^#G3O1#u){t7b;o{_u% z=>+J(iSHBQSQU5g$7Te4KxgXbQJQHb+P`ur%3mj?C7IKZk)5wG?F13H)$~L6Wub}! zeH>;z?@d6+)TEY8nBTn8o!gnyHy-i9#WCrfsXS~QfYz1Qu@4?&ni{{k#w(mfg^U?D zqt}*Z;-U=^WA{~7%MVy?K9JWz@^CdHH9D)PJ@ot!vBAEcu&2Ue;S_fDskG>S{g?^;^wD*ohw|s zcpKojY7_RrdLdiP{wj5=vH_Mr=T?@imZZuv8uCP)ISH8ATDE!Ps|R_?QI&%GfL>rN ztuP-Ax}ZYDNxfzi5r-;1zlgYO)x;9-J?C_jXeKERjGcpVjA`G$Ag>`pLxb;1Y+(yS z7dIz0bgp|2fE|AWP=78~R_^g-B2Vtd%paR6r7j5@=`mHAzY={6aH>Fjy3h$$5qsGW(0gH8UKlG?5=vGF9!KVl6&i@&es-AsOp zp9<0)Acph32H!2xa$gk5s8UjLMnx{-E2x8tRvRzM15`=`xnQf`3Yp&?urrCo`kAgI zM15W%Gq&aQU~MVzD;f_62NeGD{|}P9$zQua(SkYqqe-k`$+$(Ol&e~Is>RDat5@Xc zZVTwmzo>{O4~9x7=Vr?qd?jWp{90!cj&MI8jJ@JbIc1ZsFjMGxvI&b;QS+YD#WE8% z_DUW#Feu2P_)K`k@1NuRnGF6(M(S`d;Fcja6jeUDK``_)q_;OX*3N<|bxHdR&YAAD z*plHPZ}S8h219H2;J2voe<42=t1A9-JvJle?K#|&-Iu#PA_TpsEzATI%1_0YVPz*$ z1kGv2C=csRcGhH+)_ce48;hr5S24Cw0gw^Z89B*w*n_80(Q22y^F~~Hu#yJ%BxIOp z;1a&E!g9h;%fV2fMD!5}|0VLD;DAGQ|KrPx_}fx`5SJHh5LP6PyxH(kWr){?5`7V! zN5nrlP_#c>el)QGMCD@Mjb&oEmny_h_H552$)Jx2utx^%TR#FvI(`A6UKq7lmk=2< zg+#~jgyauY9~`}JPCQ~|ElA{U@^(JCptc9{4rzn(CMTA?}7%zePs8T8JhxV`G6qwC*4z#68Gf+qB zN_=xfeZ7f2?#6emFQk~vDjrn0&^ch&q)#^U5#YBw$4`I*pI-7QYD-{g31{zs%;WN_ zzmds((azLSpue_7Z}`|3w!cK{Lf@Hz7^0rl&mita7Zz0gN6Dg(bq+l;uqd(m z4A}4Hq8PN>?aMw*v(ANKV*+%+DLXo!+N!Aa8Jjl(aCP?qa9Ck2`ec?x*rQAa;?5~M zCqF~@Izf)UslNZW!Ch(G>ZE37R%Yhp0!EO`%0rbt!GcDNtrCzk`u>v+6Ng4G`_Di+ znL>>#_8}IH#z=&jqy*uCughf>d*@lowEudn3jmS(%Y%Q%)|C@hK7hXqu}>K3F3f`O zw5q3h+Q1k`V19|R6?*_Bu$({IOj_Tm%d$73sLpb!Z4!eOzJGQV360j~m5V3$k%7Ys zU0@!(xj`-R*#j``=Yo7oN-|zxsUhYbcXm}#5&1VBD=8_C2YUcf z$x)2)Dp5b1B?<~=oEvvRIWZ}za0=e~y4UinY@dd&fCMh^{bdOTPMh*d6eJ3*Vd?;k z0#9=Jm(AY*FVQUThbP*=>zyneu{_5Dh#?+^BnYp3bwEaOJ4|S*s6Vv?qFCDVx6CzCR2LwqBQ$1 z+U73H#K4J)jD(dqTbL>Y6;>4NwSfs>R;_{t0sWInMko#ZjUK;SH+6y#E=HS0u#u%A zbN##=__>h9q0mi=Ilzo(M;Z>E<+J=hfKG;z@5S)s=3Tkd=G7woRa8^xG{RjGUY}P2 zP*)?s#E&b&*fDHNipX^Fw~;Q=v40ylmcG4^`bZBEQgd@#x+L8x>IPg=%57Q!oZfCv zce97Gt*>qQ*M*$hOtTubXj-f6Ga77MMg6|IV=k=*LB>}%S z7z-8KT~#zt_~2~1f*K`Zrd^Kh9;3QcevFvNp|IdxEzo!PUuY;%{eBy4mFg}uavx7% zOC1w@M^z`DUJBANNsR5x3!9aaQyW_*YB)%SX|!me3EU!d_??GWuacrV0wDKkZ_A8M zb3))XR~9G+X`+Sk%T>L^#TaEgCXzzA+DpEI zmFcGF9RdgTZIhAdkvLo&k%tvGmwZb>;EKPPK`dxuixP!|tSm{yz4UI}SnNzRdeEUL zN!Itxac;-5HsJls%%gTW^Lvd@7qHcv8>V~+0oW4_ z?qlBBiDjkEyFxTR@qNd~9l#26^rz*_#*f;I_{%xY)lp##PjF1$ruilA2!Zt{ocmxo zp^8Y_m6$&Ic*>O@6KMvIiUrr9?+*NBnX=LDf8x~tt0p|S#x}3X&o882y}IBTPO};+ zCOWc0`zMd}b*>gJ_avqa*X zKY?wQF-z-BxsE!Pp%yA$Tk+c^eWVt^bVpC5(Vi6oRgol692P_y(l7<8zWh1c21|Tw zG(!Ku!vs1w?BGKo6bPYEUYw90|Ci}C+CW4?M{%X0TKh~zj2-VNnVV-rJ^0OZL%uZM z)$RHL{8!Lp68&Sr>wjS4`^SGOYlDa0rOYhjiPfMPYn;xXbNf)uJ5YEp&Vhd5o`fYH zz9O3{RhEcr$lf(mANixh_xl1p&A*~mo6v$gZ?M`cmn+V#Mh-puijo4qLs61V9g+~w zDtW(Ig}7Trg~VhthF>Uf!Ofj-V&{gn@nmm>!yJyNO_PP@9q1>Iiua}871x#2{kKWl z7WPpq7PUH9l*=enZ%jFp?VGnP#KwzmiO`@^5br%D>-GC1Va{Qe=5|YX!(g0n8`=do zUy{cU5xwn$gb?=)(tC=&WBgEZh}#oX^;?jST0qzI#fX~XNEGpHLJMNK^7nA@J{a;6 zM>_tuth8+~t%SsoO+yoFhKj#mPD6_QGVXku`oufYlKN>h^x*G@D*h@7Yrq7AxP z{rXhr>u>*O5`V|&;z#2ns=Dx-d(o{w6S5@x6J{cD&xVCOeox)sIksI=su+|I>dGXc zFPF!ViVYqOO)hga%U7`L)5NIf!59g?8K`9S2WC|^+)-Rm*}(6bkUMjvXaojJp=Dg7 z)xMFH-9G68Z&Bf*bW*u)Cc4u(1{Xt+bA~c#LAUE?h`;;KgcJACtVi{|n9kv43BihW zcdHf}lz^#rp6+chy?nw}`IbmQy?^=5EVKd7d)8JGh$Jv@6irqLZ4BI5+nnnpL_;}g zgw(nA)iJe1Dom-Oa1_%m8>`8Xp~o!TU1^k2nR`gOE%5JWTT z??o>I5%msT+PIigjx&e&_J;(miuKk~J;Fvwp4=ImF)cd(CmwW2MJk(u*P2F$F-@!( zWSdnj8V>)-Y=iD$=IQ%^OsF6U9mem?O26^jd$Q-sC!Ur1`Y^7h?#H9X1!&9|Q_EU2 zgX9AZWL>@hjwxAjl8qDHc17vZcL^zX%U`u8`6}V4<|A>+9Fa7JPG?4H8&A}On}YIG z4jbgV`WXD6V@XmlB|?VnyEDA&L(v-(4Ox+EdteQeJYt3dc|?1_05&ws-@PgB@;1+T68zXS3gvImteP!ifTz_Dt5>@BL- zTV!omynzXr|6My%xz~r7fFU3+!nYT!&5fb|s|Iz5NM3)pW3)|$90kqEdvM%}(n&+u z5<*v(L^ZR`+@i4#Aigi<&e!1S*80_$>GI+w1|ZAYSGd9i_xs*{)2naMFTS8Hg^%s?Gw zpn^K{;=CJwttC{s<*8~SoM|VmU>Lq`@}!5n!;CZiI)f_rD3a9BG%#xzn=(~ew1O!p@qqy~mjtL`8WJYdBj$!LKP)4F@oW1wa@S!X zk_pGQ2PIG&qM*x+Gb;?WhJD$pEjadG@M#Sk6F5!0#1ye4orJaU^N;pPt~KBo`&U~h z9xm1SHNTyR>w~3B6P_4J&3KXi60aXT2!ajCSva$#XZtoczsR$odC70s?1X7aY3-)# zr}w0JmE|>f6ooMK>>*%uLaL&6ntwHjs;Ao4*=qU~!^iREq{^4&w%s#I(kYAcxd}Up zwYSoH)_l+p!Rqk-D>#=o$A_we*e+>qH2AHk8@L5I8}*yOJ?Qk~`?@N+ICOB?%6#cP zu!YrK8}*gH-Qs`T3*4xI;Zw8yQZ4?WcnM~VIGOm{I2V2TG}#NqB@lFwIa*W|`O$Z1 zKrTP(0hCg`zlNtnp0;47X3HPsDnSdjV2b%`v5)2@$zOj$m#c;@;K{wq^xy{yQzzST z0GfpoVHxl<=EZ{=TK^c>h^#Ko9T%H=ISnjXA|QxqFv`3x1mj5gk1!t*^yj^%tVrbM zFw<-Jw9Fe-b-Y2$d`vZ*?oZomsv)vcpCk-^3TA*$KflgEY58q-qS14jd5){OFlf31 z()_-uSTUgK=6z2u&se|an@w}bSabSHat+L;#%0snvj8q*c5$ z?J(5Y&G!7>E%eRTzy2jWT`ix>k(c16P<_U*6c*eY7&As#YU$@1>J6%Y&9yZ+0jz@2 z&{cAOB|QL_>B7k6O~FRB;{<`6rS(6nF~(f0GHBQvJpAiWmoH7@W_{8H>3PmR(ju#^ z=9#)FZ8GG2rlf;9+p748(z5tI*nI?L8heCyJoC6T*_tG7AA` z%rHp$ir(aWz^mc(BTT)xEeBQ|_6Gn}Zd0sajKk}{=&l(?vw%+{*z44p?HuMf%mv26 zQzy1`lNYDZSsD{E%_u4+98-yDo0IglO>v_QT3;mY?$FO-vi6N#uTF2Cb5itX#PrkPB#KW-IG z0VU(+*^diPYecLrxuG0rgNq~I+KuA`YmSb0b)85?WDPJ_y9C(N`a zk6SC>BBIxw#4J-z5{o#i9{FCnKu}Ptf)ldG1Iwj~WwL+d**D}4Wt89P1P+N9MZEuY z^gYqyLo?t|1V8#(S?S38{vO=n5+SUKNZenCKFl1zn{hL?SPN>&Curo0JzuKfN|(c7 zZUjAhCR_f##G0O~2@r%Xw_l9WkNmIPX>$~PhpgUnioM(V!Wj~)F0iY)58Mk1x;8R0 zVip;x$;EvOx;&B@2eYibV5Li`?o+K&<(}BXT%n~U$mOiEGBeH!QYkyjA4*F*1k`zx z+dZ6}qdL6J(IyeWVVNNey?Zi)_15%@i`yPdt^^Rk%Y)7sm8bn&M`E>KSQc6uj+x9V;>J6dFxUM zN%g=&nv^bY^+#hHr>dxt!}=C{QiC=_#g>SJWIPHLwNvHxZgBof0?#lm7VJr<9e)kk zcKTQAEwuUfbF9C=e@^20A@`uYAqY#*O=X534&vv>_}HxZ0hu+vn%=WJG`Ucim{nVFsGK6qDK6T5m@eB&$D>0yR6%f-;E# zm5)k{Hr9O8FufyFqUZ2mJ^6h8R!5J1vN!M^tthlCxB4DwX=%ypdgs^p_!)9lq@CH= z)+!8%0Y@$sC$@)utA$AVl z6kaR0yV#pO4CvmIIM=?mm7eWfQCM7j-VbQyf{)ieP_oy1%bn%_$Fn~#2o)pZGCvDB z7FW?Y3J<>DRw@1(H@J9bh4=f9Jh>P2qiyW&0UlkBS(m)A?twt?^o?m5mwTA#)B5L` zNTKQ{2rCDd5g9JwsZm$kQdQS~&_lxacD~VGM0RKV$NYj$S;p)FUdq#{Mu9I@CK7I~ ztbZwexrC>O*Vvq3>!(J=7o;S`U$*HVW7pmtZ>DWjqFw3B81zaNmR1C#kz-Luo2rM4 z+3*!Iah}(9=GW-xEfu@@nM;xP|GEB0N3jbx9}rht;LWYQ49>Hyj0et+@B3T*Z+7H_ zo$nOFmD3B%&vgQ9(O1hb9z#X?f%_Y_iE`B*K0YNDb+2iX;oI0-5DJgr@8{STGuIfk znJQu?!0Te9L*>flP@3hN!<9;{FZ9Fps@DH$TaK3=C80)YQ`^kktG&S=k8$_tH;kMo+@ zJ)`NIZVuWvafdbCewXvHQ)`1PdsE1U_ z5ptE?fA6jiXQiu7|32H_-{1U<<`Mzb)8t18`mKx<2wP|&TAYQDb*Y3YFrj0n*w1zVNY{e(l6u2kG8O;me()RZ* z54#REAh5=7Z)7#oX%UC}69`XWbXhn#aet0uH8wWR*TXh^P~RjW0??~1_{;Xyr+}RZ z1e@>PDVutx6ut-B!6SFLBKJnDw+6Sfva)y$W%OZJuDH-@P50h<=Avz&ymx@}!O<6I zGp35I9dZ)l8=F;HXJK+a%%gZ~4TGkAKh$iXoi@4Xi=eX5ZmHDNeFov%Q7QfC#fRdtOIkQyaGw0f^;8V z2sPeyoYLGiHuG88QA&YYQ^f-PbD&X6(&5_r#?^F#%a2`%G=l-#6*Yh62j6ziCaI;r z$WGk6q^zv?G&k3bpVvw6!N8TB*RRHfmj?dW`5ymvwV0?B@eaQGds~+Bx>@#Ev-v;# z@eS*b!Bq}ch~UG#gWX=0s@?SQuSK-^2pMDQ)6-!%7sPWk)48*M3nzCcCMJ$x@dp;p z!5_2gX!FQaz`*ngm_J3xi{ab?znL9o*ERT1hCb7BVN}gop*v@U&rHmtPy$6?hA z{0t+Nl^Ww8wJ-SG2x~7ZwhFE57E0dl7?L+fzdau7Kp<6&9^F+`@fQ;5xyhLfZo4eA z&8q)K=v-P^`hmgFuIoPK@qm-MS>lp49_>hFl_F%I-nCqt;Wg4_R=ujXr192Z!_d?X zlk>JV+f;Ffx^`5RfWL~k*vLhWAFMcv0|!f*L;-nofau02XG;* zA%E1e!3EmWcU@HpYYtpSSnC^q+~~o9lTMc!w)(4@=^SL^8`hLzK9GuhL*nGnVRK3Uk-BCKAZs-HucUw%WHvI+SlV}#|LeL?M8aE+f@Pffrm6zW^LIct|ui30zSSnqE9aViiJf86e9zho% zWRCTJp!D#3aA?n1F@81#{;18Fz6`N=a%$A8iGg=kzHl#>sA0-zYzk96GQuYscMet+ z1ITo*ONGw!i6<(7mOg*VuKLDyU7y#S7Z;Z45`GxDZvd8>Tecnr^1$TGq^jC0+K8VM zFVF|srOO?C5~R#5Q1Sl08pf>@+=DdEAgyI9cHdsh^&W10~U-P^Xm8A z-m2^0h<6#9zELL(!;b#HZ6K}Fe5OC{1IMWVlp>t>`;7_L!}!Oe)0fN=G4O!@$HKN8 z`$qV?PUVYUh!hNykL<0gw+7-_!nVP!PB5{>-rbhRO$4aEW=1OG2wL{}--Wsil{ z@srV6+_B)QUKfuFG@x0Viriv-xij1u@p-j-1D>ApZ%3$(uchi8K$3F&8YDWUFx#RK zRf*JvvV)kHXGNs&Ro+>bH6QMqKE1Vh9iq-YWBunuFhuQ+U%k2IwVAnGW>l^v((B}$ zgyo$U67k(xy{?Pms;JQ45wDN`wp44%HDrTOk52d!=W*q1dL9$I@idCi^8OO&Jnhya z4(8J-?q>rvC=I|PWp#D1%F)qr?0$;Fbp~qB;fd(Qx}L9;6uKM>LuS59nqQ)jUHaQ2 z1tfYPQcK&m<(aFtHP~TQSLN^ijAQ|zpU^*SGzGh!8!315uaC{X>u>?4MdDn{P4Tht zW{t~)2IGJ2W#=B;oi_g zDkWrsBXMEtiZ0?{*z0`M{N^m~gC1#p4a-O?2?t)ydUiaB4!W>UmIrpiZ z(X%N#m(!E6s+W$*qxqX+`FG{9l_yFxrH@V92KM?en|*7wjSz4n^Xy}*-(4D(dL!T3 zeTB345;e;23ztt!gCFa=%kxog;%~|{C!fTIrh#J^Eg=_3b&%EsR^?sF!28K5(GJg5wJ_I#gz_+Xdm zeGOaKjYB;4b2N*jFX5>>@_Z)eUD)Wi(aVV}ZBZ6be+3Oc(f1s3Ght`Rtd|^Z#5%8$Y|N0wh z_xt$cZ=Ym|n3XfkG1|0`8+d9SI{(2>vEF+gz8?<;N>tmPIcZOyeKhjV{q{PDNtRhD zTvOEf!apqBNZ>dRy#qZSbDBLPHTgMFE&u&A4Ww~thHFKY->@AV!^FiS3U<&xsbF}c z*;EaBE=}6AwrbiIQI(36XhGbT)w%?I{I0?-0V<4oC?~rB#HNS4D|m8MO1@hB<3|Kbt<>aW?O#!6Mya30+%zbpWa8^sUY^9@^#QNYCF>kUCnE{`BCC5cm<+Y zRXBDF{EkUhu669)Q|S8;&Amtfo54Tm*XVZ%kuR9Al;McMs?|bCb|^Ga^#SC0W2RLsD1zPVGBV-1pDMN;Lmgow&_DK zI^}DZm?J*+E=;d9EtKoxABLxNes)z5?Gz{$BYjr20`U2OHh=4YZSeGLX;R|q7m6zB zH6`SUY=SmW4KdNOJ$n5p-oo+|G5lc@4j>0Qh^C3rL;~j}T@D}9rjEYSE#54xyD;B8 zcxAaxXgM`|bV?5lEdc!HTv)H#>5IaOz)qcWGnnkD&wK&9aFsz+#tSsKXIr7v7l;P( zyn7t$9`9G9*Y#0Z=6;nYAV+|Dym10v>((B6|omo>`NAs2)3$R

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/bloc_library/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/bloc_library/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/bloc_library/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/bloc_library/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/bloc_library/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/bloc_library/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/bloc_library/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/bloc_library/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 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 diff --git a/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 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 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC 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 delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 zcmW+)cQ~8f8%|=?Y^hlkUu_brN^7*JR?XC=5kZvNL~D;~QKd!HCRS}?)d*4)A8JJH z5~D3*##gh%_@%%1y3YIlai04*_qm_@JlDD2IH>VMR;FuA004mXk=}h%>NoK3xI|BV z-$vdV0|2-i9^Kb64+K`FXklmNId#XyPK!@~pXIghLdrF8WQlXmx>inRvYwH6eLdGz6!){BxQ6=ffLru4 z*R`IOEWW`gmF2jkZUbH97lVKDeXlEH#LfJE8nIx*=wr`%Xc_LiPkhQ|3AudBCS1b6 zr8R}CN$HP6N)6lkkxAm$L@)c?UvQON>G$cP-Xk-f5%b6j*M}9Z^xmz>6(@V3LYFVU z6qY}QzUzC+Yhw5=FgL@Ma=E-DKdK;K{vm7kIS<>QZ*wT6%)#1&;a0ap7*S(U;KQ&( zZufTg9Z3&8UKLRWfec5bHzC=>HCX#k%Ic@)=izkUiil@A?%NE>+&hzfwZ-=sn zv>akDS4P#o?T&eQ^%lG?K+isJDEl_v{=)sre7C*r&@ag**-M4quNfA3WdGPkF$PAl z2Py?y7ClL@El`NEyV!`*d@LaCCCtNTL%Eu1aimBz1@X%R-NYvT6UX0!C#3Mp=Pm%= z(4>8`y(me63#V91s0cj%W?a*CtDLTOT#eSfGva!T(6#+>VEDmas7zOQ`XdWBhEx{l z4w1V)zuvpMEq6{!94Cf1{|y#yL)#55;C^)Li#IkK?BoHJIY$JNtae=b8n%zWTe`MZ z^U7{c21JnQN8^(s6;mwL?@1U+w1B`$2wyjxXof94IlB^XVC(C4tbdSyB7~=_GBW_% zmtQv*D~}wW_&MR5`Pit!G~T-t6wG?O_Veu2RpsXV0~Wnmio?M{<<12$;*n#ybNiHU zHIhh~#Ms`!s}4MOoQu!Y|Mw9D;XCd72LD9l21h)N<@)4^=T&}q7aAT3;v0THes{#= z=*Y6NMrT})CHF=6*@X?@EN-?in^+zUcpv^b-JUM3N6I3DkP0rhittI?WND1OCc z7u93NIBrt#Lo1rb!bBwUd~^99Eis%}BLEVotM5tSbQH&V3Kj)OnLb%{;%I*iFzzoB zRkF4j%$%V$4F28*+IsbMz?mLfv%<-cni799Q3BxK?alcI7uicUHDIBeV%bh-;Fz2! z)y}|wz18L$03I^++;yV|`hg)ez^lKHGbvV$=QyKvazvTfMuv6M`FvDvuR(?(@&k-( zr1?~!)Aa!m>7;K8=LIDJ7#|&p+Yz=Ha*TMqLs2MGZzJplcp#OfF?hbQHLKD4IXGou zmnGODrP6Jx5tgeTu7Q1uj<@Ou{vLj}ToMWm+G))K>ww8UB`FI`x3p@)e1q%GcBo#c zaJ;l4@!&J+d*jEMRKvHiJM$IiG~FT7(~28+<@KubE%QIBm~NI{DF?SrSqvGv1u>nm zEotI9>B>TLU}Kf~Y-NGbr@rC0_FOJ?+XA0aq9Lnu=f>-lIx>v0h0Ei1MW_Np|8?vU z_Op-*NH&#tW-PKje==gUp6gya+ZIfUkzVGmI)otj`_tbZ-{g{ld&-$K>x@5OnI4;q zn&fY;aS^i|`^RBQD=o65xANP%HdVgcEV4$oHiJ-TKXvKD{FUe{VVqCfQpTwXjDXV z5cZ_R10>Yjxb~&1qE0sdOJn?3x3UlffV{$iKndStlUN>%S6A+7`6KjeHD^!and~MB z2gfjXN=v~VFLi1MvP4a3R2H3gY5go#MLG8ictEBvgkuXMZuanAICVbxxq_P_;m}T8 zF54Z;={)FHNB6I}j=pB@6e#;1?GCgu1^K~|aU%cz5jq!(u?xbclceXFYuC`m7AoUO zQ6XH2N?LP~b2Zog)0hpp=?4030t&BgbtWk)OkuUF@)py5gouq5Pyq7J^CYkt4|$%` z{1WOfmL?qR!g`&cX+fDx$h$=pBf$@=v1?~`ST%q_5&h){?U;JT0a-&AY?j$T};{{G{V#qA2He2^b)K5NV4 zlgqIJ34%+J-gi<+!9nB?h}Zwv;cv#EbC_#28Kqyd3yRrGzDVH{`j}pH_QHux6)N`+uoGO{bFsIhl85$BRF$jhgPf2$aBbK(8~H;lO!je0d^9n&xLmc2pl zFVhR&lVWTtT29qk(;J680@VVBw+5)fr*{Om&(9cJruuktCf(N4d*S^iUQN|_Xb@FR zKq>i2uQ#U|*Vo6i_dr$CX^iwDS0nN2)3fRU+QwX5O#vyBVj3i-X%JSF4EuqQBQ(kq z!en?$DzNbS0!|l5=NG&Wn6?v+aesuNz{6j=g`D)4pgSvsyK!shr>X#n|Et6k?dwL} z%(h=Gi}m#ZRn%~V1Ry(C?EeyNQ6<_E5^i&E=@ahY?Q5s0FF$p2gk#js)dOsTzz1wB zrqcS)o#>H~D}snHz}5=x*C0y8YI3}DNw~O7l%yTbSfLsK*QX**ZdVb_g54;(L zGO8^!KtyMxlQvdxcPBn2(TL?XkM%M^zwJ5qdwBdc?MXs7zTjPsBp_zVGU4ex%R7Pl zf1Ne{u4Ts;#cEq!R~ExiUVC8n4kPh?pNao?ph*tXP_sRcGfwsK6K$ z7dG{t(!6@W*BX^)-_E<2X_nJf31K(n47qYOmSZ@u%CATIcK0AT%ycXYf5YTdo(-mf zKY8o`cNc?C##V9TQS5I6j?nxYkKK8QGP%t#9YKD*POkh+FU+9e5D-;8i%%T$ev0=G zB1=R+cH7#PP?>mF!lqAS*qPb|!umjh9l+GgJZv#jTSTK8Sjg_!GH#KpuN)r{NrZOX z{Pb(8Dl|?cj)o5QhGuFA^#k!}vuWoeqm|I-|ANScW7jtLctuqv;%294p+GLgFa4G) zIq@U@doZB&)W6$muDiVdN>u>Ec^D-uq#$R6u`L&cob2^cPSg|6am zBseQ%G1D#6!ph3tXLw;MHD67hoDzeqR&g&&x%L5b`)pS3i-0f-OBD}{+C<|TFsCtz zF#|AlxwAD0BA{*=hT3H~Nsr%!eKyLA_Y97$ENITtl&%(3ARLtER$d#vvIMGqfT?8U z%?jIMIos5F`74P0k*F`dy(Xe!UR9b{!ZZCojif)a!qgwB%Y!iD0@cDXm8`s35r1fp zRgtl~M5!)$UAx_ly28rz1?eh24MJ*eWt2=l+xlN89RQiZnm(^jkM_(kr0@)(f|CVJ zKOHXr{n6J^8+9u|sy>WC>I^RF97LX`cAU*k2^Dk8Cn|Wf z&~!ga*XIf}0jbKZSTL21Z_yMfNhkSrHUr&>wv8@A&I<#L8iZW?x1PbIO)mq9;@JH? z7=WwDW*cq;x=E!{3fH?Xul;t~OS2J7u(NwiRikgy)QN%a-%L_Pm-cR^OlKC^NU4Wv z2Gtp+>czSg@%hu?UG)H$77V=|=*Yv4pWzNxoyRosX=BK3bHJ)&D+M>DYRx9K(0%b=XllvfWKIJ?*;vk<+zw^xf^+*`lHueUHkB^iz$#8> zJ|63j_3@#JWoB^SCOO`pD@ly_T#-t8dd;W7R&9WFQbS&kS(^QtbqeYI+JfV;w%F1X zb7vL>2k@x;{O8Bdj9nt*?NsyER5Qd!tSS|?V-k@vd$3}s$s{@$8~5K`naP1_@h9Yc z6F_CVHU6DvFps&J{oOE2+d&6g3<w|G zUvwI!hv*(+;=?ZY3jGPoOH)V8eYVP!q9hYFY&R5-?ogkCWjXIr0T(PKK~NufNo zW_>cm`G-54mNZr1AZ%5zzp8aVElVw^b~PL#kYftI9r$4k^I>!gtxA=x20a4L^7zuI zOgKpNFW`WR(FMwR8opU4lkNZm``!z3%1W1vcm*JFLEH2Dwm`&e772ts*;I{SiSQg$H=<}MS$DV z%UCRgGOY)gdZ}*3$Q|`cAq|*TSrs?NTKAhw^6RgpLvFLTd(GdmZFJ)T+kejCmV+Da zkqD(av22e3eN4E9hVe9I^g*(C=W|Jd#bO%Jas|%D6&d6*utj=G93GEiX%W~!iy63f zMbX`K84<`*aH1Dfd%-d)5R;&cre~Y@taoZn zJF3*MtlKE@Fv@oG{z|(27!E}O$Vl}I3JRuGB@bccb!b$UaqTiN=FY!I0N~L}#hzWM zUTE+(B(ESkPBvstwi*a)MTwe)_7P`XNmW;bB^n=m(P|YXa6!2cA_-1!UKuHUfR6y5 ze9FuAl~a{QhR2;OrOJ_3=Uwa*H#HaOi?(E(;A zt}tE|he~pSB0rQhHa_oBM#s^qde2kaPhUL?kG>2ItSmaij)IF!$llwm=`il??UjmV zZv6DAY+BF9;DtBFT|Zn+49ES&JCZBXlSmj2wbqki?LWQU+}=)PZ-JsvN(JOw@yZ;{ zBpg6CuTi>8`&lFm*m;X;IR2zO5q3YQ&+fad2fNwWFcIoKswrUV-g|+^yk0u+70>&ls#>1Xn$4{ zvO3@;Zq?{2X6;sF&9o4Ip?O5%C+pnL?(s_#fVX-KI=pTog7;tt;hXsr2hW`h#FM+< zw4A_CFVf~jGyP1A2s5T)by@+#C=t%dhQ;#^u_8r$+3(!eJEL9wnl9w$>)Jr$N?oFTvpf-QGSHSn^ft!C&Oq`=8{_qI_zLB|GJf;R{Om`=Ba3;JW`i43 zAkm8}a%Q{6;zyNNNux1s5tzY=`d#^A4ugTHly=P0DL;GY_PpTdyVEqireylN_dm4X z@asVOg*aj2Hw>zS1q){!qXvDq?Uej~&z=jm-L(?Sh>J$NO}&$RN4m^#w`p#-O+x3= zc5x6^zXn}lHbiT+odF$jqYQTqENdlOF2+$%%DOm1x!$ORgV;c|kX>{bX@Yk7kf?4| z+AP^bThI#DflNJuM~Kv2z818UuZ$n2pmImsnvmcrx#PaTVrSeRy4AT-agpZfRov@G zlk3HZug>7o<4*{d>pDDMq4l{G)V#x6M~h&yuP;oc(r8omyub&2$e?k*aoGm%+^m8b zcn+x^yg9DuHk3AGtB-t_HKoa(&~>A%C(-NoIqa<^T53Wjjmz|9N6;8c(*t(pj zj&{Mq8ws!$wmSS>g6E6;x00#VnI9Y3yJ~f5+_yFSe3(>xBe3RRUar6%OGzFmWKL10 zmkFV>%d`^HfNC<2^B9%egXO~BOqDy+LGV6OyparAZ?mZuuz%S?;(q3ru}j7oLV7DU zheVFoww#}28H#+$Tg73{njT}_2XRXqN@#eOMm*kA5HkIz_IE4dCd@TT{|;L+yiOX2Y1&#ueMejPm3~jlgoU|;T@0h*IAqH9 z(;8-55TQN=$DOm3Scv#TvLfN2Bs~Nywn=00E1cOsINmczo=^;n2o_NrPV7vj#{O{f z_d0h-4(U-M6q}n$>3cSjAc*SOTKyds-XWCK2gk_*>A}QyMQ$- zTy%Wy&**_Cm%oZZDX-R#19X>~yC!}*lus99^@pSH^d8Qst6--Les8yPT3CsdPp>3i qj{nbl(D%UZ^d4JB0mqQ>t`JfW&3MbB4N3ir4S1w$d>^Zgi25IS_L{8# delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 3831 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 diff --git a/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 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 literal 0 HcmV?d00001 diff --git a/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/bloc_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 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 iW8_KLJ^8S) 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/built_redux/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/built_redux/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/built_redux/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/built_redux/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/built_redux/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/built_redux/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/built_redux/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/built_redux/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 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 diff --git a/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 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 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC 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 delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 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 delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 3831 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 diff --git a/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 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 literal 0 HcmV?d00001 diff --git a/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/built_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 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 iW8_KLJ^8S) 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/change_notifier_provider/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/change_notifier_provider/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/change_notifier_provider/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/change_notifier_provider/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/change_notifier_provider/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/change_notifier_provider/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/change_notifier_provider/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/change_notifier_provider/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 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 diff --git a/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 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 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC z)>rXiR;Q;~6~{lQNx80UE~{HruBZFCC$mmZnEgR!$K0RfEr0SRc^hygWE(@>EoODM zLi1-d9e)x@W%!eFopnxG`S}TI`tztrg>}T+;!55MTn_&<%$xKMON+;0(M*+VsLh(x zfIJ!Zsm{)is=VB+d}x%n1NS#xJ-F(+bH7PTzwT(Lj+E5> zMYtIjp&dpnaTFCisek}go0b&3%)^#&->PzLd#Cp+%X|OjTUNjMZodM~T^|l-VY`2} zo9s!!j&ur=^`khm;Ev-;qHrHv_!awK!m><)WoBk(hA=ae;xL)QXl7fom}W*WVi=9k zwOwv~o9C07aZS6E)j8kZYrT5)s;+T1r~zlr`+s=Hxv$?34tGe;+=6re6J^aVy6o)} z7t`>==JK~rpm_8{=hw%3q`bN&#lE$R$c%ftMV3Vb2(}g*3b)8^bEzL z_BrZ-z0hFSf3ywA^4gl{S8;LKy}xFs0lsJkfLF!8eGsJX(1k|9uxXcI9R5 z%zqipjsV^JYj)A)Z=c$41cFCDV0a(JqXrqw`#}E)xrG6``)PJ@fUUh13*I?}u6qAg^Rfc0W&hqNHuDsKFEHZ)KX!k-v;K;A&~=X*^{^rS z@oS?~>r&i*wdzHG0O00 z!XDJD$Ggwzz+xGJLxz zbtoPMYVC#f3^n`d8EOTnXDA*u;mnxtm#qU*T3IERngXn4|Hux^rfwfw1P|m5*jA1FYq}sBXW0BSAfi zujw4E#QsiH(OT5#&z*1q)PC>Yfg(9vNPso%AF)hA2Z~2Cq64)t-t*4))X=14@in%z zT+{wZfCswP=@eAi5PMY7S~L|0&~*L7`}q1;UoOtDe+B`rIOik4^+SqL!hb}SpS*Qg zHK<4Ns1N(T|9tboZrRI6v+M(8|Elvv=L{GRgyK=T^Zg9)z7L-}+9y4w#mvLoS)7r2 z$NM4ChC@AS64avx1gKp9@_(DM>0lRkLhOF{3#|Xz@qQU9FJ~U!lf#qYn?4B83jxBd zFTE~X4pn}z9>t>$toz?<&B?^_O6K9+mmAl2QW0%9+$;4J&@)saz>vFky&??*95}h^22NRB= zHr@c?`IukqImUf@o9}({L{5&)mNO5pv$Q0iJ(-jG^`%kv_U#V?ffC^HoKS#QRqA7p zDzyd(zklcO`j9y^>>n?f*F`fA@5EeLK6#Qic^73@@BZr1bqLVQV>{CYsQm5C{mG*z z&Rys$Z3W4F0Dm9N_DwHH<9c|TPUK?Lqv;5H;G^Ulc}15)@u-qIK)CXaJ+di&kN)55 z7?H6L;G@}VlO@?=?4!G)?Csp&I43|oJgMjbYM}w{P8}ZH_}V+N^<++d-aRU_D{GmD z_x#u#`^3wl1b~LS`uFE7>>sIlkAk4e#@M4u76B>;+JC#Gw37X=yq3`!=1n+(+5v!X ze|&hZ0iGI?O{WSm`VAD1CS(y{cXzi84Gl@LSd_JlKHuu6l{<%~WfOD5DHMj#(7X2! zd*TVud|-2+O3MWV_}p{PNpEkjXn3F@uCA_LPJPHK3xpi0+ zysE`_4u5s%rwn&!&p-dXJn_U6vTfTo>F@8CFgzF?9ZenL^4b~s`@jVA#|#CkGov=_ z>fJwt-q9u=H{eVa|LsGa=MC|hXP%LkmKJ&7fd}ON`|p>*!9fDcEX0M?HThlN#QWxR z?UO-0KHA(?rD59$s_2<&)exV3_F1{-o_plhTYqnryY9M6^7*_GnjPYb^DmZ}l{NWU z@3`pfI*%%QRNn`+>plCU+>Op2o=(84o{w)IwnNlkbyr_~wcK{wZBi%{T;ajU$jEs^ z9A93Q?{$wQi?A3Tb-=D^_lIcn=~1bG7NB;BN4n*i?K>p=i{c;u_=o=Lv%_D|+5TgE;)$sg*`9th0ugDiWi`D08FQRxf zW7uB<)W@7`MnN0Jsv$nTeY-sT@WV1ZJWLRoh1j;RET8Qh3uiDPu!@1Acr^X~1ZWpP z#Roga1pW2VPQuF!?bkgyEzKRgJBEhd5r2pyz?Az(`afCmT45~H5C`L4pKmQxezP6L zqY1h!ibu0S1MD0Zet=iSqY2}J;!$`dU(6)L-a)i#{Pl8*h-?oWVDwxXdo&R@NN zUx|9JeK04@?W4S7zh}{bDq4#=?x);8ip|{Ct_e}LbfS0^KaQS{RKK0I{`f#n8h<*9 z6&9F4@n|@kdtT1c?yuQJTe>ED%?1iyl^RtiwT8IAcR(6~`@EI*eQ@7GOtEk^OEeI6+OwIN@KuXpzw{U*@_yge`84$R-rvp==_qpdwtFTD2+6pyB5 zO10{riTeHR9eru~JLa82Z8%H0zkg;IZS9@DveE+$J*Wj|_CR6F8033Z`c0uq)qi?C>fR@1 zy=JD_X@F5f-^{M940Tpv237P7#iKSskB~3-O@?RQ`*`C#U7+F4weGK(#Y7rj)Z9O_ zA=ac2#iJHg>-8Zt^wxbR!JTa8P2W#5i-|NmB@S}-K#YWFA!-rSII#NRef5p8M-z`` z^`3kG12K^jVH*2Ob?0r^kAEgK_Rpb;o}p&FdNip;@u=gzK{!J&o8!I{X3Ul9Vj?BN zC{6wIEj(_~fPywejX(i7bJwGIG)4au{mgkZqnHRVXZhxke7tF3{-_pOG!D$87Mun3 zC?2)@;T`Y0-qSNQ&3ph&1Er&yQA`9820lGp{zTK@e33{0uMDE0_kY(n#9^R{o~fqk zubF5zF;NI6BndHBI+`>ri7Flqy>B5MqJ%1Xh8q19ys;o2H7TJs&i(XP9^rWdOny7( z7h1vxn{sIAJ?B1}P{^Sb-b3+d2J?Vsz;9a%OhuaWiyNAA3kRBV3))anlN^di6T%)A zjVS0n)VPnYc%Dmqntge6XWcy}ss_e^23g(}Q`QGup!7oN@&3T#+2><= mb@q6t7j+liNq38hYT>_nvakKPGcjiX0000FQtfgmaf zE#=YDCq`qUBt#QpG%*H6QHY765~R=qZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1 zK4#~5?#|rh?sS)(-JQqX*}ciXJ56_Hdw=^s_srbAdqxlvG=BhaYkq$ewHUPpbsRN- z8b*0hBN-yE`ach%PN2R+y^b1xyS^vYaA%P{0B)C}TGSVIY9nx4Q57f`g-BQ=3(v)D zPe=Wtd7%(WQXl0E1}1Cz!nR|m!dOgn!NW%nYBh5}NtNti2g*!8Xk4x|Mj*C>NiaUs%#fyzU5=HSJJNOHlQqY?|vw)nU< z2QMMS`lwSJ2Hx}P6M{KbaT{e*9AT%9eI(=l&SYCYM|Ig4rI}dB5qd~wj*Nx4QJx9# zIBAs8%j_7~&YS~r*CZ9*v7r#G>JGqH=K`>%Cppo5K7Ymi`@M4Hq%TE)WY?~6BEcUM zP<~#WN8ug07J`z4J}B(;!E97f5}JKL(X{rPu)SY0B9!TP_yhs?Hm~6u1@Dj#7NDxT zd{CK$s#MKEfIkjM={PS|7%w9Lck&33!aK^qBS6Xz>sN&;;@I6+q^RQ>aFs$@8v%HZ zxenykd4DOxJ773GmQ_Cic%3JJhC0t2cx>|vJcVusIB!%F90{+}8hG3QU4KNeK zmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u7JyDj7`6d)qVp^R=%j>UIY6f+3`+qz zIc!Y_=+uN^3BYV|o+$vGo-j-Wm<R zS$}xdX~O$Yg=geSue3vW@1PX^2Pqgc;1#9_uPTP~j9w;ZND^rqkiuhAB8Yn75d}l( zInN4shMvYGf|$&hM>@LV6yMG>^v=H@#E$v_c z;k|a$2M;%S5%$e6j53blnKqfwHmE=(;D0K+l7~0B^#+XJeFJ88=!a+rJX5E$s1u7i z^}~Beg*Rc3BE1mpf@k`KYV%(b?7W;BJgR~O5bcC#>Xg1L$DatG2}6PBj|(s2#67Vg z+6~Y250zrAhS%%7L{8)Zp6LKbxe`)?r-it%>n6kA|=8iMUiFYvM zoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS*ZdmT`g5-`BuJs`0LVhz+D9NN za3<=6m;cQLaF?tCv8)zcRSh66*na@qY=&sd0?S|&MDJ}O7BnNgc7XiN=fOQ^B?u*J zL9DI^H_BDH3B*!+A=rxG>mqY4 zM0QLJ!^4D;-*^T*Q{Mn##xf8~RwJw$1h^p#P^_xgK)hf%MBBgS5EEjH3V*NRG`OEE z2jS^OAQmnMao*=3me)q$QMnh|=R_{PXcGmoX#^&90F0|Y3GPY7AWSX;aVEO2bPYO> zfNO|?7lCL~ICJw=F9o6u+b&CRf6WQVn}V*J@g73MF|WE&Q4DY~AzGMNxcahTP(8<~ zYxxy~;u`S0v;|xX8%Kq#E`Nv?IgtPy0ghS(;=XPW=B@(|LUC0$=muzUVhIp{y>Vup z?1QLwwr<}U5az8<4WhY;g|fOr0JhT0Ri2zkJ6pFm4T$E2Gd)NL0r)J0wVqVe+n)AbQCx)yh9;w+J6?NF5LmoecS@ieAKL8%bVd@+-KT{ zyI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^EkL$}tsQt5>QA^;QgjgMV83iI%^s)DX_K`0jg!)|u7T5Zs=Fm=Ip`s2bC17?Wgj52`x{ zF)qCGsQXk_u6PxE^HG=RsaTF(1Rkk+UXZAgubV0N&N?xah2Uh3^Cs#l56?g(R{cTq zPGkefkY@O5Mm?BRZGDI?1^+6lFUF-zrk8S@Zd)tf5EkN6?7ySE;%oFnVHFUn3e_v* za%}g}ss*bzcO9*yRQS@-3Ia>*T@M@+EVZj2)&)!LJ`bqc+F{``yZt{*+ zKErp#cgA;TVYU(wUdTUI_3w7@L)J{wm#hix0<;Tq2cYaf2F|P=+C7hiz8}ccKY#gc z_)UD5e5V%17a4CPqQBdHyn2rvtk!-LDL^F{8myoatN?47_2V)G0{Oc7Q2TQ$$^||qHgRYc8XD{Hq6IK7S`?w8Oxez-9 zSZd|M!tWQ5dm{)u8vlIvoPmW&7Z7Qn=DNJ&HSt}+;c@_VKpq|}b@&SaY%LglFV$bL z*qeSJ(4tqw{<%KRSy-5K;4JvlDf-8}lQj==b3iu?cCTmD?*tec?1X#2V|}~%=S(;o z3v(%4a`BpqmVe!SvgXV#9C8B8;Dc(w3|<2#*F%F*3zj$;`{emEe4qlDQw;;U0cp@1j(J#vp}{(~yMNAzvkLtL^FIREynt;62F`;S zyvD3vAauIxj`N`%fq9(2L;Q1A7A6%;%7xQ4*QGMRhl2wx*j*2eb-73O((3_tfA@tu z=GkffwcmIJLgH-Q|Ky#ljk^uI*If_+K!YWG&-3WFbNq8=oSlV{fM5hKF;3OiY6s+< zss%%X1F!}|gPq`7Fi;DY{q%Zh_q-15O#hr6XQ;mDumyW82*?xcz98p?V>rD(SQ>I) zpc(+54R*}~?0Ek{h6aELp5D`SwK%|O7+POn`x_{14KE*~py?LkW5{1mr zV1{Eo9Q1xJLlMlgv;51a*g)8YT9=`0BkcKGJ?|IDf31aKn1nc6{~sxvoT&#(tse-M z+P&^R&$T}bh}wT)NfX^%*^;sU{4;g`Zea}nl6R)@P$mYr7A*Fw7X;`R#u|(oiwyhA z8C@5;o&0~LG)6rO%XBE#>*1d>Z8U~|`SRKNCM;wX?g72({Sm$Y>nd7kWO;@7b12r6 zv476gBKU8p^3FDFrY>v{EVSCR0Spb6@Yt`<gGqY6et8z_~^+gV(_BfkdsozYz=# z7SQ`)HdkO#`oFtvfYvuRDb?q&4cNzjzRlL;pKCmgA2@MVusl#XK*Aj$dh6#wr`aFc z*)J;pPj-(WOD$k8|D3I{Kj>072o_q@G=Uks2A1_=05CLI!d>s4FJ!+6{J%Lcp$04e z5$)lh1McD{c>K%7O~l|IGHV8))%9YqyPt&GU-po_)2z=6v>p)ZbLjsv%ST72D4oyY zmVO`qtjCQN3+@5k7cQap1N8nLhQb5=bLIcak{Fdu&bgD70sHx1Fkdc-ZKiu6`Nc7? z)M>A~5fh9aF}M?x4tpncv&F2f6!BVHW9v*r>x1kX8`1SMf|LxjNn#8Ne3+bXY>vd$u|4$owXdbT~eFOIJZ}baiw188CYr)(c3|$JAT3?svN$uV*;s1s6 z_5X+Feu}SekniVk+km%!qh6>44gfQPTClR;aY4TIWi8-~8tnFiwXODlNBfX`_2?P! zptpa6A4(`2pp|t%srT=f{qsHjKh`r!oBrX-fW7^jOB-$lGkA?zt-s8!fuX@}xcBSp z{sH>>e`QdA_2?6@uYZ#$DsN2yS~JLNU{UW85E#H&{$BtIwH_Wk{9kVQ+^>D z0{^acke2c4F^8X9I!3(x8x~3+(3iZRgCz}ARMzZ1P-?9|IK#l8!}rtu-`Y7sYa5$6 z4;N3cuYZ#;QWXH2IT>0YKRA1yUi$bmI$%RiUgut5soh^FWxc8sEVa5H(EBm#{vYZc zrwzP%j3nR@Z~sPIc(74vpdIjobLZ)U4?dt*Kl+5eUK&HK3yy)^0l4=AN}%wq_m;B#6JR7P~8Pi4Gy@tHW4oH&W9h-&BgU1AV+}8dC=fofG_p*Y2qz!+mRHddvMA z(LfYIgLTL!SmHg4pPsEjT_i}?&;HsTYMEb-G~8zfC$r+;T(Y318!WXuV1eJBsUrQ1 zZoxRCTRqP`Pk0=x@1?$_mB@nS-=#m$JCQa2Ms3J|X672fj3D4TgsI}sr^-?f2nKML z{}&)7WDmy8P5m?$UyUr>H5=}2-D6qxZy+Sp006P(3K+QUM6u{AdZ%?hbPrf+tsivC z^&hqj(#-05WZ^DvY|tM&MzZeTU{NX14`7_{aR)4L@9{HqRki46_k)E_cO6jcF=O(D z{JL$J7S}f-3wObu{j=7gocK2^G69PB>L zr>0id>3hwCIrASf;9hWm+Fl!Qy%MI5CqFwug*9F1o8kG;U^njXo1pawUppfsJ#}gbH&whH0_EvRpKXu?M?HV|t!OA?)sn(wznxZH_{mZL# zZPNfL_nkHWMjpVM!BVS%bHJr|g2UsbPd=lsRd?w9C7fSC9q)|IMjCGWVw}F((2sDG z`^}1f4!Dm+TDY>V4-8E|EN#drT;SD@KcRzFZ5NIAff;-T80Udg)(h;IC&Z`3!Zwt1jwab&kNdSA)FnsdK94<&Gu zXxPX|6k1jqqE6OZ{iE`xtcD9ba{LSx*r9O&PYut|W`yC+uC3FLJH~Ji3~22>p~X5F zK-igm0c3x`T-7)velP@Pa5Hd9aP1Efa1QX~(UVkI*Gq4V&ry`03#;q&owiXCk^@Sh z&}zNlKo5bFveM5pyg>;V&9nm;c!G0+W5m44GC|a`(ond0~aV(mVqHsev_j0J2uu@4A2YdAw%$ zm#Z0E2o8boSGHs=*tg$)n~IBzInb0C85zk*$TjnEDvH5#?r?PsEcGSo!O;8!%MH$k z(9A;Lex`iu-bcUtF1_)_8}!O6uTV)zi5jj9IUbK^E!^VSB`Szr(tn7+M!?Wu&;B|L zAAp7~1hry7!MB~M$o&2Dd+*VkZ@x*dzWOS?_~MK7?6c2OMMZ@(Tp9B6^7594`{~po zU7e+FPL%L*>EAh|Ni^*+H0@TOE0}d&p-b>J@wR6 z^w?vMQB6$^!iy~Aw#x((Pd`nMKmIs9{P4qc|NZwh3=ZmRdcZ zVNfig1rDvRGrL2^KbASz2OfBU?z!h4y7SIEsima_VMP)$|8FD@56}AgPd7k>o&I^Y z7A&>?1>%5PM4(`3a0a;bT;(ML=6~06sJGsFE8TY6ZPec0?j5cSd2w+u^#4Y3`@pon ze~A__G}ssJyl|EXSPlVR4Dz( z~0ut0QEwS6xZ;dc|F7O54k_SM%UYLF>j9iLpuWs{{_Hcp>VSig$0u?c?$F36-PF{NSt7yJ zU}$g_5ia2N3*ZE<5zOEw9d-^4*7e<5$a=W1#X2rtj>kMv z`wwwGyn?01dO_FpGp3+(_V-EyE&yNDV0~a8$n$ROopFYYaGz@Gl=Jvsc=Y~-&fHHy z=k)JQQRi&FZU9gWaV;48#D3XRLOoCRaD7RkU_%;DbB)Q$R-5FVsf=i7$vo1wZEC zKnqT;hX!Y(-wnMpbbZH!ww?@mhB!M5^G4Cn;h!_LFdS}xp4nP#R0m4FpdK*v3|JWm z2({m19&md5zaai?xU;nuhG8HId*=2O^vnfC%u*{C<{UVwAFqMk_0V7qTA%l=xufLwFeD{!3;y;J>jc6fRL z0|D$ESo)uW-uXChuuNb^Avi<8oI3#beyR0!S3fWyJ?}LC3vtfQ!blhhiK706>k^y# zEWj3Q4lJNt0JOd?`%CTEudic9=e%-FKYu6r=gcfjG6InTh5d^U{{Mj%z!$+93=MVy zy*&D-wXO!lYhbCdzEk`c*{m!~Dj03yPelJ%*gt>9f8mUJ0sUa9<@zF6>U8%59`%c01z2za2#b zOZ<-jN&+7M_BAMbW!hf`ra;t)y;{E_!Q06{{;{k+xdISQ6!kA(XNQYh=mUY%y&$jx ztf~D6z!w4S-(P*=qxZiQ=PWEtI)F$EdqWe zz@op>4|VSPsQm98T&%?(h0+B?+TcG(@9SUO69g>>bfXXq4fcj|LD0&1zV$isZ-ZT` z-8a0l2QM+g03s9o9Ur=PXsK4c5HR#0_#&W{dce`&d13lI%V4SXesX5vC0qWBJc0!v zys&?G^*{CwFCQuzSZ*pBif>}z#KkEW2n|jNtSSAV{m*lsFOao)`0gy4_%8WQEsQT9 zwhUjLp?}^#63^c^xbpj=;pJ!d4lbWA8jN@C9aXtZ4c`&p72g@(orT#-{2zd-CsMBPpaB2?002ovPDHLkV1nbV^cVmD delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 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 delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! z*yu*-E@T3dqoJkwK+18}@#)AZuW^-g@it}woIK7hoXN264W(iQS{n~kPujP2(BPqp z4vWPKcLrM$1dq!PV~|?Km^AQrTt7{BRQ!;&S-?&G)GukB1Z}o<$lZ7azzE`uJ?)I} zSa!$A)?0d7yTobi1%WG$a4%jEm#H0Gyv5IoLst;(sPW{UNY76qbq?Mj+^z@2t3|TC zkcv4hn}hlpnANfhq43&&haH-ax=^e|q}m<%fDYDqrhm9~ljZjPI=;Kt+pEAlVEe#! z5$?PAj`3(j}J@o*Ldb$M&Wu9;~A*BTb|X2U9!pB5#bY){c&^=bQX;y)iH0v}%g>CTw5VxBM z>JI`-KmN)MGyN5nr0e-ESMVg!$=KGM=<{K%V@XCbG6#U6%Y(UfFxAZ{^a3ZCoocsaB2F zjvM*Jz87^}oY)?1`)l#NK||so!kw>T&J10@u#g_y?~mMDo=o88g7$Z0kQDh+q2=+o zcbBu0NlEkm$0g<1m-6_sZM{FJws_SpV+$BtI@w4rMrsDgW|fxOIRg6HQ1x{SLPsB* z_u`T&6MsC|C0=7OXR%`{Vvq@mAc65DNfFyWSDyQ}gTq$No&O|;O{Soh6e9PCQY8w6 zkEcXEzzNe!XJpAuq&K+5S9GJ=D*Vj!e}?QCTGXh5scN}ln(acaVJO2L5!*1K{hK>H z`2`y|yl7FTW_Umcd1qrq#u@34#E9l!QIN)z>nqWeH60N(tu$rpHs$C1o?E{o)u!GC zJ$!cUIIv-8!XcRh55M9F-Oz4DDRqnmAl+5?&G3P^jRx^^<)qrPqZ?vyi*-IzUzX3& zZg_aH0^w|`V80J@S@jVS8KmijI8YqlexP&HpX@xu^=tHOEh{l75xEe}(i9-7AkON$2h$#9~W>&Z| zs+@FaX)8S9k>`76apEjSaSKs;c*)SqZcLDv(=i)B&ZXyi)aT|qdw3q)!smUfF{gP_ z{&8kOUnPkXZ{lHFD>+lD9dt$#iDI3M{e47Sgn$Y$sQON>)4q5Tb}GLnf3P4+?07-N zWu{ARCj=>Ap+-VGK=wHY?FXfZ`UE%p-ktMgDUj2%Nlwe}B;zgdKEc!y9uG$k2Qa&R zOwv*(&F(NNj^}2z&XDh!-&s^k_w&y@>|0PsmAUzK50pA=l#~QbjTT(#OI70GU~-+F`-h_g>ZLOg)QzQ^AonZcL=x!{rPlz{yH!yt zVl`5eW*S)8QapS{Ma{9}DA)JCANhe1SFzY+V!8PjmkO!Ik!c|64U(ZfXDpdocN0tj zzzUSCyo+CyRdH@dO?cBP+mDvUIn9+LJ?2E$aeLPpCFP~^;+{R>akNJ(yL&-cau?}; z937zf5!AlnxL1>=g#}ccq>Y0Cx{Ba~3jyg3a(09UC>e@LT-~p*dxW5V0lRkJiw}Yh zrdqgy$E&VUC{!U^sDQRW^0FCyU7UnT{%oJ>bTR0a{ zN5P|>wG2$@2m^rrH+#$XU-z<%n(!rmPB-+5%oU`vbHIO~ zw8Yc;8StR1g`kQFM(G9ozZx|L<&qiDsSpjrE*<%N-8MorYEMGveBMYQV;r zw~jyg;J)JmdJR+VRDJI+;KXgRMnn_4^W#OF7kV@FR#9E137P$yi}C3Gf0c7XTfZo# zgn=%n>TX=~Um*R%$B5hYj5O1S>^aq^1XqJfOEvsc6yQ&M`cO+O#BF&HJrxNTMU*ZO zo5oFw0#Jj~{?8b804xL2&Up&<$Mx2Ii*>pYkBOH{HlN^WR2+2+@)GX&S2vYG_AB!$ ziuDqaq)279sPm2G;^Mj)t!-Q$ca9tW5>fj46(=vhb52$IV_FAWaA8`iJ4s1P&Sfms zL3%0s`*+EHLtC+-rXOCRGDHM`M2eLt&|0k&YPbo@7USX4Dh->xx=$WIrcLn7xph4X z>n%3)@8syRFW$rp1y=ydIP8?pN_-h6C9Oy_Z2xh3Vq_$2t@-+p@p8X0LFO>d5&ayM_bctm-tn!a>|4i zlK$aM&32~Ya#v37DhlC8c|EA&xBJgp-t{kJWwbJC!e^cv;zWPC$j*nNK+`!OefrLG zY4FTBmRy}D@KN*r0gea0Q+HgqToYD=S{7LG-xM2ZK>pl4md**3@Swj$QOY z=E=PQWGu0a@ z1kHp_#6smToZ?()7l!U!3JPh_ce9@vh`NYLs96tXx#|~Y^vzTw->4{SGT?xPmkax& zp+VW!soLdCZQKEI<4lYnL~P1FrziQy!?imtCPWnIIU=5iVYtR|sthe40O>MLgWVmm zA}>Zt>=E7e_V$qOvpL`6M0lPbQg(22@rWmHp_*H?jqI6`oL|54pG$Z=OgjA6ieKm! zNF$5;VG^b+>iytiCM9n<#Y|__ES^54|Ce=bslL8m`rF)6mLku@;tb$UgF=4epV6R| za7W!y!LlCHEEtVML%q));9yI5VR{+TFXr{$OkMx5%c90ARC1?nm5CIM>x+;dm6h>X z8?|HI?>;I<`XL*|f;2CU!zA46$V2R@?30}kaF+>Z=YI#rl-ZrzlYCj+Qt#a5JDYqd z0E)FU2_6FiCUsUBbI(`4? zmbVzBD{R`N6xs9GKuNh0j1}HI z%-*rgPAS^7L&#|>>adNu`66L$rJECPl56F4i&pFU-nwRMH$W7AvIvZ=d~ts(x8^#? z9``ALPi(Sj5ROcIwNifa#(NdGW~#}uLUctP%Ng*isWIm3`sLEb&AzT^7qlLfiKwyzxCCa<>18Emsh4W8t8+SiDHv%Y&&<7&=4% z@U0ggcnm@l0V%aw=TX^8A1V@2L8~p6Y4hE9veZ1Lw7tW?2@m5nqP)=7YGW;idUikD z>upK=6Pfn3j#TR$*ns&{&q7&VcE2j;;!#&uceob!7M6&|Kc6c#rw<+8!SOZb37f+X z=;*Rj+=CcQ%s=|k$1Cfvlfw5PS>tJg zB=m0r2RN8|=4z)B!QB~^0zZ_YMqrq%R@!pfk(^FN6#V` z$emvD@NGNbKyYj(I}H9|LJeU;JKm z^tqMurRb%;$8^^>zK^4}{mC7MY8d06%v1k0Q-JW=h+AVLXostIhc#I{xW~uJRrpj+jfI@RGzW2FtTs3tKNmjfc7RxYqWM0Xq~Q4IaIMn&aH z#3O!K&(W<7{$>yoQ3%8br2q#+Q!+O7@r@gouVnO`G97I^9BS6GK;K*jRd;Zbowjfa^Y?DWR3tWqFI7D9=?H3&rdD1~ z4PsnP-FTfg^$}{9axd3ITi^fNoOQs9Nxpb(EI2>SLja9WA?L#0DKz8w7<@%}cODG& zqAIK^#2-*jLcM%`;=b#?K4Zc`P704!qv}m>rfXOq&#cm};)wsP0Yg2gL2eeN;;|{B zC}ccYEQ@JDSHTI)N<)4^T48Cd$W@<_kFYQhWb8;+N`ggzY;<@AhJ+^tCG!L_BX?IRIsg<=mm<_@(M6>)-3oX(?hkIk`J(s zXsD!0mJV;JJdc`x?(cPeWtqA9vK=}rkhhv!IHNL<4@Eo=g_L_C^)5+5N<2`MXthZ1yKQa4W2p1zC5h}? zII!9xuIw%}+uh2Esh+le#P;vJ>TU?=nP3Zd+j|Bpq_+@^w>epDv7KRfPZ0YtO0-Lz z!BFlxx%Bd#DrYSK0(P~lV9C_}jD^YyG~KDEbXVWV-Sh_y8O*E5_EaGNJ8vMOR#YXF zUoBQ8iwR1JZpEd-S#z$^QU5LEjQRyH;iGpzKVXK-w^Rq+LIz?QVtMJICoLpW{kyL8 zHR%izGiCr*ngU7i#to}bG75LaYiF)Ry zRwE^3?!)f*Y_TgFHEyP@+NfMG+}JXCbrAJT#*p$Sb8An^AodHp0;FhcszZ_K-z| z?N|VnHUXw$Ci1|&$b@x#y7@_xT|)XAaDXUfDT#m$3l76E7EAo}1rXg|+N<1jOLdyt zxY#FhA=wyX19pHHLi`}&O@=ko^-IU3Gj9zfS{+l<`1@hMB^$xqwt(o_A^VbjyimG3 zvU6h!+R*$%TJ{`q>3WhVx+H>YsrmecRZ&u+!ay#A0exwrXlSC$3Ws#(d5xLd2dzig zF<|kN^=T|SIG>;I<26_?-)zpPcFvQ;KhZGinyfedn*m8M5Pc2lfR|e)7TjPE`l~Sp zX@S7*a1)9j8-$UZfw595MK2tLpke?+PADiCugEllm zD_)&QC|nwzR#$5hMFZy`;dRWiO+)~i!;%pAeLi)WD;Wve@QK_fhQZ{OXJ!nVhzIPC zc;DIUSTv8Qzx7AP#(ztI&Sgrs_a?(EN7MMAo}b4!4Qa`1D+tC@&6R!P@KpQYdj^#| z21!b~)+R#e@$`q=U{7=#G*|0yFV)lfs1%wgZ1s^T=P}Jv(W(;7Cs0l7fVj`kcA>B! zb+zkK)MpwoQNqQmXO&fX5g&?4%we4_p>Cgpm=d6pb~V%-Nv3Bibut&GFE;Ps%u-1O zQ~(ku84^p3y}lKC4$n((dT5(x>oC2?ctHH*Lb`=VHv;g<9$gY-*I^<%EEe&bs;4SwAQ#!^TsP(FryA67eNGv9^Z zG6q!~4>H~;X+*_<Gg#?J5XG#34*fxKnv8hNuewgndd*uJoPEX- zcj;1%1l1*Y(`FOwkNc)(A?7La;skDp?LCmKiT+5Ia>MEe-flAyZ{%*h{#>m1@VkeX z#k}h_dKR4HyiAg`J^N|EB_tvN+~B@}v!}utO*qngwHp0~`&N#oao!`vm=j*L@wW)T z9Hx+D@}tx(xasF4WCPqBD#207P@){vGCoL`14_}>mK$I63_6a@L(DN^7AlnL6A*AK|+$PVn$_DH|9fK9rEI^+|+t|J_Hpn{D9;8vLus zzw$Mf)-S?7r%wqpPMq@AvrI(}q}ga5DT2Q`-Jw(FzA;x`p&o+W0IT(N30OWwX=M;) zc{dmxkp51PqZI&ngntDDc@*`4XrA(50@WruK69cba;%Jb$fTR`M;cA#e&3UeK#w*2 zlG;-+(8Z7J;B>ujnjR+iW3w5)a>ix7$8#^sE5t0w14p#MTM|wF1keTW7_v+;J3M3L3A|q K)eG-g1^+*MxH5nM literal 3831 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 diff --git a/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 zcmV<13?%caH{KbLBYzB~NklQEG_jup^)eW&WUIAp(iaBo#xi!V0Duo>!@LstO;|u#i;%% zpy^J-C4+Sfs(%4>MLKZyVj>w{7?m>>=W7y4S(mFkzT9E9#*Vla-hLJJJn9SSKqLI8 zhRPci<7*}=%*~>o6n}IlTx$jo=`vX4RNi+sQJ=1AJpngwaDGi$JXn#U| zU1p$|a1B9yAO&`6h5i8TKd928KqkRe$%7!I5Kg6biGQ_jL(Q@jG6}99rHmS={C6TC zV$g$@KqkR8S9%g^iF6Xc>gNSPCXFE~CD)=LPbKHFd-8%zf@>%$NX|u-#>tpQ=QP6L zLp7$ps8f`=s4`?SR%}+*4~*e^AQ$)AMrVsuU6e4My;)tql;D~}a8czr!gwfStCU*f z^qTzTgVtQ!#Y7G zxz}stUIm<1;oBQ^Sh2X{F4ibaOOx;5ZGSNK0maF^@(UtV$=p6DXLgRURwF95C=|U8?osGhgOED*b7k})mNly5A_UeT?Em267C0wEf~s zhRVZX_{qC%a3K_TL%SAPY^n^{3h2Cxkt#>Hs*l(!_MAUF6owxoT<3!EA;EKBAOhYhql0`2D*tbz3IvFD8DnhFq$^fe)_sRpV1MYz<>Q1;= z-Om79p7KR1x3|R>S38%?(gp_Dn*^9Q+hWwcfkt%0!wj(F)FLT!6=@!Jh5>eg0zPG~ zB2_B`>?#4495n!fp(KcrSO!>C>F~Owtv&sm|pjT;&K?lS|=p1h6my_Qdh_1YpyTdVjbrl5@Ee zFjnmd*{@Hu!vq^4Qw=V+JD1}btj$KqRLflD9&j$l#}uiM73)mWifzu6xjZ^(Ew+;t zV-(>OT-6?g%N3W3iUpZUaMgGeF2?~Y7Gx@BE-%963c#$+WL7%Y@z1F(Dgl^PPG+TZ zy>mI10BagsY;rE|16Jsq%zugreT4t}qX^fnJA*K&Ihed~O>ijySibGj3g=3~btwh| zb_L-U1nf4v9s1{B@}hDT!R39xa)r!_%#{k)&5c1QX$r#a95g#1QxPuL0+wwiv(&jR zbGQ(wI}k2*pUDo$(taG60?Z82o3I)9fZ088g&^~Va| z=G>KYWr9rJ=tppQ9I#Z#mLgYEKBw*qUbKk{i!m;dvONQ*$ovkngovijffZZ4A6K|CSZ2n)` z;JP^uik*Gp@?rGQ!;~zWeg)^_q@X)Yqk%rz7K8%ZOjtr zQNIDSNe%G*C2zvjus>n5b?ec|WXRfmoz1I8@1S9PUeeikws~j5?psv0r^mTZ?5Jd-It!tfPfiG_p$AY*Vfak%FG4z#;wLtw&E&?}w+ zeKG^=#jF7HQzr8rV0mY<1YAJ_uGz~$E13p?F^fPSzXSn$8UcI$8er9{5w5iv0qf8% z70zV71b-}N$Ry|LJ!2VY-x>#j(gmQG{Q~qKEC#)t0rni|l`9aimpEYS(t_0qvI=#b z%(sAbfGjG_$(k}`E(X_)-vj+Sb3h+?KLWN8^l`rged00$Fm@JMvo!woB2UmkOxEA!`_kuq95p=I74S%o_jD~1Tm0s5&<9QdZBP|xBYuitJ!Q1Q=?K*HSMq`?ZM#$`lM!I)oNPx3 z2JMSL@4Cg<7Ds~q-FrbB`?wM08BjAe8*o_wR@yn40wW9p%ruk55waizYL`P`=xigr zGk=)sw@7Za-g3B7GubEwG8qFbLTJg5#S@<<6>JT{-H*PCZn7GB&e~!ueivhhqC@7v zcF6#1C9F&!!wN>?F!nb)aG_sLEVvzDnPoCB&&e2Im-v19%vLkV+M)Apw>JWXlZ5dO8W2cQTncxPJ=_us!1aB&4!*vYF07Hp&}LCRlop0oK4D zL@ISz{2_BPlezc;xj2|I23RlDNpi9L zgTG_#(w%cMaS)%N`e>~1&a3<{Xy}>?WbF>OOLuO+j&hc^YohQ$4F&ze+hwnrn}4AD zjE&I4Cb8%G^6X8ZOOL8;zNr7wJgh*-#;;5)wl>LTRjvW8 zYy}KlxDC#J_C?~j9AZp7YY=sVfU7&d-I78eRgRD?*mxM~R_uitEBC?l7wuCWYF5L3 znEcc(XlVYIldUo$w@19~X8d717=KPdKhGaq^8D2C#01&A*qs2sJwRD3f5@V-xZ`pV zb`kFX&P+=%r6sM*xE(`)Q5EQ3H8N8&WWvSv5M)$&!u2lWsDpc%xY$4*)}nMqNtGjD zrKav>0@-ppqom5=%#qcGjBxS4)OkSr66&ASDyh1f((v2UsNTFi>RP6fTz_m3DnzZ4 zD&2`QXCu~SYs>)I9LWX=GAg;+`Rzj;W?tDAT$}Jeneq*(s00fy=LMGuWUC1>suTvc z3P!rjU0sEKet#{sOW$WMamKin2l_zXaHWClS?S5>nx((a7R7q6lDH@gt~8L%mu!;e zWa?K$GL?nms*h!GrO9L?P=6no&`qVLYn?`o6BCA_z-0niZz=qPG!vonK3MW_o$V96 zzM!+kJRs{P-5-rQVse0VBH*n6A58)4uc&gfHMa{gIhV2fGf{st>E8sKyP-$8 zzp~wJX^A*@DI&-&Blxm>>9MT3^@I z71VyzBGm1vYw4(KWw9G0kn;5#P*YIPpqjw=kG}MK$?Pk(Y2g(AVSf%)g}O0y!)YhSqgGM7MnY^_v%@Miiq;lt7qKadq9|&X z)Fy-^k|%Had!Orip8SzB?sLxPocq4dbzWMS8L={5VWOa*V7+5(aG(79=ikdfNB$;R zC#6zQ+{nITp!*<{axYi8@v$mL0=L_yirM_TLs~3*R;A@#Im}^w^vPf7COhx zf)8rT77LrK_GcFwf7h5cfg7y`R7>GiW&7}L(gj;~lhxuA8m*nye9*POQ3N!>^|0_D z=kWbu{$T+$3K|WKfyP4Ppz+WIXri1+v>_D18g>|z$DO@c-I@EUt22v7LyMPZh61hj zT2FxLd$51^izH|L>{&;%CHv<#7+LJ+PzfB)> z4|y*DoHBiL6lSBWiUReNk582z-gAb;2Tp7b`Fh7Swz11Cp>Y6GWzAKhZ9Ve3=KL}B41PXowoFYf9Y^)1F^))F_YnM6$T|wgB zD_o{P()RYR8gSTmY4vRVR_$Yb@q|Y35l2|Z6l@1VJh5L@)y=Vp;T5-E24}J%;#Viw zPBLEjOFm~|9pU}MKcr=u?uERB2FSEr_E;Yd@wg&Gg01j3s6F5=oXD`C$oA=@EJc$$ zTm&*4HiN{2)(b&m$k*Rs@ui1veU_nb*%ciAPz{V5Ret{r{DdExM&8UMvE(X+v;Vr~ zV>}bUo9HZ(_Oz9aQ+W%$Y4iuz+ltam!dsJKNTP>Y2049e2=VDEB&SMH;_>B-posxW z>V3thB3ZK~Y-8!&Ir9{2yFZb5h>>rCT*-P|f5IbQ)BA_}^}!RA9OgZLk7Pccad$lC zXrtgb4*0{2iBcaahhtBcvx>Xz_y`rIeE$&kfA|SiCkS zm#_0zwW?}uw1#9NH&jmT64|@mMV}wrUYTG?w&x0oFnAmIlIUXwR#tKfTo?#5{>sp< zBt+n63tU|eh~7LILH(oCBb^R1Sh)#D{i$JpB=#LJD;B2uL3@6=-*B=ZCOYjVf@~l+ z_Ot4sZ>n4pSK92@hwE39C|Q|kF^4OONw*@wm^z^9tWe4AK$K;jCU7$wB803}Cwd_$ zr^q2okq{UP)y?5LXOb=_3wnr0wG8^E$rC-N?_g>|F9wtZDT;XT&ry*An{S(Mmq8^+fQc&Eg{|;7ZfIzUz^*d`Up<9aH|whUu6$yDH;1nT ztJp%#l+`?~?-j9Pt$_!!&5L-kVtx-8fu>SHTHlJVOWA3|+X3tq+ zkt)~jWxk97$q~W7)NZS3TR7~uL|$YO+^Aff=7-ZSr_CQss24C$;g1Z?FxjuEo7L3t zB>*f23{p2FX(fz!Ma&hNgv&E^q*u4)%Pq77*p^9X@<>UC7_q~k#v4y9#^yu$ic1Fi z&6Mp^7U_s&?_5}x}^!HNW)$y2XiVFccoN3tW zv~HT32iWV~9*Mk4I}_!=oK)jq0w#|}KU}|Zy9NFxibw*1g0iX8xN}1?=EofSV2K~7 z%Hrhd4x~ZC>JWln3E;g0clXS!UFt9t>QgCw4C?Wy zm@=913_q0IC$9Pk-xGD$0?t0hQ7~ee77Yg4}#>hj|Br@CUm+1;QYo z`R9&5LF(%2W9=WA62+g!5@-|`#oXkDum@1BZq9UDn?feCCHBcxLAD)CyvrHy@vJnL zMR?}N__n8!Y6w_?%Fxlii(xJ%hgkqi{mj=)S@KfP;CB-Zk5`Q3;XD?(D_O5 z4#=Ch(p%+6^fZ1*OkftieA(NY(slSaSCBECdKAF&3%G>7-%3 z&;L@40C+M6hXg98PPds$l@oUI?C@R(}A#7GBqvwU$Bl?grFZ1-{+%u&`zGpd;!!EHrWyUx(~MmnX^XGB)| z#P6C+Hng`jU=B;>188;jZtk!3V+gZ@VvU$Wgi6>V|5pABS5I)2I)CEYL9(H6L2^(pZdtEAe?7=?<$e?JDUTAQ^3dh>SNmO8 zNdXTy`ELpPMKtI~`P@I-IJ(UgG&M!7g=+O?3eY<&I{A=&|=b$#2uvp z>$UrG30Hl7;`5@YGm6+Aw*-!@(bEv1G38Ei3=0IiI{obH)V>UH^~%dqz_iv?bAFt`V{|(X{-)zso-BT>YI$zCFyt3#-vkVntoC-$ z$5D%D9&f@lmxb5J&`oC~`{wLlyz3M4DK2KBe>@-Nm}9=UEvFB9+3vKkxrR^3LCOqU<3sZMFw5+ly-6Vm^kPI8@c`N4K>Y;XHki~7cJ z`08(+?QLBz7e}6IDq2=L1Y4JSVyw=;bU4&xvk{N!wO$naIWhc>if6xhodqD^B+>BJ z(%0?c;@`3g)1NKq*C2ak1(wR=iJmpyX!j%mlKag!O2f6iwtjjEcJRz%N9R5{N2%R}(4F3D;pprMhw~K#I^l?* zw;_AX_?EPrDXpZU<&w$wRs7T6uJr_q-8uznVHru$VTjYJ%aXM5>h~|!-&MQev5CEq zG!Prf{Mn-Cvn@zf|NJeLJLf#A2@Y^E?wO%hh7Q+F?B5wfwxK%C@wv9dO-k$MWSFtnyLrTPi>$f++e2ZB9rX+F*H0dwoS1ij^P zG1#e7;E`g_!r96Qr-Fm)IjBzi&xa=d=860onut{%R=o@)J*3|~+eA^X!b?k5Zpm+9 z(kDj0)H6!A@J_}*+~eBLi(i#G1E+H zmxiUDCJV>MOS|1Wi%kFVeeT9_wQiT5_Sz9W?C5xil+{ajmnGF!Vvr~p@wyg?22E0= z$nloOeSj17TOg*w4yz3B!7$Qp?pp2o?PvWD)siDsR6>lpfE&YfHg6#8yJx9p#%Y~! z!1VmFH1B#MVvQww3w0fcExU6!)!a_ZfHt0k?S13kjeH<-p7*A`i#0r6mkpqxH_w>J9wIVd3dO++!nAdg2xTxr ze=O;Vi-f8D3+~#GfcFLE9xq*q+;p@IalKrkN3*}Y8cU0Ghk~oAv1q!)?iG?6Jqr1Q zyi?<;tLR7bT7s&~>m%9}}8#y;+qrOK4tC|SM%wVynVjl|KW6_u%4NU+ITec85 z$nT~-i;A~idsD&{WPL|r7LzC(rn_nF$o5(emMtv%Erwk1C1fY3I>Nhp0wP6@c(2gO zJwudvLMs=$s{DTTZ3KB)a-E4ZW2}vB=&pZb%$s00$hfjnsAe*%YZq$Bk^*NqvF28p z`l)?U+sn~y+Op-yE3KddYO1i;?n zRJoP!=aSb}d&)X}H_7t$pWV7KW2IgNh=4o8QQXt)skuKthjBC$V2dToH>G$^vW5>+ zBxn6v>*}34V8bPv)U5#CjSi6{MEBmd!6IxofCjf`pu$G8 zlte4)!I+o&#LP(!DyIZJ8*@jNlUOa0UuCBnwbt@%t5>eTH(*#S*GnGM;ga{ouV2d& zhv^+Fud9(Gmop?syX5Se??!5Mx83GPGo%us@MT;o`a>p|so%{wp;mKd>oJoM&26yS(>4iUoB3 z2{&j3ZUlCV&)asNJLq^wY8QCvuHVNOp7v+nA6KRUjymUJ*_r=-YTUn(-<5a~`Q+{i zyO78ngppOah%pPd9LJ}}DJoM24yjF?Da-B{|LQPQ&iC4QLQqO+tN zl$<@3{DAoL5-2VXcd6Kdma!w^Al#Vn3r3eBZN3PX>R_7FQa4P0)aVQR{i=0_Uq4jWS=2LCGr3`;>iu;Ij6x_0^hxds(UNGT8TsXy7wO%i~Ps zrn)7W;M!%JA-yVSp5AlYETh|Z$b9;S^oYO_igw!NJhR0jnT$&`{cX?SJBnwz)LktU zYOTVEIq_qg&fapQLYUzijk;XczJ1E)Is=o8?m@WO)B>Ts8+Q_#F1C=*uIPQCzM`sk z6AMuCpMkoB8Jr?*h=<>eM4b3jL?yhn!43ZaYtOtBvoUd`XPWqsWG^3iDlt4twE(f| zp<5xLVVSuc)r+cj8O8jwy4b>ok?g6%u{y>SWLnvNUhs!UMBf4Iufi*ngwFG9{R5-G zq?iO&1dxJM5bmb#osb)kt~V~s*t?I11RbW1=wQ8I%QO41+&Uj{-U7ZKp!!2p0nzvF z!Vj@bX;C^1T7gYUQ_eJJpAV7RLDKcB1i0sZ)6NZnu31vzmO~<`;fCiq*cmN92FKr>q5URP29dUx12k^Y4L5^`W~A`l6t{ zBmBxm823`baOf=|3DK|b9QKk)4NAaX!y&m|qMUu_f|;n4xZ+4$Jj1r6WWvveH#`M8 zv#%g@qp+0g&CN2P4UVUKM>_*CVaJfyXA}0J+|ND26C5h{pJLoOF4Ff^x#BcI!K=ia zQ6L*vrA{BF!xpFq6NpI>Tkgzo?}wXuGIO&m1aq@Nc1cfz6PG{%)F&tmpH$%?DEbsR z2I-L(74GS^PbdQ$IZw= zo97pht-7VS-=%KfddHh|5m8X9&A7rgJ05#^Do9~hDe1AA1POX$q10C+l>B|Jb4EI;YObcIwjUCZ-HdC+m&5==VXzk}JTJoW%U>UHjgirp;NkfUo=qGJIVmwrd+DA$5nP zoXmB-Pkxe|OYW5;b^H3VhrZJ$p#m033h*-O@jQ-LjXUaV0}{hlpUo@-O>VNXvD!-v zPIq2!T&f0+;(=okk9x3E;53;$KSPIK>I9Wbk^FhcQJE)Gc%nedq^723W_EVVF?3$Y zQfOO9p%$qLIRFRhGB9+ISN6Zm2c<#=4s)~rSo1`xuMez0D-VnRwu&rN^NI<-XsbU4WW!Fj{{8PHQ@CLBc)boBJR`*V2G?84z^ zAVB{sbc&L&x3%k*xJlLDv2;d`xCo`XuG3?)44-HAdtlej7yDP@+*2iwn*fOFIj$B= z;}S`Aj8(wm1K^_@x<}SI?^v@wqk3;?SF>c@gP9LsH%e1e0fSe>Zt+u7QzvhE5y9R& z#}K%!9Qx!4*Sb^(i%k0$t5q6A@j9J$V5g?aHO-*E9D-_oQD+CgO$-eUZ#&cAFD_h2 zO+ejTh^!4UJDa@81XAL8gKGbAD)=UWhOc%ti{81K{^3W=I;{OL7!sj*{8Z9E*d!mIS-cF zrgg8qJ`%fKR97eK2H6Fhrauf}!c1feQ~e#{xF|faW*FyjWDM7zh!4JS+pv50z3~{k zZDCk$-bcJR*SNOS32nLFy}#Hpoh5BAU~gqbt!pbb(tP}1c+o9x58@_p0)`|A$np}n zBe!)f5IOInDeSuqsUkJ17tcjIK8Z3~ZV@Kp@k((FA$#+>_ASrLzUQe<52juflvhzw z(lKU!wYn-1@01_Jh}kI z1esPw{hZ`-!cjReQuM-{mN;FbB+7WMo9QR{O@A^?W0MQwdz|RO*5l&vL`^ zl{e4l5tP?TA(6QFNc^@0ek~DnTJf^VPhCGGBt*395?YTWS;JBWpidsl9TAyDZxQRV z+NiqE%@|I$3fLh+*<7ObeiE}z=OFNShV8G1T_wI$OgeDgZrV{WP;d%59UsJ(T9BG2zNC)f1o&L0j{NRPaiovd% z&W*R<(YGgFw}xxxeZ};m>NGF0cu>1anM}mTBX3EM1OtW@16xTJg$XN>7t#?#%-kut z2|nds7;(E0hJINJhR$jfXv*|Ye{9O)s@nl*0n{r znoFD5G32S4mF$_S495MMBQ9qsT@)?`7EZr_8Oq;?x<2yOJyj;jOa2*W7iQM}bnvS0 zEY`uk%aa*945_{ zS2FWxS4ZW{f>Z_xnT#S@bXU9S7$!zHhFz`f3jw96E4u5Dm+xj~rk<6wJVqo}0`=qy zE%g@=j8%dN@v1x!mKp-T+iB5z*P7(;&UjL*?9O5MH`Xqj9T1ePT7i-kyWpJGtPn>- z-J{EFP+>lJvuu-mm`(Plrb_+{9HZ)vl8;p6=3|8JvP#{xT>lz6&XYOmvspvA2NBo> z!GXQFy@YsnFE(`t84AlC^Xt4H_(OS)tHD?dk$I(=wW5L8Mcog})5-zEGUJhx_!I7y`4tAwB8Zi))@Qz`Ta zk?&_)a-*t`d?A?6{e@3%I#>YZU!P#owc$+-pP=5ZrtF@7A>Hq}wwV2fugY*Uv>n6Z z2?`w%@scG_F*DTp0cJ`EyJ1UiJVyXk&%y^EgzL5B7im7Hhz-?3j6qsqZ0n^dMSM*W z%5~S|0G<9_UsiaHVN*l1YHkD-;>gK$cw%&y`u2(I>b_TLe~$O_PblWfz+UnNt|b|6 zYJR^g{aYM~R_zaK2nED`%zr46w$dpKc7l_FCn;QVuJ-aMl1SbO7zBUBw4@K+`5rn@@wqGQm%QN8-|{j%Q#Fp{5RQOo$G|$1TZQN1gKh%V-Rn z4Oxk7%n@sW`^K=(GOgYL3@Cm8H#4l5YqzvBJAcraFtLKiCk`WPLlW&C&Rx8oi#c-A zik8ofT0}AC`C1&|c3SH2Gb1ngWXUl5@G|WPXAdFy;k=|Pe`1L2J5=$i$F zI7&@8-$#}sS%Uc=QV0~q`r9}lZY?YOQkypyPV?8}A8zOz{x|65MT2E1ul$?yWs`Sk z33$u$MLhlNRSHqL)%G@-b>g|(ZfBQXi8>9+rY8}(Y+CY_q|n&%)u>_aL#ILr>7)*c z|7@#d+0-&rAN|2i(%D0ofj8?gka@&844zFwK9P2l^yDM?ulhBI9xM=uUc{Do_L^GU4~^zNqK;h7X~ z?StYZU%hzd%o@i%Mb}k1fUu@-3j=O@lJ}qFb8|)GFUHiKH=33myxA~45xUI~?)T|h zXR%ZY)ZfMQjVDjfU8`wW#3G|kekZcITK@VU7i53GiBDhFa(@>6fGgd`xIDI-SU>Kf z<^1Sgfn4DQasTcFR8l@=lpXY68N3F540zH>4^EDH?GVehSujPoc^|$VBIoP1d2=(r z^cjChLLw=XKN62`iWs`Phs5HmNWhx`zHr;h&$6rZ!@L=+as2&u+a`P~#JHGmK&Q6V z6jBJAp=I_T>7DI*Z!A%wJHSP5gd+ePv~ZG-Th>p!%V+ z!G(A+2O&<6*|Ox&6xCmGs)td)$JchlC^<$MU(by)9zp8J!v^FCY)R1x&#y{j_O|OP zFm-J*lH!eQ|Fc3C%zJ=3G$K}!^oZ=WKgg1FDDEx&g@=8)bUQnK%Y_t&FPu1*{Wn1{ zK!)v?98HF(FnyQSo0aU(6CsEs8nz;w+Nvfcd4hl$4f;vf;yEiNJ|XI8klG{rNl_{4 zTEbmKQ{LOva_y+C4Mc(kd0K&jq~yZWmrIjUs=n0eL^D`QEyz2zubaVN9-@Z>SkCU5 z<-j0hdC4c{if-}(Gy+zhEP#~IeAKlA{fJA~_zGNl$dfIy-Qe$80~`Vy;fVPwNVUqk zS{FsiA=+Yepcyt?T{rR~@q#=OQt0-|ZPb~8ty8W3Dr`})xHsOqIH{QH3OVBRQ{iWt zG2=6GYXEs*<8y8UAMfe9Xj`t4O}US$IB~73hfKVxc}Gs%~^;!ob%=TDrDX2{n9)G+L84m zl(XJudMJ&v6M5#P7;w?h=ee#cd#%pPZK6VH&dxG0K;(Y^q^;w{>o7@^oDz!l2oF#? zvB&{cL8fE{uw=7Gu$j+|W+i zBnlY+vnk!)>)hjol-m`KdxlF_BI(>hW6IJc8=UqwU&~#vj2!eG`BFIOtfC;~=&!j; zx!L_4NN#PzQyb~!F#76u2(yrgCn0}^&)p6GFp_-<3572S0Nu{8B3{`yQqcP|S8B)J zAYP@C9fjlM9GM$MeWxcor?{qx`#pE^F=aGpe~;fk5JTcL*I_1SATw)as&_umu6dS_De-44Vuprn~O?FBxt~ z%p;5TQa^C6qmR7wa9MB#<;G$ft=Iz^GM>Ue5U0R=GCto<(+^d)t@$bhwB#(ZidPcqHcSjlco zDDu$8=-GBCMAj>xx`)KP`cH>O3}Gf?qeJPR;O9_59lffVcF0;l+i?oG8LzeEq zUpG!KYC0v6(*yqJ#HLT=OdI01NKWd>#jBm+{;iA7%}g}*BUfu(zkW2sXO?QTH^0sp zr|A!fMtl7}qz7n&KV<8j)WaZYFgOM*LAv8kZk=`B(RwCt&l=NqlqCfXpR!HoZQu4? ze|{^2so@8M5Npq@$?%2zJdmVSpf6EQQpX*p(a*%rB+tC%QIzEv6U3{cc{Db%B|e-= z+)?f9XO@KbZ|%ljF&-pE0<5I~^NG3E?atd;iSR;yjVQ;(`k?zv z;|_!F+&-4I2<^kIf;lKJs^Ius!zrQt)UPG3qn9vQ1Kvh|%Px1^94&bBSP=QNSY!E% zpL_&LPl9N-WD5TfGz}N~eXOg|`q^ixfwbQ)xP000KjnC3ZyeDowPN-`V5Js@0z-wN o!O&qCFiaR0OxnP^Xd{Y{)%3ZzJNI|Uld2SV49yH`^&DgV4^qiy*#H0l literal 0 HcmV?d00001 diff --git a/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/change_notifier_provider/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 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 iW8_KLJ^8S) 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/firestore_redux/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/firestore_redux/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/firestore_redux/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/firestore_redux/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/firestore_redux/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/firestore_redux/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/firestore_redux/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/firestore_redux/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 zcmZ`+c|25K*uR((uA=LW4tr(fA1gf=X378pYJ)(bH2~>ea^Y(-c&2N2?v`X8vpzSFoQ^@X`%Zuopy2ydz30K z;;IIHkz@F^c(~nEQ5T5&taK{xiy`FM-zgFS^tz;{47Q#*wGsX3=%#d!MSjToVps#2 z0g%vJKS1QJ?dKMcPynFe9r{zQdILFf#xoWG?lo@(lii+u--%a#PV>vl8D1rhI%24e zbaX+boydu!m>AIMWF^(8hgKQq0q9^#N`(Zf*c!3R1oV+soGf{g=N1A}XiOfy9HPFR z0i)=rg*12k)`1McX<_xWK@raaWL?R1fb)f{j|SDyE!zeV_+Ou6D2`3nXp`Uaial-e zcR<~t8~Ws|;98SpkV$#}>z4C7Hzu^0oHb2H+w;OGBw$Y+cvwJVczVJ9#9BKuX^@te zQjNd->Dog!r=u|hoKW8EZ8xXh{6HQO)>3ErvZ%@^SL6QoMHvR2nW9i6- zjQI{pjRwVns5)V+L=uIcm6n<`REHx|s#ryNu!$P!+WJc?5Q29{(UG zMItMPX_EZN{k?y%`XF%>Ob-&blIJaLPZc+&>lXHGSRAE_-ev$QO36QV294>&U011s z=E{MO8q$4fMM$zJPjUN35#gVu#mkl^{M{lTs%j&&oLr{X#|1@@{f>>pLRfD7udHG&E~%22YSH z|MmKX(@nqr*J~RtV^4i7Mz5Px;iAmJ`j3)sYypBBD4fGQbG;;EM;*}r$HY6=6hFfp zN0R-wK?`9GXLS{CEJO%j`eVs?PZ01_3DpQihlCb&!Y?bg&#PM)uKJyeV~hVm?&NLM z&4{l}SD+_Cw#Xi?yAE6hZI0w#!sGvY+H=-vFST$NZiySi+dJH#vQ^>%5VY?I7vS}W zTwl1&L*W?@=^RE>ekA!Ry{KY>YQ$=LXYRV)9nlc{ja~d(mD0vNOBopc>ID25_qQ1Z z0M#b%02B=QE99=ij^O)z&7H(W>8SP7Dg55vSeV-=m=@IJyteX&!`*9WEu9eWg{>86o_<;{w;6U3*M_Z`((>?h?5^Y;CvX#-w#Ab&4{U)qq&aFJ2F> zugJtJ?C#m+J?@O5256thbgA`=GL@aHDs6@xcNZ?(H}sZvIAR)>@CtUZlaT3DoCxsK z>|w<{h4 z^Xw8j8^?t;A1z@R^c9y(?>lL84%-c#KWGb?sGa|;&K#!~EBz~6GM|xM9sBc5so2g& zN?>f!d}-}a67JdJT_Az{BFPzFoBA~OSDmP#-1{A5%7B8mu>`vA4A3dDIg$CiMb33| zjJEXx$eu*@f4UG_q52%A~&(hXH(&; zjAb~`ak)}xAg$UT2eZ3!+im_nNR;tUg&QzI;+C$76zuViQ`DNZyVy#_eEqSukG9p< zm?qA|b<_=BExO)do21k}sC)0w2_>8gw*?^lCPgp3b-lt@X@Z3ehC+OIYo{g0eZ+u- zH~RaaH-)+x(uIiq3tbe=%bFG}afK4$nzG)p=P}(ZPNmqbY`$NG1Ql_hlVF&48|QA9 z7wy?^g6k!I)fxA>10+CX+b*j&w>%#%Z77n*zi!q)93W;Z--_%HsbByv7&cRG9w*%K zQbA70liB`6HkWT4SSot%DKP?_x%c;4>Q2is)kDPB6y;_ePpp(?ZsWO0`9)&}C_hHp zKer?_TL3?duWrT6mmsnTDtg#SP2d%a*Sy0wzA&Y*^$m$~^aCE9@&4S?z)7MD|GBsh zv!%ci^0ev~?H{%O=zX^2#1s?O9vDQL|8^GQ2Erx331P_lh>WS-LCch*E7-Zz5gyBR zj=bw16=eYi@Hs7lhBjv^D>;hA7q1p(}m z3BO0GmrI`6op0L6|0I(2D_d9D2x}_=B+Mv|u-fA#XeTCZ7e6UkG)#q$1K^u~;Rm7a3#z zw642c4AOv7wuUG|_{-S--vB76iuxkM-SwDxYd`8F^*iw>o1hYmwG9Ij+}#Ifi4isV zWSx*gf_>hrmdhyQeQs+{Q6Q%=0i#%lcM`C9*ST66hY?Pb&}8UfEtl2oe&pNqO^*E(lZx$*tpB$2ym?e&4; zoG|-k+B^a{_jg(WFy1hE;x_WkuA>Ug^rvvGOAPTrsl^AGEJ6;u&EV!u4HqadQq-QZ z!tTt|-1g+iUzSgE{JMt-hNYPuq?cSQ=^xwdOZ_?S?JlsVz^gD`?KBInqK)(>4H7c% zuj@V{QTxqLoRf_<$$YHYv_N}%*VF8$-syyM@Fq-jUkHj>lXd07V40wwD3N=MZ}M?3 z4-+Po3)`c=lf@0J+$_NU!m|wC>_8l8MH}tara!?RG!`y1-9R?KsdO3)*8a$Kv4J0; z!XAb{2I{qXiv~yv!`|KPu!-GJSRqvqHt99VF^GJXzwL+8QhWbMQo|$FPztsDFs%Dd zyc9>!5#KCH86o9k+(DWMZ8R-J!_@1pKBy<743@A@(21sDjEwGkd%kJiTNY(=qoO{( zG&>0vRg6c~JoUh~d>FyR5cK>qkBEvVR(V!(@eGR}Lwxu35q`N5pbj67WKu=H zfP}@nXDZ8{|Caby{dwf5qKw?Lia`BQ<^~lLZtdI&PYks<*U2h3LUNFU%T1b(el(pp ze9oiX1J`L^eAzx`Mpcv9i)dS(0MCdZ3CB(o;u(HY!6 z!=$<8EpZbg`Rc3f!#@>TqcPSg%%dzyG9-Bg$XL5anALht-k1TCa^hkV+L3>m$VI<4DOW+ zal}m!tIk-Qjy+I2kw!D4pgv>nUp>doy6G$NQ+S_NUdaH!G=$Fthii4rc|8b#~N>rYWir|EngnY@a})RwGPWgP^bzo9f}QY#yO6 zRz(ZtmQ12cn35CIFg74wF!;SzQbil=t9*cL@?6B-FBDbX|LQiHWN7LWG50+%z_+L9 zuUhf){HpOQ)4Yx&6jd39MU8C!xeV^g0rmbRK?bOm`*84qRd3Zx$LT{Umk%}(d4Be5 zViKCQKh9-nFaQhNn<`VHPspPY2M{hyf_@q0X>;S_5-WUNON3`PYz7A%zrqj7tXW1r zLRMzs>mF~JF(N*6eb5=qBJfx>*DR1EPwUqT`XHZqTL-fVJOT+HhY=}k`gM%We34-{ zEdobm93%xnZaDS6$5THa@L^Eeumbg>r6AXNMru)X zjf_jW)Y+uJZcgte%pjln8ptzz?Wt1itSk(RSE6gYWBYfbuvSbF$^R7yF;d$PWTk}@ zrC3#&6L?=fiIYM4$6oofo~+`NoY%`+$if&HlNqwOC}eqVB2e<3H9vQ|-|De6#=)86_MOmb|R6lfFZ^h(sXimpFc_!O}1 z0o932rn-Z`(Y!f!qy;m@C^0Ju=%EUl2zpDF4E+531(@^VC^fL@_r9Ft$4nq1e)j3vRxP`CD*h1A(5dB+l7~Nd=ieLC z7a0TVT5D%-@HMhO_lzXC-^kT@IllSlZQ$amHb*1d^V&;Cuf`z{=R@b`Fye|uS+MyR z!y-NE?=HFRMji*6T=n8qYHC#j7$rykIW9y;4GDW>L?%o*-Z*>G^DVsMxD_pQ%`dA7 zdUzQGW;2snZIk=N)p+J!xa47^GlXNvTqKu#{2l;j+XxKBQ%pgb-Lh^ zX-;k#GhV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` diff --git a/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 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 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC 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 delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 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 delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 3831 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 diff --git a/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 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 literal 0 HcmV?d00001 diff --git a/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/firestore_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 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 iW8_KLJ^8S) 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/frideos_library/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/frideos_library/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/frideos_library/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/frideos_library/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/frideos_library/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/frideos_library/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/frideos_library/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/frideos_library/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 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 diff --git a/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 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 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC 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 delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 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 delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 zcmXYX2RK{*_kUuQ7DZcaw2E47QR5no5!5b4r>$n9loG4d2wKsisy;>(q4p?ht6ifi zA@-E)YoD;%XJn4fw1Ukt3Lw2%TC{n z4B)3yCxa9OBB-aMuKMIPwB_@=$a|_6HH>DY)y_`}@@bwiqm?m)W){q>u5y?}71WGR zJqR_44Aj=|@@J>uW9=I%?(=*x{km$DK9|b%?X8M>(hY-J`EB`H*g#FU^H(eK>w6(z{^e z?(~0cd^L(J@|ifil5TN{p2O>~FH3uy#$u`03kSe99 zj+|pO7cNoPG|pgX5sFUklGL%!@Om`#p7^n!Ph8=*x$eiRcej&mjmpbyZ`Kk}}Wchlr16YX!T2M^29kQbU) z+nP45yDelyja0%E>uc(j{+J24#kOa-V`}wLndshlAD2w`+vq!9R?&nm^$GQtjMjw0 zC(pcD1&TGcvAi~wfIv3)$`?l!OO=&)&T#3KAXx<#kc)j&VXKq}7fP|0C)E`efF zXBE6Jr9dNm!)afDKZnj`FoL44CIvM4`}hnLx1R)DH)vpO>zj|7(05@Nx3}K29IV71 zvF&(7|5Q^)lIvhWI!=$cqQ$&S#SbIe_3edj$SrB|#}YCuRea*W-vj5oQgSadI^)=J zc1V)Cri0-<@hs)z1%f?;o}h=WT}pHnC0$3*n=>)a+rbizbNBerG{J_m+a5vdd7{D#s#6i2sS1zfM5UN4ya;-?sbewi`bYvX zCH&=BJTA9g0R0%53EYTZw9_P)hzmtzqe4Pvj6%G5UeS$fSnnYNlxr_dUl%L75~_~e zF}QGBvqrp9UwWgfpuV=uhSzf<{)jKEO0^U)vpJE5o=E(5WVjH7+k*kqWMQr)qRAu(WsMIvw_ndmghn)ypt`DOW*cHVtqof z^JYw8()(m1W~A5_?faGIqd^%+hI7`Qd1+C~pH0yGZg;$>w8eUYQs{igi|>`#D~*KK z%w;|$=BnRO8nH36A%!evcghJ@hOC-do3tt7hAMZIA4+Q58P>72E941U223Pn036iy zGfN$DRr>RqQo@SuQL`lzL_4kN!RVwK^aeYl{O1t1E77rCg;%um=abrQh5D8*m`#7~ z&=#paL-khG%Mi*f5>4}-7-zJOT0IiNjche%_S98`YrVKyx38B4bN zcHdiXM)Q@hh+z*D{w1$FkemzqI$s|_&_S@_iygm)x0BDCIyii>_tM;ymJ&HXLeIPN}1VyBD z_C;Wll`%JzJB!;3uTXrvh2D!v^?9a8w<}Vc?Nlj%% zy~Gwwi!qGv@r%;@dj~_SL_bKyD}v9x8pr-c^Q@as)!tJ)wr?@)O7mC4v%@tw4-9mY z$C8$F0c?w&&iL-P2Pg)ANJX!S1uSt) z6%%3~i&g{rcnmA&N^kEG}{HlA*rDSiI2=4!o|$ zs$Ei>Ct&*TBZV%dQ~0ESupQwys;I;1L-euS_^H3(#kwC!&`gq~vf@a6@ZxrR;aK(& z8?F2JqYd&*b87zL;fH;&A{~}ET49Hbo9!xf9~IG0jt~nmk1HcQ zWzR3|Z)j-Oj;-$^2huM1A?JbYSzzWH3__4YKAe0(vBT`KeyYCziJo}46EG(piWsZT z>^a%_%4U9eh&xfur{a=HicEM|)78>|`NZWpb6vUh-|TGevF@eY8m?7KJD*J%4q_XP zSS@A#*1c>=B2oOvItN6EiQk^c%^#}D9-ADjm~AJHPd(9|2@m~K!<}q*Vm%HkFSkCd z`ZvM+7*Tqv`Ofkp_T=A?`?@B7-~Y@X8vBT8 zFxXu5xMI3DA*ywb4zfIe#XUAvz?9p5IQd(N`u}o@HB$G)zTXvuCw!5#OkHvZ+Rj1l zSRJF{$#O4h)u@NHzcRr1Kn%t63$s^u*&@AW6ZjO$t}~T9cN5>L*}N`(f1Rh6zW=}f zNxiD-RXI{qlWt>r?Ud4*Ott;o7SBuyEo_ z^3?D)82leR&+}hpGhJWpKoi-XA0BGw^u)^K@LTSNThF=#1X?cs9|e{GU<@zq{qVL{ zy$FG>!2x2UPd8v->En@!8ai_8I9*M@71bsFLv^xj$1qQLm+(CDn&hlQTAlK8AkS2G zO$_s<$vmKd_xXyTCSQLY=&{vj$13kp$XYTH`w&j^(!-u-sbnhAh*K%QR{TwC7w8&Q z-H-f6*D>dZH%7>3_OkNI9V8MeH3l%&ynLuFSOD%q0um*BY5Wxrd6#dt^_aqz#;gdA$>5>0TYQ&!J|w-_FjzOTecv z(j-7jE*EaO&7EQuMF!StC-lCjnMu=Yg_t~99~6BqC}DT#O**!M(EuAc@Y z*+vvc^TRytoLEiXsf(h^oRAf1)^*lNiIO5Xm1vFp1w#WF9b3#{0}=`Yt_SewY=t ziL*D-q#uJ^8HaJ37J;nlBcLXHzrANzf9w?+l@!0F0AalXbVth+mq#~)cYmP}uS;

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 3831 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 diff --git a/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 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 literal 0 HcmV?d00001 diff --git a/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/frideos_library/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 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 iW8_KLJ^8S) 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/inherited_widget/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/inherited_widget/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/inherited_widget/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/inherited_widget/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/inherited_widget/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/inherited_widget/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/inherited_widget/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/inherited_widget/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 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 diff --git a/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 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 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC 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 delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 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 delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 3831 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 diff --git a/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 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 literal 0 HcmV?d00001 diff --git a/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/inherited_widget/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 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 iW8_KLJ^8S) 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/mobx/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/mobx/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/mobx/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/mobx/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/mobx/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/mobx/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/mobx/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/mobx/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 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 diff --git a/mobx/ios/Runner.xcodeproj/project.pbxproj b/mobx/ios/Runner.xcodeproj/project.pbxproj index 1deb1560..bc3ba7c9 100644 --- a/mobx/ios/Runner.xcodeproj/project.pbxproj +++ b/mobx/ios/Runner.xcodeproj/project.pbxproj @@ -17,6 +17,7 @@ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + B940DB6F91D78988856B434D /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C2A5CE66B2BCD66DABB1BA0 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -37,11 +38,14 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 25D1A3170E4D49A14BD3B1AF /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 7C2A5CE66B2BCD66DABB1BA0 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 82D122571FE649096AAA5892 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; @@ -50,6 +54,7 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B492BE0523C96C24DAD45E7E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -59,6 +64,7 @@ files = ( 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, + B940DB6F91D78988856B434D /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -84,6 +90,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + FE8088922888B11E12816E76 /* Pods */, + D4D570E764474C60C2363F40 /* Frameworks */, ); sourceTree = ""; }; @@ -118,6 +126,25 @@ name = "Supporting Files"; sourceTree = ""; }; + D4D570E764474C60C2363F40 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7C2A5CE66B2BCD66DABB1BA0 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + FE8088922888B11E12816E76 /* Pods */ = { + isa = PBXGroup; + children = ( + 25D1A3170E4D49A14BD3B1AF /* Pods-Runner.debug.xcconfig */, + B492BE0523C96C24DAD45E7E /* Pods-Runner.release.xcconfig */, + 82D122571FE649096AAA5892 /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -125,12 +152,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + A58A7FFFED3D999BFC70F620 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + C5836DAC2037C04040A76DF2 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -217,6 +246,43 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + A58A7FFFED3D999BFC70F620 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + C5836DAC2037C04040A76DF2 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ diff --git a/mobx/ios/Runner.xcworkspace/contents.xcworkspacedata b/mobx/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a16..21a3cc14 100644 --- a/mobx/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/mobx/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + diff --git a/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 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 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 zcmds$`#;kQ7{|XelZftyR5~xW7?MLxS4^|Hw3&P7^y)@A9Fj{Xm1~_CIV^XZ%SLBn zA;!r`GqGHg=7>xrB{?psZQs88ZaedDoagm^KF{a*>G|dJWRSe^I$DNW008I^+;Kjt z>9p3GNR^I;v>5_`+91i(*G;u5|L+Bu6M=(afLjtkya#yZ175|z$pU~>2#^Z_pCZ7o z1c6UNcv2B3?; zX%qdxCXQpdKRz=#b*q0P%b&o)5ZrNZt7$fiETSK_VaY=mb4GK`#~0K#~9^ zcY!`#Af+4h?UMR-gMKOmpuYeN5P*RKF!(tb`)oe0j2BH1l?=>y#S5pMqkx6i{*=V9JF%>N8`ewGhRE(|WohnD59R^$_36{4>S zDFlPC5|k?;SPsDo87!B{6*7eqmMdU|QZ84>6)Kd9wNfh90=y=TFQay-0__>=<4pk& zYDjgIhL-jQ9o>z32K)BgAH+HxamL{ZL~ozu)Qqe@a`FpH=oQRA8=L-m-1dam(Ix2V z?du;LdMO+ooBelr^_y4{|44tmgH^2hSzPFd;U^!1p>6d|o)(-01z{i&Kj@)z-yfWQ)V#3Uo!_U}q3u`(fOs`_f^ueFii1xBNUB z6MecwJN$CqV&vhc+)b(p4NzGGEgwWNs z@*lUV6LaduZH)4_g!cE<2G6#+hJrWd5(|p1Z;YJ7ifVHv+n49btR}dq?HHDjl{m$T z!jLZcGkb&XS2OG~u%&R$(X+Z`CWec%QKt>NGYvd5g20)PU(dOn^7%@6kQb}C(%=vr z{?RP(z~C9DPnL{q^@pVw@|Vx~@3v!9dCaBtbh2EdtoNHm4kGxp>i#ct)7p|$QJs+U z-a3qtcPvhihub?wnJqEt>zC@)2suY?%-96cYCm$Q8R%-8$PZYsx3~QOLMDf(piXMm zB=<63yQk1AdOz#-qsEDX>>c)EES%$owHKue;?B3)8aRd}m~_)>SL3h2(9X;|+2#7X z+#2)NpD%qJvCQ0a-uzZLmz*ms+l*N}w)3LRQ*6>|Ub-fyptY(keUxw+)jfwF5K{L9 z|Cl_w=`!l_o><384d&?)$6Nh(GAm=4p_;{qVn#hI8lqewW7~wUlyBM-4Z|)cZr?Rh z=xZ&Ol>4(CU85ea(CZ^aO@2N18K>ftl8>2MqetAR53_JA>Fal`^)1Y--Am~UDa4th zKfCYpcXky$XSFDWBMIl(q=Mxj$iMBX=|eM-ZTF#Iu^~aV=HLuxJUHhR;)%U74Ro7H+I)AV6nd+LnWBHl$ z_iRKpibs=q`uttg_rd3t_aSi}ncMli?D2H?eCVOeq8%e&%w+Q=2Z-{?Uaw z?1o_|Z&_538tQw!F1=9C2i#Y~^L+X`Z_B>2x9smQX-RodLajOS^o5%BXdxkf98Kl| zy1^^q;Zxra>krC%px>AMB?mp^fNdEix>FV;Q#%*EPu77&zWARwGt6ptno7`FSg zp?K6M{Ji9GvF2IH$6++o!p0;f4zhF!qDo72*qrvs!g!hNi=Pkbf=1cVxl9$5(V8Dgj z_G-BhU8ae`CNw3S4ZaVTP~Vs7y@35CFUieed@usvW9t}RE~2qVp&pHq8d^LI|Bmmq zy1b40%cn+tB_5+BxjwT~#Q6H@zUOVsi^xoF) zmwsNEpR<4H8?);KOSsD`Dfj2C=4!L~Mr)%Q9tzh`L29T*D~d;Tg6`{eW4tHT6_z4b;LibqpX{C*qi`;_zP`|NZ*Za#QSj(WHu``>I^Htr{4BJkQWQWI6q z;{)ob5*CE_2T;#f+-|o`Q?rs^(QrfeH(PJEM@A5j3R|2$JTy3*=Wc+|d0^Y}zBXqG^^BZlQwIP^}-zSrp%f77tUvEB%-)>HeE*yKQcM ziR@B^8@j)t5YvGsK}~6f*ZWBgEq)%4Lcn>Y{@#W@`(SC=hWwb4a0B-@slya*cc2m5 zQ2Z@aLtj4peSBEIk2eq6>6O)xTnRULe-jrwBgCVnz+JsxC+hpKegWrYK~(rs$FN;k zT?@^XaD(?Z+wR1R3gS^g4x-`V!IShyf!^ACI^XNg+m$tb*Hu!uq5Dg?U3RN1NXTl~ zLKo_LwGJS?PylKu0CS?g*ZSjsJ5b=avriIk@cxG361j^CvIq*Yq_(UchSDGJ-A8?| z*Zmpk^Gfc45?64z!TXzdq3#I0w!G9(&ntBu(@|ONS{nUA- zS4B;at>?G1nTET{tf}`m{3MC(HE4{S{aN)DyXQ`4VzY4c_wcBP8ur1uKHJG}XR{Ai z-XMom`v|50&o|_qrvCj(l}s;=a>(=ucymR8CV?5Yd)$Nhz%J;7|R z?Nf_VL-B+w{N?mn`^G!%)Qdwet$zu8v^{61R#wXr?DE>W{btWt$@53y?x^dJz-x!4 zM!4{|Q>X1)Z?~ojVh4&xOXLe(qjr9Ett`Px-_LjD|6~7Rs;Y{Qx$cXO`VgFF%|qTd*Coi}sKN zTYP`iLqBhJHVlc05Rc+fNE0r6_wp^dqxF|TP&NF@#vxntc)o1G*1O)7O+&@^4}x$T z<#IaYY}#<)Czo#6T{5J+<0$|&R5;W!V%ujI%NFd7$vL~XDQtf<4JJN3EXWs7JQ}eh zFkJZ6g{yWC;W@Pa;?cLX=Ir47QrUt%_h82EmYo9kME}=9+1*rvx z3x7C&*;X_RNDrWAq`rT5$EY1&S}9ww|13PV>>av4>U*tjFfk)29>tdwE_J^eT@zf0kh~eQJ3Qrs^f8g_`x?X=E`^~}ocBxFion3Lk zet+nJx@XA#;MeqU4ESJ&)k`X=;!@B#ay!cOPWBn(9kq7kjA zAhqnmJ#*%a&E;}-Y;4TV&CO*V?BvR-{YX!NeG;J-vOgMmR5@>AGb%^{#iJnMW)f^Z zpSPo z%{<_d#TEOu&hg|h+C0Sv?jM5TfkawS{8*$v2nhJdkt6o6fBmbis;aU_j~-Qng_)U| zl7sD;U$$@P9CLxh>_WlYf!#v)N9m0UauyX#RD^ca_sPTl;OZR-Pv!XWBF1ZJAxN2Rp`PUY5s;`d$quWPcy6pNStFkHBk}sd4`MdcgKC zfBB33^{; zLk*Zu?azMpGyCmte_Q_^n^C}5rsnNl=IKCVb~%qm9tCzSb$?LaH#E~9D_;NpwYz?} z(f8Lce({U;+_`fERWegkQ);j$AI&jC2m$+r)d5V%Fnc;DEQ&|J=LP(YZ+ydEx^#(v z$`bHj?$6pi%q8Gc&I=jruhtDeDNga>zIVOGzWnmb_Qs7H1d|z)larQzTJ*=lO!4K! zcNS0~s-c|AWPhM08igwtyY5HeMU&X$sm7J|P68=M!15eR)-M4S-zHdh-92o~YK0ajONhu;F~Sr|gYp&W3RDJiZrIkU>#@kt_o)6bkm)j)9F~;L&6VvS_&3?=P6W z-4B-?R**($5fUHAQ-4$MLz|zNc%oo`(LP|c`S$iaLls#`p2z`;=w>ys7AU)Tlr92oE^}X7EFY5b% z_dx5P#r~3`#_wj0-c}t%saDQQN=7_@x z2D3lsKD~o8>y?Av;XxFSW`YcY;?ZOVJ;jI5oBDicKgo|ztza;M8}wOOPFqH5Xyj2m zni6_x{qf=Nhrh?(PqP2M!P#dW1~3u(N9=!94$an84$W9WE}*_w>!|WLWYe$6eFz9& z?xMl_yWHMt?W-IHFktqNF1*@3FcDvzwP<;P85EBu;?Ec`Z|42>4bM(UZVuyvfrx{- z`Pa#X%Hg@_vS10ef>P%tD~v@$C0z5`h8~6_peL(!~!M}`5t^AxA1J`$ozWZvZ#W39zTNO(L}=E zADKsepWKggY0kSm4&>&Z<$J6KMo`(GTYhT)$ovrrSsv4dFGeMbM>AnV7y@2-FZ8_Z zFF8ma4pR(FN+jfkKkm;j4DZV=L=U5Qv}j$xE8&B>ESjo605yGHdhgFI49nhxnifnj zhewxQyDz`^p#%Aas{Q%J>ixOJMmI#>=`zEDvMgRSW5VB)xn+LYL-vuqWIx%{VM^h@ Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC 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 delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 zcmW+)cQ~8f8%|=?Y^hlkUu_brN^7*JR?XC=5kZvNL~D;~QKd!HCRS}?)d*4)A8JJH z5~D3*##gh%_@%%1y3YIlai04*_qm_@JlDD2IH>VMR;FuA004mXk=}h%>NoK3xI|BV z-$vdV0|2-i9^Kb64+K`FXklmNId#XyPK!@~pXIghLdrF8WQlXmx>inRvYwH6eLdGz6!){BxQ6=ffLru4 z*R`IOEWW`gmF2jkZUbH97lVKDeXlEH#LfJE8nIx*=wr`%Xc_LiPkhQ|3AudBCS1b6 zr8R}CN$HP6N)6lkkxAm$L@)c?UvQON>G$cP-Xk-f5%b6j*M}9Z^xmz>6(@V3LYFVU z6qY}QzUzC+Yhw5=FgL@Ma=E-DKdK;K{vm7kIS<>QZ*wT6%)#1&;a0ap7*S(U;KQ&( zZufTg9Z3&8UKLRWfec5bHzC=>HCX#k%Ic@)=izkUiil@A?%NE>+&hzfwZ-=sn zv>akDS4P#o?T&eQ^%lG?K+isJDEl_v{=)sre7C*r&@ag**-M4quNfA3WdGPkF$PAl z2Py?y7ClL@El`NEyV!`*d@LaCCCtNTL%Eu1aimBz1@X%R-NYvT6UX0!C#3Mp=Pm%= z(4>8`y(me63#V91s0cj%W?a*CtDLTOT#eSfGva!T(6#+>VEDmas7zOQ`XdWBhEx{l z4w1V)zuvpMEq6{!94Cf1{|y#yL)#55;C^)Li#IkK?BoHJIY$JNtae=b8n%zWTe`MZ z^U7{c21JnQN8^(s6;mwL?@1U+w1B`$2wyjxXof94IlB^XVC(C4tbdSyB7~=_GBW_% zmtQv*D~}wW_&MR5`Pit!G~T-t6wG?O_Veu2RpsXV0~Wnmio?M{<<12$;*n#ybNiHU zHIhh~#Ms`!s}4MOoQu!Y|Mw9D;XCd72LD9l21h)N<@)4^=T&}q7aAT3;v0THes{#= z=*Y6NMrT})CHF=6*@X?@EN-?in^+zUcpv^b-JUM3N6I3DkP0rhittI?WND1OCc z7u93NIBrt#Lo1rb!bBwUd~^99Eis%}BLEVotM5tSbQH&V3Kj)OnLb%{;%I*iFzzoB zRkF4j%$%V$4F28*+IsbMz?mLfv%<-cni799Q3BxK?alcI7uicUHDIBeV%bh-;Fz2! z)y}|wz18L$03I^++;yV|`hg)ez^lKHGbvV$=QyKvazvTfMuv6M`FvDvuR(?(@&k-( zr1?~!)Aa!m>7;K8=LIDJ7#|&p+Yz=Ha*TMqLs2MGZzJplcp#OfF?hbQHLKD4IXGou zmnGODrP6Jx5tgeTu7Q1uj<@Ou{vLj}ToMWm+G))K>ww8UB`FI`x3p@)e1q%GcBo#c zaJ;l4@!&J+d*jEMRKvHiJM$IiG~FT7(~28+<@KubE%QIBm~NI{DF?SrSqvGv1u>nm zEotI9>B>TLU}Kf~Y-NGbr@rC0_FOJ?+XA0aq9Lnu=f>-lIx>v0h0Ei1MW_Np|8?vU z_Op-*NH&#tW-PKje==gUp6gya+ZIfUkzVGmI)otj`_tbZ-{g{ld&-$K>x@5OnI4;q zn&fY;aS^i|`^RBQD=o65xANP%HdVgcEV4$oHiJ-TKXvKD{FUe{VVqCfQpTwXjDXV z5cZ_R10>Yjxb~&1qE0sdOJn?3x3UlffV{$iKndStlUN>%S6A+7`6KjeHD^!and~MB z2gfjXN=v~VFLi1MvP4a3R2H3gY5go#MLG8ictEBvgkuXMZuanAICVbxxq_P_;m}T8 zF54Z;={)FHNB6I}j=pB@6e#;1?GCgu1^K~|aU%cz5jq!(u?xbclceXFYuC`m7AoUO zQ6XH2N?LP~b2Zog)0hpp=?4030t&BgbtWk)OkuUF@)py5gouq5Pyq7J^CYkt4|$%` z{1WOfmL?qR!g`&cX+fDx$h$=pBf$@=v1?~`ST%q_5&h){?U;JT0a-&AY?j$T};{{G{V#qA2He2^b)K5NV4 zlgqIJ34%+J-gi<+!9nB?h}Zwv;cv#EbC_#28Kqyd3yRrGzDVH{`j}pH_QHux6)N`+uoGO{bFsIhl85$BRF$jhgPf2$aBbK(8~H;lO!je0d^9n&xLmc2pl zFVhR&lVWTtT29qk(;J680@VVBw+5)fr*{Om&(9cJruuktCf(N4d*S^iUQN|_Xb@FR zKq>i2uQ#U|*Vo6i_dr$CX^iwDS0nN2)3fRU+QwX5O#vyBVj3i-X%JSF4EuqQBQ(kq z!en?$DzNbS0!|l5=NG&Wn6?v+aesuNz{6j=g`D)4pgSvsyK!shr>X#n|Et6k?dwL} z%(h=Gi}m#ZRn%~V1Ry(C?EeyNQ6<_E5^i&E=@ahY?Q5s0FF$p2gk#js)dOsTzz1wB zrqcS)o#>H~D}snHz}5=x*C0y8YI3}DNw~O7l%yTbSfLsK*QX**ZdVb_g54;(L zGO8^!KtyMxlQvdxcPBn2(TL?XkM%M^zwJ5qdwBdc?MXs7zTjPsBp_zVGU4ex%R7Pl zf1Ne{u4Ts;#cEq!R~ExiUVC8n4kPh?pNao?ph*tXP_sRcGfwsK6K$ z7dG{t(!6@W*BX^)-_E<2X_nJf31K(n47qYOmSZ@u%CATIcK0AT%ycXYf5YTdo(-mf zKY8o`cNc?C##V9TQS5I6j?nxYkKK8QGP%t#9YKD*POkh+FU+9e5D-;8i%%T$ev0=G zB1=R+cH7#PP?>mF!lqAS*qPb|!umjh9l+GgJZv#jTSTK8Sjg_!GH#KpuN)r{NrZOX z{Pb(8Dl|?cj)o5QhGuFA^#k!}vuWoeqm|I-|ANScW7jtLctuqv;%294p+GLgFa4G) zIq@U@doZB&)W6$muDiVdN>u>Ec^D-uq#$R6u`L&cob2^cPSg|6am zBseQ%G1D#6!ph3tXLw;MHD67hoDzeqR&g&&x%L5b`)pS3i-0f-OBD}{+C<|TFsCtz zF#|AlxwAD0BA{*=hT3H~Nsr%!eKyLA_Y97$ENITtl&%(3ARLtER$d#vvIMGqfT?8U z%?jIMIos5F`74P0k*F`dy(Xe!UR9b{!ZZCojif)a!qgwB%Y!iD0@cDXm8`s35r1fp zRgtl~M5!)$UAx_ly28rz1?eh24MJ*eWt2=l+xlN89RQiZnm(^jkM_(kr0@)(f|CVJ zKOHXr{n6J^8+9u|sy>WC>I^RF97LX`cAU*k2^Dk8Cn|Wf z&~!ga*XIf}0jbKZSTL21Z_yMfNhkSrHUr&>wv8@A&I<#L8iZW?x1PbIO)mq9;@JH? z7=WwDW*cq;x=E!{3fH?Xul;t~OS2J7u(NwiRikgy)QN%a-%L_Pm-cR^OlKC^NU4Wv z2Gtp+>czSg@%hu?UG)H$77V=|=*Yv4pWzNxoyRosX=BK3bHJ)&D+M>DYRx9K(0%b=XllvfWKIJ?*;vk<+zw^xf^+*`lHueUHkB^iz$#8> zJ|63j_3@#JWoB^SCOO`pD@ly_T#-t8dd;W7R&9WFQbS&kS(^QtbqeYI+JfV;w%F1X zb7vL>2k@x;{O8Bdj9nt*?NsyER5Qd!tSS|?V-k@vd$3}s$s{@$8~5K`naP1_@h9Yc z6F_CVHU6DvFps&J{oOE2+d&6g3<w|G zUvwI!hv*(+;=?ZY3jGPoOH)V8eYVP!q9hYFY&R5-?ogkCWjXIr0T(PKK~NufNo zW_>cm`G-54mNZr1AZ%5zzp8aVElVw^b~PL#kYftI9r$4k^I>!gtxA=x20a4L^7zuI zOgKpNFW`WR(FMwR8opU4lkNZm``!z3%1W1vcm*JFLEH2Dwm`&e772ts*;I{SiSQg$H=<}MS$DV z%UCRgGOY)gdZ}*3$Q|`cAq|*TSrs?NTKAhw^6RgpLvFLTd(GdmZFJ)T+kejCmV+Da zkqD(av22e3eN4E9hVe9I^g*(C=W|Jd#bO%Jas|%D6&d6*utj=G93GEiX%W~!iy63f zMbX`K84<`*aH1Dfd%-d)5R;&cre~Y@taoZn zJF3*MtlKE@Fv@oG{z|(27!E}O$Vl}I3JRuGB@bccb!b$UaqTiN=FY!I0N~L}#hzWM zUTE+(B(ESkPBvstwi*a)MTwe)_7P`XNmW;bB^n=m(P|YXa6!2cA_-1!UKuHUfR6y5 ze9FuAl~a{QhR2;OrOJ_3=Uwa*H#HaOi?(E(;A zt}tE|he~pSB0rQhHa_oBM#s^qde2kaPhUL?kG>2ItSmaij)IF!$llwm=`il??UjmV zZv6DAY+BF9;DtBFT|Zn+49ES&JCZBXlSmj2wbqki?LWQU+}=)PZ-JsvN(JOw@yZ;{ zBpg6CuTi>8`&lFm*m;X;IR2zO5q3YQ&+fad2fNwWFcIoKswrUV-g|+^yk0u+70>&ls#>1Xn$4{ zvO3@;Zq?{2X6;sF&9o4Ip?O5%C+pnL?(s_#fVX-KI=pTog7;tt;hXsr2hW`h#FM+< zw4A_CFVf~jGyP1A2s5T)by@+#C=t%dhQ;#^u_8r$+3(!eJEL9wnl9w$>)Jr$N?oFTvpf-QGSHSn^ft!C&Oq`=8{_qI_zLB|GJf;R{Om`=Ba3;JW`i43 zAkm8}a%Q{6;zyNNNux1s5tzY=`d#^A4ugTHly=P0DL;GY_PpTdyVEqireylN_dm4X z@asVOg*aj2Hw>zS1q){!qXvDq?Uej~&z=jm-L(?Sh>J$NO}&$RN4m^#w`p#-O+x3= zc5x6^zXn}lHbiT+odF$jqYQTqENdlOF2+$%%DOm1x!$ORgV;c|kX>{bX@Yk7kf?4| z+AP^bThI#DflNJuM~Kv2z818UuZ$n2pmImsnvmcrx#PaTVrSeRy4AT-agpZfRov@G zlk3HZug>7o<4*{d>pDDMq4l{G)V#x6M~h&yuP;oc(r8omyub&2$e?k*aoGm%+^m8b zcn+x^yg9DuHk3AGtB-t_HKoa(&~>A%C(-NoIqa<^T53Wjjmz|9N6;8c(*t(pj zj&{Mq8ws!$wmSS>g6E6;x00#VnI9Y3yJ~f5+_yFSe3(>xBe3RRUar6%OGzFmWKL10 zmkFV>%d`^HfNC<2^B9%egXO~BOqDy+LGV6OyparAZ?mZuuz%S?;(q3ru}j7oLV7DU zheVFoww#}28H#+$Tg73{njT}_2XRXqN@#eOMm*kA5HkIz_IE4dCd@TT{|;L+yiOX2Y1&#ueMejPm3~jlgoU|;T@0h*IAqH9 z(;8-55TQN=$DOm3Scv#TvLfN2Bs~Nywn=00E1cOsINmczo=^;n2o_NrPV7vj#{O{f z_d0h-4(U-M6q}n$>3cSjAc*SOTKyds-XWCK2gk_*>A}QyMQ$- zTy%Wy&**_Cm%oZZDX-R#19X>~yC!}*lus99^@pSH^d8Qst6--Les8yPT3CsdPp>3i qj{nbl(D%UZ^d4JB0mqQ>t`JfW&3MbB4N3ir4S1w$d>^Zgi25IS_L{8# delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 3831 zcmVjJBgitF5mAp-i>4+KS_oR{|13AP->1TD4=w)g|)JHOx|a2Wk1Va z!k)vP$UcQ#mdj%wNQoaJ!w>jv_6&JPyutpQps?s5dmDQ>`%?Bvj>o<%kYG!YW6H-z zu`g$@mp`;qDR!51QaS}|ZToSuAGcJ7$2HF0z`ln4t!#Yg46>;vGG9N9{V@9z#}6v* zfP?}r6b{*-C*)(S>NECI_E~{QYzN5SXRmVnP<=gzP+_Sp(Aza_hKlZ{C1D&l*(7IKXxQC1Z9#6wx}YrGcn~g%;icdw>T0Rf^w0{ z$_wn1J+C0@!jCV<%Go5LA45e{5gY9PvZp8uM$=1}XDI+9m7!A95L>q>>oe0$nC->i zeexUIvq%Uk<-$>DiDb?!In)lAmtuMWxvWlk`2>4lNuhSsjAf2*2tjT`y;@d}($o)S zn(+W&hJ1p0xy@oxP%AM15->wPLp{H!k)BdBD$toBpJh+crWdsNV)qsHaqLg2_s|Ih z`8E9z{E3sA!}5aKu?T!#enD(wLw?IT?k-yWVHZ8Akz4k5(TZJN^zZgm&zM28sfTD2BYJ|Fde3Xzh;;S` z=GXTnY4Xc)8nYoz6&vF;P7{xRF-{|2Xs5>a5)@BrnQ}I(_x7Cgpx#5&Td^4Q9_FnQ zX5so*;#8-J8#c$OlA&JyPp$LKUhC~-e~Ij!L%uSMu!-VZG7Hx-L{m2DVR2i=GR(_% zCVD!4N`I)&Q5S`?P&fQZ=4#Dgt_v2-DzkT}K(9gF0L(owe-Id$Rc2qZVLqI_M_DyO z9@LC#U28_LU{;wGZ&))}0R2P4MhajKCd^K#D+JJ&JIXZ_p#@+7J9A&P<0kdRujtQ_ zOy>3=C$kgi6$0pW06KaLz!21oOryKM3ZUOWqppndxfH}QpgjEJ`j7Tzn5bk6K&@RA?vl##y z$?V~1E(!wB5rH`>3nc&@)|#<1dN2cMzzm=PGhQ|Yppne(C-Vlt450IXc`J4R0W@I7 zd1e5uW6juvO%ni(WX7BsKx3MLngO7rHO;^R5I~0^nE^9^E_eYLgiR9&KnJ)pBbfno zSVnW$0R+&6jOOsZ82}nJ126+c|%svPo;TeUku<2G7%?$oft zyaO;tVo}(W)VsTUhq^XmFi#2z%-W9a{7mXn{uzivYQ_d6b7VJG{77naW(vHt-uhnY zVN#d!JTqVh(7r-lhtXVU6o})aZbDt_;&wJVGl2FKYFBFpU-#9U)z#(A%=IVnqytR$SY-sO( z($oNE09{D^@OuYPz&w~?9>Fl5`g9u&ecFGhqX=^#fmR=we0CJw+5xna*@oHnkahk+ z9aWeE3v|An+O5%?4fA&$Fgu~H_YmqR!yIU!bFCk4!#pAj%(lI(A5n)n@Id#M)O9Yx zJU9oKy{sRAIV3=5>(s8n{8ryJ!;ho}%pn6hZKTKbqk=&m=f*UnK$zW3YQP*)pw$O* zIfLA^!-bmBl6%d_n$#tP8Zd_(XdA*z*WH|E_yILwjtI~;jK#v-6jMl^?<%Y%`gvpwv&cFb$||^v4D&V=aNy?NGo620jL3VZnA%s zH~I|qPzB~e(;p;b^gJr7Ure#7?8%F0m4vzzPy^^(q4q1OdthF}Fi*RmVZN1OwTsAP zn9CZP`FazX3^kG(KodIZ=Kty8DLTy--UKfa1$6XugS zk%6v$Kmxt6U!YMx0JQ)0qX*{CXwZZk$vEROidEc7=J-1;peNat!vS<3P-FT5po>iE z!l3R+<`#x|+_hw!HjQGV=8!q|76y8L7N8gP3$%0kfush|u0uU^?dKBaeRSBUpOZ0c z62;D&Mdn2}N}xHRFTRI?zRv=>=AjHgH}`2k4WK=#AHB)UFrR-J87GgX*x5fL^W2#d z=(%K8-oZfMO=i{aWRDg=FX}UubM4eotRDcn;OR#{3q=*?3mE3_oJ-~prjhxh%PgQT zyn)Qozaq0@o&|LEgS{Ind4Swsr;b`u185hZPOBLL<`d2%^Yp1?oL)=jnLi;Zo0ZDliTtQ^b5SmfIMe{T==zZkbvn$KTQGlbG8w}s@M3TZnde;1Am46P3juKb zl9GU&3F=q`>j!`?SyH#r@O59%@aMX^rx}Nxe<>NqpUp5=lX1ojGDIR*-D^SDuvCKF z?3$xG(gVUsBERef_YjPFl^rU9EtD{pt z0CXwpN7BN3!8>hajGaTVk-wl=9rxmfWtIhC{mheHgStLi^+Nz12a?4r(fz)?3A%at zMlvQmL<2-R)-@G1wJ0^zQK%mR=r4d{Y3fHp){nWXUL#|CqXl(+v+qDh>FkF9`eWrW zfr^D%LNfOcTNvtx0JXR35J0~Jpi2#P3Q&80w+nqNfc}&G0A~*)lGHKv=^FE+b(37|)zL;KLF>oiGfb(?&1 zV3XRu!Sw>@quKiab%g6jun#oZ%!>V#A%+lNc?q>6+VvyAn=kf_6z^(TZUa4Eelh{{ zqFX-#dY(EV@7l$NE&kv9u9BR8&Ojd#ZGJ6l8_BW}^r?DIS_rU2(XaGOK z225E@kH5Opf+CgD^{y29jD4gHbGf{1MD6ggQ&%>UG4WyPh5q_tb`{@_34B?xfSO*| zZv8!)q;^o-bz`MuxXk*G^}(6)ACb@=Lfs`Hxoh>`Y0NE8QRQ!*p|SH@{r8=%RKd4p z+#Ty^-0kb=-H-O`nAA3_6>2z(D=~Tbs(n8LHxD0`R0_ATFqp-SdY3(bZ3;VUM?J=O zKCNsxsgt@|&nKMC=*+ZqmLHhX1KHbAJs{nGVMs6~TiF%Q)P@>!koa$%oS zjXa=!5>P`vC-a}ln!uH1ooeI&v?=?v7?1n~P(wZ~0>xWxd_Aw;+}9#eULM7M8&E?Y zC-ZLhi3RoM92SXUb-5i-Lmt5_rfjE{6y^+24`y$1lywLyHO!)Boa7438K4#iLe?rh z2O~YGSgFUBH?og*6=r9rme=peP~ah`(8Zt7V)j5!V0KPFf_mebo3z95U8(up$-+EA^9dTRLq>Yl)YMBuch9%=e5B`Vnb>o zt03=kq;k2TgGe4|lGne&zJa~h(UGutjP_zr?a7~#b)@15XNA>Dj(m=gg2Q5V4-$)D|Q9}R#002ovPDHLkV1o7DH3k3x diff --git a/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 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 literal 0 HcmV?d00001 diff --git a/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/mobx/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 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 iW8_KLJ^8S) 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/mvc/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/mvc/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/mvc/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/mvc/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/mvc/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/mvc/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/mvc/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/mvc/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 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 diff --git a/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 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 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC 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 delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 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 delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 3831 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 diff --git a/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 zcmV<13?%caH{KbLBYzB~NklQEG_jup^)eW&WUIAp(iaBo#xi!V0Duo>!@LstO;|u#i;%% zpy^J-C4+Sfs(%4>MLKZyVj>w{7?m>>=W7y4S(mFkzT9E9#*Vla-hLJJJn9SSKqLI8 zhRPci<7*}=%*~>o6n}IlTx$jo=`vX4RNi+sQJ=1AJpngwaDGi$JXn#U| zU1p$|a1B9yAO&`6h5i8TKd928KqkRe$%7!I5Kg6biGQ_jL(Q@jG6}99rHmS={C6TC zV$g$@KqkR8S9%g^iF6Xc>gNSPCXFE~CD)=LPbKHFd-8%zf@>%$NX|u-#>tpQ=QP6L zLp7$ps8f`=s4`?SR%}+*4~*e^AQ$)AMrVsuU6e4My;)tql;D~}a8czr!gwfStCU*f z^qTzTgVtQ!#Y7G zxz}stUIm<1;oBQ^Sh2X{F4ibaOOx;5ZGSNK0maF^@(UtV$=p6DXLgRURwF95C=|U8?osGhgOED*b7k})mNly5A_UeT?Em267C0wEf~s zhRVZX_{qC%a3K_TL%SAPY^n^{3h2Cxkt#>Hs*l(!_MAUF6owxoT<3!EA;EKBAOhYhql0`2D*tbz3IvFD8DnhFq$^fe)_sRpV1MYz<>Q1;= z-Om79p7KR1x3|R>S38%?(gp_Dn*^9Q+hWwcfkt%0!wj(F)FLT!6=@!Jh5>eg0zPG~ zB2_B`>?#4495n!fp(KcrSO!>C>F~Owtv&sm|pjT;&K?lS|=p1h6my_Qdh_1YpyTdVjbrl5@Ee zFjnmd*{@Hu!vq^4Qw=V+JD1}btj$KqRLflD9&j$l#}uiM73)mWifzu6xjZ^(Ew+;t zV-(>OT-6?g%N3W3iUpZUaMgGeF2?~Y7Gx@BE-%963c#$+WL7%Y@z1F(Dgl^PPG+TZ zy>mI10BagsY;rE|16Jsq%zugreT4t}qX^fnJA*K&Ihed~O>ijySibGj3g=3~btwh| zb_L-U1nf4v9s1{B@}hDT!R39xa)r!_%#{k)&5c1QX$r#a95g#1QxPuL0+wwiv(&jR zbGQ(wI}k2*pUDo$(taG60?Z82o3I)9fZ088g&^~Va| z=G>KYWr9rJ=tppQ9I#Z#mLgYEKBw*qUbKk{i!m;dvONQ*$ovkngovijffZZ4A6K|CSZ2n)` z;JP^uik*Gp@?rGQ!;~zWeg)^_q@X)Yqk%rz7K8%ZOjtr zQNIDSNe%G*C2zvjus>n5b?ec|WXRfmoz1I8@1S9PUeeikws~j5?psv0r^mTZ?5Jd-It!tfPfiG_p$AY*Vfak%FG4z#;wLtw&E&?}w+ zeKG^=#jF7HQzr8rV0mY<1YAJ_uGz~$E13p?F^fPSzXSn$8UcI$8er9{5w5iv0qf8% z70zV71b-}N$Ry|LJ!2VY-x>#j(gmQG{Q~qKEC#)t0rni|l`9aimpEYS(t_0qvI=#b z%(sAbfGjG_$(k}`E(X_)-vj+Sb3h+?KLWN8^l`rged00$Fm@JMvo!woB2UmkOxEA!`_kuq95p=I74S%o_jD~1Tm0s5&<9QdZBP|xBYuitJ!Q1Q=?K*HSMq`?ZM#$`lM!I)oNPx3 z2JMSL@4Cg<7Ds~q-FrbB`?wM08BjAe8*o_wR@yn40wW9p%ruk55waizYL`P`=xigr zGk=)sw@7Za-g3B7GubEwG8qFbLTJg5#S@<<6>JT{-H*PCZn7GB&e~!ueivhhqC@7v zcF6#1C9F&!!wN>?F!nb)aG_sLEVvzDnPoCB&&e2Im-v19%vLkV+M)Apw>JWXlZ5dO8W2cQTncxPJ=_us!1aB&4!*vYF07Hp&}LCRlop0oK4D zL@ISz{2_BPlezc;xj2|I23RlDNpi9L zgTG_#(w%cMaS)%N`e>~1&a3<{Xy}>?WbF>OOLuO+j&hc^YohQ$4F&ze+hwnrn}4AD zjE&I4Cb8%G^6X8ZOOL8;zNr7wJgh*-#;;5)wl>LTRjvW8 zYy}KlxDC#J_C?~j9AZp7YY=sVfU7&d-I78eRgRD?*mxM~R_uitEBC?l7wuCWYF5L3 znEcc(XlVYIldUo$w@19~X8d717=KPdKhGaq^8D2C#01&A*qs2sJwRD3f5@V-xZ`pV zb`kFX&P+=%r6sM*xE(`)Q5EQ3H8N8&WWvSv5M)$&!u2lWsDpc%xY$4*)}nMqNtGjD zrKav>0@-ppqom5=%#qcGjBxS4)OkSr66&ASDyh1f((v2UsNTFi>RP6fTz_m3DnzZ4 zD&2`QXCu~SYs>)I9LWX=GAg;+`Rzj;W?tDAT$}Jeneq*(s00fy=LMGuWUC1>suTvc z3P!rjU0sEKet#{sOW$WMamKin2l_zXaHWClS?S5>nx((a7R7q6lDH@gt~8L%mu!;e zWa?K$GL?nms*h!GrO9L?P=6no&`qVLYn?`o6BCA_z-0niZz=qPG!vonK3MW_o$V96 zzM!+kJRs{P-5-rQVse0VBH*n6A58)4uc&gfHMa{gIhV2fGf{st>E8sKyP-$8 zzp~wJX^A*@DI&-&Blxm>>9MT3^@I z71VyzBGm1vYw4(KWw9G0kn;5#P*YIPpqjw=kG}MK$?Pk(Y2g(AVSf%)g}O0y!)YhSqgGM7MnY^_v%@Miiq;lt7qKadq9|&X z)Fy-^k|%Had!Orip8SzB?sLxPocq4dbzWMS8L={5VWOa*V7+5(aG(79=ikdfNB$;R zC#6zQ+{nITp!*<{axYi8@v$mL0=L_yirM_TLs~3*R;A@#Im}^w^vPf7COhx zf)8rT77LrK_GcFwf7h5cfg7y`R7>GiW&7}L(gj;~lhxuA8m*nye9*POQ3N!>^|0_D z=kWbu{$T+$3K|WKfyP4Ppz+WIXri1+v>_D18g>|z$DO@c-I@EUt22v7LyMPZh61hj zT2FxLd$51^izH|L>{&;%CHv<#7+LJ+PzfB)> z4|y*DoHBiL6lSBWiUReNk582z-gAb;2Tp7b`Fh7Swz11Cp>Y6GWzAKhZ9Ve3=KL}B41PXowoFYf9Y^)1F^))F_YnM6$T|wgB zD_o{P()RYR8gSTmY4vRVR_$Yb@q|Y35l2|Z6l@1VJh5L@)y=Vp;T5-E24}J%;#Viw zPBLEjOFm~|9pU}MKcr=u?uERB2FSEr_E;Yd@wg&Gg01j3s6F5=oXD`C$oA=@EJc$$ zTm&*4HiN{2)(b&m$k*Rs@ui1veU_nb*%ciAPz{V5Ret{r{DdExM&8UMvE(X+v;Vr~ zV>}bUo9HZ(_Oz9aQ+W%$Y4iuz+ltam!dsJKNTP>Y2049e2=VDEB&SMH;_>B-posxW z>V3thB3ZK~Y-8!&Ir9{2yFZb5h>>rCT*-P|f5IbQ)BA_}^}!RA9OgZLk7Pccad$lC zXrtgb4*0{2iBcaahhtBcvx>Xz_y`rIeE$&kfA|SiCkS zm#_0zwW?}uw1#9NH&jmT64|@mMV}wrUYTG?w&x0oFnAmIlIUXwR#tKfTo?#5{>sp< zBt+n63tU|eh~7LILH(oCBb^R1Sh)#D{i$JpB=#LJD;B2uL3@6=-*B=ZCOYjVf@~l+ z_Ot4sZ>n4pSK92@hwE39C|Q|kF^4OONw*@wm^z^9tWe4AK$K;jCU7$wB803}Cwd_$ zr^q2okq{UP)y?5LXOb=_3wnr0wG8^E$rC-N?_g>|F9wtZDT;XT&ry*An{S(Mmq8^+fQc&Eg{|;7ZfIzUz^*d`Up<9aH|whUu6$yDH;1nT ztJp%#l+`?~?-j9Pt$_!!&5L-kVtx-8fu>SHTHlJVOWA3|+X3tq+ zkt)~jWxk97$q~W7)NZS3TR7~uL|$YO+^Aff=7-ZSr_CQss24C$;g1Z?FxjuEo7L3t zB>*f23{p2FX(fz!Ma&hNgv&E^q*u4)%Pq77*p^9X@<>UC7_q~k#v4y9#^yu$ic1Fi z&6Mp^7U_s&?_5}x}^!HNW)$y2XiVFccoN3tW zv~HT32iWV~9*Mk4I}_!=oK)jq0w#|}KU}|Zy9NFxibw*1g0iX8xN}1?=EofSV2K~7 z%Hrhd4x~ZC>JWln3E;g0clXS!UFt9t>QgCw4C?Wy zm@=913_q0IC$9Pk-xGD$0?t0hQ7~ee77Yg4}#>hj|Br@CUm+1;QYo z`R9&5LF(%2W9=WA62+g!5@-|`#oXkDum@1BZq9UDn?feCCHBcxLAD)CyvrHy@vJnL zMR?}N__n8!Y6w_?%Fxlii(xJ%hgkqi{mj=)S@KfP;CB-Zk5`Q3;XD?(D_O5 z4#=Ch(p%+6^fZ1*OkftieA(NY(slSaSCBECdKAF&3%G>7-%3 z&;L@40C+M6hXg98PPds$l@oUI?C@R(}A#7GBqvwU$Bl?grFZ1-{+%u&`zGpd;!!EHrWyUx(~MmnX^XGB)| z#P6C+Hng`jU=B;>188;jZtk!3V+gZ@VvU$Wgi6>V|5pABS5I)2I)CEYL9(H6L2^(pZdtEAe?7=?<$e?JDUTAQ^3dh>SNmO8 zNdXTy`ELpPMKtI~`P@I-IJ(UgG&M!7g=+O?3eY<&I{A=&|=b$#2uvp z>$UrG30Hl7;`5@YGm6+Aw*-!@(bEv1G38Ei3=0IiI{obH)V>UH^~%dqz_iv?bAFt`V{|(X{-)zso-BT>YI$zCFyt3#-vkVntoC-$ z$5D%D9&f@lmxb5J&`oC~`{wLlyz3M4DK2KBe>@-Nm}9=UEvFB9+3vKkxrR^3LCOqU<3sZMFw5+ly-6Vm^kPI8@c`N4K>Y;XHki~7cJ z`08(+?QLBz7e}6IDq2=L1Y4JSVyw=;bU4&xvk{N!wO$naIWhc>if6xhodqD^B+>BJ z(%0?c;@`3g)1NKq*C2ak1(wR=iJmpyX!j%mlKag!O2f6iwtjjEcJRz%N9R5{N2%R}(4F3D;pprMhw~K#I^l?* zw;_AX_?EPrDXpZU<&w$wRs7T6uJr_q-8uznVHru$VTjYJ%aXM5>h~|!-&MQev5CEq zG!Prf{Mn-Cvn@zf|NJeLJLf#A2@Y^E?wO%hh7Q+F?B5wfwxK%C@wv9dO-k$MWSFtnyLrTPi>$f++e2ZB9rX+F*H0dwoS1ij^P zG1#e7;E`g_!r96Qr-Fm)IjBzi&xa=d=860onut{%R=o@)J*3|~+eA^X!b?k5Zpm+9 z(kDj0)H6!A@J_}*+~eBLi(i#G1E+H zmxiUDCJV>MOS|1Wi%kFVeeT9_wQiT5_Sz9W?C5xil+{ajmnGF!Vvr~p@wyg?22E0= z$nloOeSj17TOg*w4yz3B!7$Qp?pp2o?PvWD)siDsR6>lpfE&YfHg6#8yJx9p#%Y~! z!1VmFH1B#MVvQww3w0fcExU6!)!a_ZfHt0k?S13kjeH<-p7*A`i#0r6mkpqxH_w>J9wIVd3dO++!nAdg2xTxr ze=O;Vi-f8D3+~#GfcFLE9xq*q+;p@IalKrkN3*}Y8cU0Ghk~oAv1q!)?iG?6Jqr1Q zyi?<;tLR7bT7s&~>m%9}}8#y;+qrOK4tC|SM%wVynVjl|KW6_u%4NU+ITec85 z$nT~-i;A~idsD&{WPL|r7LzC(rn_nF$o5(emMtv%Erwk1C1fY3I>Nhp0wP6@c(2gO zJwudvLMs=$s{DTTZ3KB)a-E4ZW2}vB=&pZb%$s00$hfjnsAe*%YZq$Bk^*NqvF28p z`l)?U+sn~y+Op-yE3KddYO1i;?n zRJoP!=aSb}d&)X}H_7t$pWV7KW2IgNh=4o8QQXt)skuKthjBC$V2dToH>G$^vW5>+ zBxn6v>*}34V8bPv)U5#CjSi6{MEBmd!6IxofCjf`pu$G8 zlte4)!I+o&#LP(!DyIZJ8*@jNlUOa0UuCBnwbt@%t5>eTH(*#S*GnGM;ga{ouV2d& zhv^+Fud9(Gmop?syX5Se??!5Mx83GPGo%us@MT;o`a>p|so%{wp;mKd>oJoM&26yS(>4iUoB3 z2{&j3ZUlCV&)asNJLq^wY8QCvuHVNOp7v+nA6KRUjymUJ*_r=-YTUn(-<5a~`Q+{i zyO78ngppOah%pPd9LJ}}DJoM24yjF?Da-B{|LQPQ&iC4QLQqO+tN zl$<@3{DAoL5-2VXcd6Kdma!w^Al#Vn3r3eBZN3PX>R_7FQa4P0)aVQR{i=0_Uq4jWS=2LCGr3`;>iu;Ij6x_0^hxds(UNGT8TsXy7wO%i~Ps zrn)7W;M!%JA-yVSp5AlYETh|Z$b9;S^oYO_igw!NJhR0jnT$&`{cX?SJBnwz)LktU zYOTVEIq_qg&fapQLYUzijk;XczJ1E)Is=o8?m@WO)B>Ts8+Q_#F1C=*uIPQCzM`sk z6AMuCpMkoB8Jr?*h=<>eM4b3jL?yhn!43ZaYtOtBvoUd`XPWqsWG^3iDlt4twE(f| zp<5xLVVSuc)r+cj8O8jwy4b>ok?g6%u{y>SWLnvNUhs!UMBf4Iufi*ngwFG9{R5-G zq?iO&1dxJM5bmb#osb)kt~V~s*t?I11RbW1=wQ8I%QO41+&Uj{-U7ZKp!!2p0nzvF z!Vj@bX;C^1T7gYUQ_eJJpAV7RLDKcB1i0sZ)6NZnu31vzmO~<`;fCiq*cmN92FKr>q5URP29dUx12k^Y4L5^`W~A`l6t{ zBmBxm823`baOf=|3DK|b9QKk)4NAaX!y&m|qMUu_f|;n4xZ+4$Jj1r6WWvveH#`M8 zv#%g@qp+0g&CN2P4UVUKM>_*CVaJfyXA}0J+|ND26C5h{pJLoOF4Ff^x#BcI!K=ia zQ6L*vrA{BF!xpFq6NpI>Tkgzo?}wXuGIO&m1aq@Nc1cfz6PG{%)F&tmpH$%?DEbsR z2I-L(74GS^PbdQ$IZw= zo97pht-7VS-=%KfddHh|5m8X9&A7rgJ05#^Do9~hDe1AA1POX$q10C+l>B|Jb4EI;YObcIwjUCZ-HdC+m&5==VXzk}JTJoW%U>UHjgirp;NkfUo=qGJIVmwrd+DA$5nP zoXmB-Pkxe|OYW5;b^H3VhrZJ$p#m033h*-O@jQ-LjXUaV0}{hlpUo@-O>VNXvD!-v zPIq2!T&f0+;(=okk9x3E;53;$KSPIK>I9Wbk^FhcQJE)Gc%nedq^723W_EVVF?3$Y zQfOO9p%$qLIRFRhGB9+ISN6Zm2c<#=4s)~rSo1`xuMez0D-VnRwu&rN^NI<-XsbU4WW!Fj{{8PHQ@CLBc)boBJR`*V2G?84z^ zAVB{sbc&L&x3%k*xJlLDv2;d`xCo`XuG3?)44-HAdtlej7yDP@+*2iwn*fOFIj$B= z;}S`Aj8(wm1K^_@x<}SI?^v@wqk3;?SF>c@gP9LsH%e1e0fSe>Zt+u7QzvhE5y9R& z#}K%!9Qx!4*Sb^(i%k0$t5q6A@j9J$V5g?aHO-*E9D-_oQD+CgO$-eUZ#&cAFD_h2 zO+ejTh^!4UJDa@81XAL8gKGbAD)=UWhOc%ti{81K{^3W=I;{OL7!sj*{8Z9E*d!mIS-cF zrgg8qJ`%fKR97eK2H6Fhrauf}!c1feQ~e#{xF|faW*FyjWDM7zh!4JS+pv50z3~{k zZDCk$-bcJR*SNOS32nLFy}#Hpoh5BAU~gqbt!pbb(tP}1c+o9x58@_p0)`|A$np}n zBe!)f5IOInDeSuqsUkJ17tcjIK8Z3~ZV@Kp@k((FA$#+>_ASrLzUQe<52juflvhzw z(lKU!wYn-1@01_Jh}kI z1esPw{hZ`-!cjReQuM-{mN;FbB+7WMo9QR{O@A^?W0MQwdz|RO*5l&vL`^ zl{e4l5tP?TA(6QFNc^@0ek~DnTJf^VPhCGGBt*395?YTWS;JBWpidsl9TAyDZxQRV z+NiqE%@|I$3fLh+*<7ObeiE}z=OFNShV8G1T_wI$OgeDgZrV{WP;d%59UsJ(T9BG2zNC)f1o&L0j{NRPaiovd% z&W*R<(YGgFw}xxxeZ};m>NGF0cu>1anM}mTBX3EM1OtW@16xTJg$XN>7t#?#%-kut z2|nds7;(E0hJINJhR$jfXv*|Ye{9O)s@nl*0n{r znoFD5G32S4mF$_S495MMBQ9qsT@)?`7EZr_8Oq;?x<2yOJyj;jOa2*W7iQM}bnvS0 zEY`uk%aa*945_{ zS2FWxS4ZW{f>Z_xnT#S@bXU9S7$!zHhFz`f3jw96E4u5Dm+xj~rk<6wJVqo}0`=qy zE%g@=j8%dN@v1x!mKp-T+iB5z*P7(;&UjL*?9O5MH`Xqj9T1ePT7i-kyWpJGtPn>- z-J{EFP+>lJvuu-mm`(Plrb_+{9HZ)vl8;p6=3|8JvP#{xT>lz6&XYOmvspvA2NBo> z!GXQFy@YsnFE(`t84AlC^Xt4H_(OS)tHD?dk$I(=wW5L8Mcog})5-zEGUJhx_!I7y`4tAwB8Zi))@Qz`Ta zk?&_)a-*t`d?A?6{e@3%I#>YZU!P#owc$+-pP=5ZrtF@7A>Hq}wwV2fugY*Uv>n6Z z2?`w%@scG_F*DTp0cJ`EyJ1UiJVyXk&%y^EgzL5B7im7Hhz-?3j6qsqZ0n^dMSM*W z%5~S|0G<9_UsiaHVN*l1YHkD-;>gK$cw%&y`u2(I>b_TLe~$O_PblWfz+UnNt|b|6 zYJR^g{aYM~R_zaK2nED`%zr46w$dpKc7l_FCn;QVuJ-aMl1SbO7zBUBw4@K+`5rn@@wqGQm%QN8-|{j%Q#Fp{5RQOo$G|$1TZQN1gKh%V-Rn z4Oxk7%n@sW`^K=(GOgYL3@Cm8H#4l5YqzvBJAcraFtLKiCk`WPLlW&C&Rx8oi#c-A zik8ofT0}AC`C1&|c3SH2Gb1ngWXUl5@G|WPXAdFy;k=|Pe`1L2J5=$i$F zI7&@8-$#}sS%Uc=QV0~q`r9}lZY?YOQkypyPV?8}A8zOz{x|65MT2E1ul$?yWs`Sk z33$u$MLhlNRSHqL)%G@-b>g|(ZfBQXi8>9+rY8}(Y+CY_q|n&%)u>_aL#ILr>7)*c z|7@#d+0-&rAN|2i(%D0ofj8?gka@&844zFwK9P2l^yDM?ulhBI9xM=uUc{Do_L^GU4~^zNqK;h7X~ z?StYZU%hzd%o@i%Mb}k1fUu@-3j=O@lJ}qFb8|)GFUHiKH=33myxA~45xUI~?)T|h zXR%ZY)ZfMQjVDjfU8`wW#3G|kekZcITK@VU7i53GiBDhFa(@>6fGgd`xIDI-SU>Kf z<^1Sgfn4DQasTcFR8l@=lpXY68N3F540zH>4^EDH?GVehSujPoc^|$VBIoP1d2=(r z^cjChLLw=XKN62`iWs`Phs5HmNWhx`zHr;h&$6rZ!@L=+as2&u+a`P~#JHGmK&Q6V z6jBJAp=I_T>7DI*Z!A%wJHSP5gd+ePv~ZG-Th>p!%V+ z!G(A+2O&<6*|Ox&6xCmGs)td)$JchlC^<$MU(by)9zp8J!v^FCY)R1x&#y{j_O|OP zFm-J*lH!eQ|Fc3C%zJ=3G$K}!^oZ=WKgg1FDDEx&g@=8)bUQnK%Y_t&FPu1*{Wn1{ zK!)v?98HF(FnyQSo0aU(6CsEs8nz;w+Nvfcd4hl$4f;vf;yEiNJ|XI8klG{rNl_{4 zTEbmKQ{LOva_y+C4Mc(kd0K&jq~yZWmrIjUs=n0eL^D`QEyz2zubaVN9-@Z>SkCU5 z<-j0hdC4c{if-}(Gy+zhEP#~IeAKlA{fJA~_zGNl$dfIy-Qe$80~`Vy;fVPwNVUqk zS{FsiA=+Yepcyt?T{rR~@q#=OQt0-|ZPb~8ty8W3Dr`})xHsOqIH{QH3OVBRQ{iWt zG2=6GYXEs*<8y8UAMfe9Xj`t4O}US$IB~73hfKVxc}Gs%~^;!ob%=TDrDX2{n9)G+L84m zl(XJudMJ&v6M5#P7;w?h=ee#cd#%pPZK6VH&dxG0K;(Y^q^;w{>o7@^oDz!l2oF#? zvB&{cL8fE{uw=7Gu$j+|W+i zBnlY+vnk!)>)hjol-m`KdxlF_BI(>hW6IJc8=UqwU&~#vj2!eG`BFIOtfC;~=&!j; zx!L_4NN#PzQyb~!F#76u2(yrgCn0}^&)p6GFp_-<3572S0Nu{8B3{`yQqcP|S8B)J zAYP@C9fjlM9GM$MeWxcor?{qx`#pE^F=aGpe~;fk5JTcL*I_1SATw)as&_umu6dS_De-44Vuprn~O?FBxt~ z%p;5TQa^C6qmR7wa9MB#<;G$ft=Iz^GM>Ue5U0R=GCto<(+^d)t@$bhwB#(ZidPcqHcSjlco zDDu$8=-GBCMAj>xx`)KP`cH>O3}Gf?qeJPR;O9_59lffVcF0;l+i?oG8LzeEq zUpG!KYC0v6(*yqJ#HLT=OdI01NKWd>#jBm+{;iA7%}g}*BUfu(zkW2sXO?QTH^0sp zr|A!fMtl7}qz7n&KV<8j)WaZYFgOM*LAv8kZk=`B(RwCt&l=NqlqCfXpR!HoZQu4? ze|{^2so@8M5Npq@$?%2zJdmVSpf6EQQpX*p(a*%rB+tC%QIzEv6U3{cc{Db%B|e-= z+)?f9XO@KbZ|%ljF&-pE0<5I~^NG3E?atd;iSR;yjVQ;(`k?zv z;|_!F+&-4I2<^kIf;lKJs^Ius!zrQt)UPG3qn9vQ1Kvh|%Px1^94&bBSP=QNSY!E% zpL_&LPl9N-WD5TfGz}N~eXOg|`q^ixfwbQ)xP000KjnC3ZyeDowPN-`V5Js@0z-wN o!O&qCFiaR0OxnP^Xd{Y{)%3ZzJNI|Uld2SV49yH`^&DgV4^qiy*#H0l literal 0 HcmV?d00001 diff --git a/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/mvc/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 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 iW8_KLJ^8S) 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/mvi_flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/mvi_flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/mvi_flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/mvi_flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/mvi_flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/mvi_flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/mvi_flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/mvi_flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 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 diff --git a/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 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 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC 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 delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 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 delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 3831 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 diff --git a/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 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 literal 0 HcmV?d00001 diff --git a/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/mvi_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 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 iW8_KLJ^8S) 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/mvu/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/mvu/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/mvu/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/mvu/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/mvu/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/mvu/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/mvu/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/mvu/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 zcmZ`+c|25K*uR((uA=LW4tr(fA1gf=X378pYJ)(bH2~>ea^Y(-c&2N2?v`X8vpzSFoQ^@X`%Zuopy2ydz30K z;;IIHkz@F^c(~nEQ5T5&taK{xiy`FM-zgFS^tz;{47Q#*wGsX3=%#d!MSjToVps#2 z0g%vJKS1QJ?dKMcPynFe9r{zQdILFf#xoWG?lo@(lii+u--%a#PV>vl8D1rhI%24e zbaX+boydu!m>AIMWF^(8hgKQq0q9^#N`(Zf*c!3R1oV+soGf{g=N1A}XiOfy9HPFR z0i)=rg*12k)`1McX<_xWK@raaWL?R1fb)f{j|SDyE!zeV_+Ou6D2`3nXp`Uaial-e zcR<~t8~Ws|;98SpkV$#}>z4C7Hzu^0oHb2H+w;OGBw$Y+cvwJVczVJ9#9BKuX^@te zQjNd->Dog!r=u|hoKW8EZ8xXh{6HQO)>3ErvZ%@^SL6QoMHvR2nW9i6- zjQI{pjRwVns5)V+L=uIcm6n<`REHx|s#ryNu!$P!+WJc?5Q29{(UG zMItMPX_EZN{k?y%`XF%>Ob-&blIJaLPZc+&>lXHGSRAE_-ev$QO36QV294>&U011s z=E{MO8q$4fMM$zJPjUN35#gVu#mkl^{M{lTs%j&&oLr{X#|1@@{f>>pLRfD7udHG&E~%22YSH z|MmKX(@nqr*J~RtV^4i7Mz5Px;iAmJ`j3)sYypBBD4fGQbG;;EM;*}r$HY6=6hFfp zN0R-wK?`9GXLS{CEJO%j`eVs?PZ01_3DpQihlCb&!Y?bg&#PM)uKJyeV~hVm?&NLM z&4{l}SD+_Cw#Xi?yAE6hZI0w#!sGvY+H=-vFST$NZiySi+dJH#vQ^>%5VY?I7vS}W zTwl1&L*W?@=^RE>ekA!Ry{KY>YQ$=LXYRV)9nlc{ja~d(mD0vNOBopc>ID25_qQ1Z z0M#b%02B=QE99=ij^O)z&7H(W>8SP7Dg55vSeV-=m=@IJyteX&!`*9WEu9eWg{>86o_<;{w;6U3*M_Z`((>?h?5^Y;CvX#-w#Ab&4{U)qq&aFJ2F> zugJtJ?C#m+J?@O5256thbgA`=GL@aHDs6@xcNZ?(H}sZvIAR)>@CtUZlaT3DoCxsK z>|w<{h4 z^Xw8j8^?t;A1z@R^c9y(?>lL84%-c#KWGb?sGa|;&K#!~EBz~6GM|xM9sBc5so2g& zN?>f!d}-}a67JdJT_Az{BFPzFoBA~OSDmP#-1{A5%7B8mu>`vA4A3dDIg$CiMb33| zjJEXx$eu*@f4UG_q52%A~&(hXH(&; zjAb~`ak)}xAg$UT2eZ3!+im_nNR;tUg&QzI;+C$76zuViQ`DNZyVy#_eEqSukG9p< zm?qA|b<_=BExO)do21k}sC)0w2_>8gw*?^lCPgp3b-lt@X@Z3ehC+OIYo{g0eZ+u- zH~RaaH-)+x(uIiq3tbe=%bFG}afK4$nzG)p=P}(ZPNmqbY`$NG1Ql_hlVF&48|QA9 z7wy?^g6k!I)fxA>10+CX+b*j&w>%#%Z77n*zi!q)93W;Z--_%HsbByv7&cRG9w*%K zQbA70liB`6HkWT4SSot%DKP?_x%c;4>Q2is)kDPB6y;_ePpp(?ZsWO0`9)&}C_hHp zKer?_TL3?duWrT6mmsnTDtg#SP2d%a*Sy0wzA&Y*^$m$~^aCE9@&4S?z)7MD|GBsh zv!%ci^0ev~?H{%O=zX^2#1s?O9vDQL|8^GQ2Erx331P_lh>WS-LCch*E7-Zz5gyBR zj=bw16=eYi@Hs7lhBjv^D>;hA7q1p(}m z3BO0GmrI`6op0L6|0I(2D_d9D2x}_=B+Mv|u-fA#XeTCZ7e6UkG)#q$1K^u~;Rm7a3#z zw642c4AOv7wuUG|_{-S--vB76iuxkM-SwDxYd`8F^*iw>o1hYmwG9Ij+}#Ifi4isV zWSx*gf_>hrmdhyQeQs+{Q6Q%=0i#%lcM`C9*ST66hY?Pb&}8UfEtl2oe&pNqO^*E(lZx$*tpB$2ym?e&4; zoG|-k+B^a{_jg(WFy1hE;x_WkuA>Ug^rvvGOAPTrsl^AGEJ6;u&EV!u4HqadQq-QZ z!tTt|-1g+iUzSgE{JMt-hNYPuq?cSQ=^xwdOZ_?S?JlsVz^gD`?KBInqK)(>4H7c% zuj@V{QTxqLoRf_<$$YHYv_N}%*VF8$-syyM@Fq-jUkHj>lXd07V40wwD3N=MZ}M?3 z4-+Po3)`c=lf@0J+$_NU!m|wC>_8l8MH}tara!?RG!`y1-9R?KsdO3)*8a$Kv4J0; z!XAb{2I{qXiv~yv!`|KPu!-GJSRqvqHt99VF^GJXzwL+8QhWbMQo|$FPztsDFs%Dd zyc9>!5#KCH86o9k+(DWMZ8R-J!_@1pKBy<743@A@(21sDjEwGkd%kJiTNY(=qoO{( zG&>0vRg6c~JoUh~d>FyR5cK>qkBEvVR(V!(@eGR}Lwxu35q`N5pbj67WKu=H zfP}@nXDZ8{|Caby{dwf5qKw?Lia`BQ<^~lLZtdI&PYks<*U2h3LUNFU%T1b(el(pp ze9oiX1J`L^eAzx`Mpcv9i)dS(0MCdZ3CB(o;u(HY!6 z!=$<8EpZbg`Rc3f!#@>TqcPSg%%dzyG9-Bg$XL5anALht-k1TCa^hkV+L3>m$VI<4DOW+ zal}m!tIk-Qjy+I2kw!D4pgv>nUp>doy6G$NQ+S_NUdaH!G=$Fthii4rc|8b#~N>rYWir|EngnY@a})RwGPWgP^bzo9f}QY#yO6 zRz(ZtmQ12cn35CIFg74wF!;SzQbil=t9*cL@?6B-FBDbX|LQiHWN7LWG50+%z_+L9 zuUhf){HpOQ)4Yx&6jd39MU8C!xeV^g0rmbRK?bOm`*84qRd3Zx$LT{Umk%}(d4Be5 zViKCQKh9-nFaQhNn<`VHPspPY2M{hyf_@q0X>;S_5-WUNON3`PYz7A%zrqj7tXW1r zLRMzs>mF~JF(N*6eb5=qBJfx>*DR1EPwUqT`XHZqTL-fVJOT+HhY=}k`gM%We34-{ zEdobm93%xnZaDS6$5THa@L^Eeumbg>r6AXNMru)X zjf_jW)Y+uJZcgte%pjln8ptzz?Wt1itSk(RSE6gYWBYfbuvSbF$^R7yF;d$PWTk}@ zrC3#&6L?=fiIYM4$6oofo~+`NoY%`+$if&HlNqwOC}eqVB2e<3H9vQ|-|De6#=)86_MOmb|R6lfFZ^h(sXimpFc_!O}1 z0o932rn-Z`(Y!f!qy;m@C^0Ju=%EUl2zpDF4E+531(@^VC^fL@_r9Ft$4nq1e)j3vRxP`CD*h1A(5dB+l7~Nd=ieLC z7a0TVT5D%-@HMhO_lzXC-^kT@IllSlZQ$amHb*1d^V&;Cuf`z{=R@b`Fye|uS+MyR z!y-NE?=HFRMji*6T=n8qYHC#j7$rykIW9y;4GDW>L?%o*-Z*>G^DVsMxD_pQ%`dA7 zdUzQGW;2snZIk=N)p+J!xa47^GlXNvTqKu#{2l;j+XxKBQ%pgb-Lh^ zX-;k#GhV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` diff --git a/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 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 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC 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 delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 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 delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 3831 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 diff --git a/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 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 literal 0 HcmV?d00001 diff --git a/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/mvu/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 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 iW8_KLJ^8S) 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/redux/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/redux/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/redux/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/redux/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/redux/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/redux/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/redux/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/redux/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 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 diff --git a/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/redux/ios/Runner/AppIcon.appiconset/Contents.json similarity index 94% rename from redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to redux/ios/Runner/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/redux/ios/Runner/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@1x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..980e5ad64bb0fd4a9c2c6506e9b811ffea9dd64b GIT binary patch literal 715 zcmV;+0yO=JP)5QXpJpN(w?YkRkYwc_j#m|(3>!PrLIwlTJ6&Ufo}SH`I1$#eR?RVOWIzMsU) zrK2WI$*4hFGG^Q^9@T@8zu5)!Yz6I>${V_+j`Ok!^L)v;38fNcW`cbs^X>&xhbk?f zvS`XCEg(wS59HzvL0zJ3#-=Tswu302VRN>z3)sQt+#O8gBeP#+>JsI%uI=(!2l6=C zdFI%h9c;z_@g>lFVht7cT-%~z-i?ZdJmoU8IkPWPB^k`Ff#(xjg!dpSwLVm8y$Z@~ zqGHj@W>6!4&#i3X;(Y3is=Eq_sMPsUsrRE%>p_jmL_k5`*hG^t2U&6%yTe|1|lg*UW~p>+@q!E^s3OEa=e6Ud^0-fp0g z&B!j%6y4G^MmBL1O_42jA+woHwxTJ#r4io)FE___=bK_XXo_uveG`pQHs>9%se`%% x4TYA}o~Ajur)^2@Z#O6Q@F3(a-Ow$UJqP2R#rz($lm7q!002ovPDHLkV1fcFS>pfz literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@2x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fd870289028b0d1ba6565d9f29fd42fab6bad5f8 GIT binary patch literal 1591 zcmV-72FUq|P)Ffwcl%S_9_!a48Hv5l6Yg}=#nG6Dbu zla|r7Yb`^I)3=8fNzyX31gi{#!9`fl5R44#X&qjkmK_)Y1VY=0(Q$itxzaMci~?7J zyKH1wcMh7|XLASHg%J|-qf@pXF{&*iD^$-ij0`JyIjqHchvApQ$T03AS7awf2>H=E zVoaL{qYTWnjvBB;p1}%aY1}c541*Qen)UNz#xx^D>)7gbh8TGWBf|hRzyCJ&b&jv; z?q3&e<7axnT(Y$hS>ykYW=?hIQ}~7#Y^@lV`Bx;aHCF{4bPleE-x&PP9*NU9?SY zl0CLylXe)H&){aXGcRRIWPSb@&S>s!or|_aBlZ8FP zV=ahX*88G;#zXBh+X`g1q>VF-4C5|rhyFP)t?X1u_xvxC)$SMVvtD`w4~z_(bj-oX za4o|cKD-zpU*!;ev<20?M;dTJ^JP9;w8MaBVeEme`4cNaiXR?Rv*-WOoSK_wEc2pc z-cOwi3S{=X1Mm9MT7(KGr|8k7U|zR_3oZl*bk_W}NrOHzyJh_`l^26BGOXp>TXEVu zJ10BOU&GnjzWP3*b16ifOF@&4MdhE2FVJHzy+WUu;gYJ19-f7f;h*_ZbaZ}UtK1Xm za>H)G1;cm&;DU?v!V53ZQ!l+tpPk*LuH~=>H3wVyQz%QP7niom-IFL{&bkws3(7B6 zB8po6>4YjMdFI8J=u0!}B=1?l9E|yY#fx-td38B?=O3{Gc1U%R7f}wNr1@>T z^;xf;(1*M^?6XM*M&^PZUgF7`^l^qI?pn#Go_dO&d+s?D(o!rI2_@(EkI5y=dFttd z6|w-V;0y!N=gm`Z6WshW8CqCGkt<71?HrJU=lV4C!WwV}1JUa(P@k_k-woy|o6B8U z(4S0`!;{Ax^;)bl42m!^3`q0`O6UFl5=r{}MYw_QG$|?nTy7;&P*D93dFF%x=0LR)ls9F1Yu%ejZZn!X}O|T+jETCCX&8^lBtgyR)Ok!Lu+j ztOL979@$MeqLu58$R3%5VXzCUVT)brjI*+q2&_fzg|P=_T#?EL1b+x;bbs0r*(Wx^ z$nd*OllQ^Xj1cnUL-EQrXRKOvMl0lCoFE2E)EO*kykCWpVe8!{^UAJxr6M~qLY6c6 zVB)yL6+fslctIn41|!2N!`5tX9`O4sA50u{FhXK}fDdI)uDOzj)2_rJNq896!Dlcs zjC=@Nvu<9IJermr7y%IK_+awrx+`_~H!f?qlZSa8Ja_V9{+g7*5v<@dSY_CnmEFA4 pojS_%e#4bI{@VvLN7oqv!0V&tCp*)&!{Pt{002ovPDHLkV1k)(4H5tV literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@3x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..75e84cd172d55b1b20971fb3142ff6876ecd45c2 GIT binary patch literal 2506 zcmV;*2{rbKP)Z*FU!m{%*@P8VRsLNIdO-bn8LBcq}8jNvvE!9=H589 zS1q{F% z25_7w7rzc6_W!D9OuwF9IP!hcRh72%UTx5Ve2G1JF&R7ItnWOsxG;yFhdp@D-v_7k z&fdOmnO#2ee(9>pVtq010kWwNld+dE83*wHn9tfxBT2o#zpv%fYznjAHBY*l!u|2m zSf4hSMNGyg$1xwm-`9dY9-PW*J`_Ic{nAyH#QK&>FZOFo43jar5Bt!M3$uIOIUl>v zb9b5X3#kSD-cQS%Eqv6xMP zE1Yp6YpT=?fig_Kh{=PPj6E)4GIp-ZS?ri68GBT|J*YdD^7L~SW~Sf$s_d;n?I9a6 z86O}SlW`cF=fmCqsn)n2%B|DQU3h+l{eDQ{AqgImvG6u_z#8VP?>ut&`^aBtAJJ25 zoAf%WFtdD7GVuJ{!xnPrg0dHT=P{^0c=^-k#J?H&4rDa;IKAL**R;Bg+qyI7Dl?6?0iCgVW32mf*?q1Sfz z=n}fHUmsBNpsPIOBJ3dV4(?VgItv@Fu4~cXjdeNJ4Q-=X zkTvW(53?5w_f601lYAaaEi%u8TyU>q(bA3&^YwMj`h}NX(m!eGVBcXuOvdhcvL<%! ze>SspqOvb!mSs*L%6rh56AHih;)|A_H@E4+{TDD9A2AP;%Z=;jb0;eMNOFOB*o`eL zkL(y1%$N88ldrF9p|It5P46;5*0JRRCYv=(#zJ-Hgl=74E4rxsvheoAymLMogSucY z<-wA%;3_Qqt>G;*$gX227ciKa_|rX8dLX}1blF`~_UegQ<_E&Pw(wC<7~tyqm@cY8;W|KtwlU@|6uqkmeb zH@Ax}D?b_e=>MVDRK+0{Qa zGY;R24>BfWFnyGF7!ufW!Q|`fW4>kK-q-7OZRfb`_vPm!8NIr@S9IC=?H&Eyp`=&P zL*9tV*omA~}ZeJWoy5HD~$=HdkNnt5A zV=2cVg&Qu0Dhp4(@~Zx7`-nY%PkLGJpP=mE>Zblof3o0x)7Z;>GuWdSyY~yq+njVF zYd0LDFg*Y2YdV&i)hGFMdBe;2{~qZ!dO)F8jg@FX&V%1x1y9 zZDCDUN(sv10C;;)A5}S!)_zo&&EmhbwEC8O`st_jLk~TqpM3I3ie6EAZEY=7*{A37 z@3|k7aoF{g#$;tTvvCj~X8hM!8zsS(y!F;w^}`Q8OhG>aOW&W(9o&}@lW}2o7i1r{ zkPmw(`^6AsF&SI_5^J|b;kxUt(+@oGKww!|U0uDRsQm86&8Zc6nB0ZQ*v$|oW5GR7 zNeD}o;V+juY+3o&_`wGslz(MIm4$phuleklvj3V{4u3x;8O;oh`a>Hk*|{ z*FAE+h3xweWDa|nj5&)z5khf!UgL;iGIRXWnM_9C7*F`zF^}D_R>XVBN(NM4_Nc;S z?6V$;hcC@P*}n}=1i8bDSr6nA{Jx=_VVZ=F3f?YGp6iMhm%|?7UV2u9_DTw{2qZ!K}_qW+HdAyG7cc*d6O|2^A=3T($S!#tom$9pNdZ9^Kv*c znLivji9I5iJb?>y@#}7ipAXTgT>i7E+$n=n@)sdGx%LeyTSyJ|A%X*8Zw`~Odp{;m zVKR2Vhb-L;N>BtLl32UN8@4LQ0Zhg|2dW zA%Z~$U>6B&k+WEkHSFAPXJhuAV83+vgVrB5C?J3(I=%6Y==6G?K@gqBu#N>;!=Z>` zGKPTr$*hCCT{;*P00F@JA6atqAGI?Zc?v}^8M}Gk_sd)5&GL4GazXG#e(b7EZI(u6 zHm|NtZp0!p8}aDO=2CQK!(M`250o_w;5bhXyML)RxoO_A5i{?*THYvcHK?QbFVbTr U2?md5F8}}l07*qoM6N<$g7bj+?EnA( literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-29x29@1x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..03ab8a84f141a4464654d46362eb539fffd7d067 GIT binary patch literal 1068 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 literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-29x29@3x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f47613ee46814496f40d58ae909b756976d765e5 GIT binary patch literal 3810 zcmV<84ju7{P)eM-ZTF#Iu^~aV=HLuxJUHhR;)%U74Ro7H+I)AV6nd+LnWBHl$ z_iRKpibs=q`uttg_rd3t_aSi}ncMli?D2H?eCVOeq8%e&%w+Q=2Z-{?Uaw z?1o_|Z&_538tQw!F1=9C2i#Y~^L+X`Z_B>2x9smQX-RodLajOS^o5%BXdxkf98Kl| zy1^^q;Zxra>krC%px>AMB?mp^fNdEix>FV;Q#%*EPu77&zWARwGt6ptno7`FSg zp?K6M{Ji9GvF2IH$6++o!p0;f4zhF!qDo72*qrvs!g!hNi=Pkbf=1cVxl9$5(V8Dgj z_G-BhU8ae`CNw3S4ZaVTP~Vs7y@35CFUieed@usvW9t}RE~2qVp&pHq8d^LI|Bmmq zy1b40%cn+tB_5+BxjwT~#Q6H@zUOVsi^xoF) zmwsNEpR<4H8?);KOSsD`Dfj2C=4!L~Mr)%Q9tzh`L29T*D~d;Tg6`{eW4tHT6_z4b;LibqpX{C*qi`;_zP`|NZ*Za#QSj(WHu``>I^Htr{4BJkQWQWI6q z;{)ob5*CE_2T;#f+-|o`Q?rs^(QrfeH(PJEM@A5j3R|2$JTy3*=Wc+|d0^Y}zBXqG^^BZlQwIP^}-zSrp%f77tUvEB%-)>HeE*yKQcM ziR@B^8@j)t5YvGsK}~6f*ZWBgEq)%4Lcn>Y{@#W@`(SC=hWwb4a0B-@slya*cc2m5 zQ2Z@aLtj4peSBEIk2eq6>6O)xTnRULe-jrwBgCVnz+JsxC+hpKegWrYK~(rs$FN;k zT?@^XaD(?Z+wR1R3gS^g4x-`V!IShyf!^ACI^XNg+m$tb*Hu!uq5Dg?U3RN1NXTl~ zLKo_LwGJS?PylKu0CS?g*ZSjsJ5b=avriIk@cxG361j^CvIq*Yq_(UchSDGJ-A8?| z*Zmpk^Gfc45?64z!TXzdq3#I0w!G9(&ntBu(@|ONS{nUA- zS4B;at>?G1nTET{tf}`m{3MC(HE4{S{aN)DyXQ`4VzY4c_wcBP8ur1uKHJG}XR{Ai z-XMom`v|50&o|_qrvCj(l}s;=a>(=ucymR8CV?5Yd)$Nhz%J;7|R z?Nf_VL-B+w{N?mn`^G!%)Qdwet$zu8v^{61R#wXr?DE>W{btWt$@53y?x^dJz-x!4 zM!4{|Q>X1)Z?~ojVh4&xOXLe(qjr9Ett`Px-_LjD|6~7Rs;Y{Qx$cXO`VgFF%|qTd*Coi}sKN zTYP`iLqBhJHVlc05Rc+fNE0r6_wp^dqxF|TP&NF@#vxntc)o1G*1O)7O+&@^4}x$T z<#IaYY}#<)Czo#6T{5J+<0$|&R5;W!V%ujI%NFd7$vL~XDQtf<4JJN3EXWs7JQ}eh zFkJZ6g{yWC;W@Pa;?cLX=Ir47QrUt%_h82EmYo9kME}=9+1*rvx z3x7C&*;X_RNDrWAq`rT5$EY1&S}9ww|13PV>>av4>U*tjFfk)29>tdwE_J^eT@zf0kh~eQJ3Qrs^f8g_`x?X=E`^~}ocBxFion3Lk zet+nJx@XA#;MeqU4ESJ&)k`X=;!@B#ay!cOPWBn(9kq7kjA zAhqnmJ#*%a&E;}-Y;4TV&CO*V?BvR-{YX!NeG;J-vOgMmR5@>AGb%^{#iJnMW)f^Z zpSPo z%{<_d#TEOu&hg|h+C0Sv?jM5TfkawS{8*$v2nhJdkt6o6fBmbis;aU_j~-Qng_)U| zl7sD;U$$@P9CLxh>_WlYf!#v)N9m0UauyX#RD^ca_sPTl;OZR-Pv!XWBF1ZJAxN2Rp`PUY5s;`d$quWPcy6pNStFkHBk}sd4`MdcgKC zfBB33^{; zLk*Zu?azMpGyCmte_Q_^n^C}5rsnNl=IKCVb~%qm9tCzSb$?LaH#E~9D_;NpwYz?} z(f8Lce({U;+_`fERWegkQ);j$AI&jC2m$+r)d5V%Fnc;DEQ&|J=LP(YZ+ydEx^#(v z$`bHj?$6pi%q8Gc&I=jruhtDeDNga>zIVOGzWnmb_Qs7H1d|z)larQzTJ*=lO!4K! zcNS0~s-c|AWPhM08igwtyY5HeMU&X$sm7J|P68=M!15eR)-M4S-zHdh-92o~YK0ajONhu;F~Sr|gYp&W3RDJiZrIkU>#@kt_o)6bkm)j)9F~;L&6VvS_&3?=P6W z-4B-?R**($5fUHAQ-4$MLz|zNc%oo`(LP|c`S$iaLls#`p2z`;=w>ys7AU)Tlr92oE^}X7EFY5b% z_dx5P#r~3`#_wj0-c}t%saDQQN=7_@x z2D3lsKD~o8>y?Av;XxFSW`YcY;?ZOVJ;jI5oBDicKgo|ztza;M8}wOOPFqH5Xyj2m zni6_x{qf=Nhrh?(PqP2M!P#dW1~3u(N9=!94$an84$W9WE}*_w>!|WLWYe$6eFz9& z?xMl_yWHMt?W-IHFktqNF1*@3FcDvzwP<;P85EBu;?Ec`Z|42>4bM(UZVuyvfrx{- z`Pa#X%Hg@_vS10ef>P%tD~v@$C0z5`h8~6_peL(!~!M}`5t^AxA1J`$ozWZvZ#W39zTNO(L}=E zADKsepWKggY0kSm4&>&Z<$J6KMo`(GTYhT)$ovrrSsv4dFGeMbM>AnV7y@2-FZ8_Z zFF8ma4pR(FN+jfkKkm;j4DZV=L=U5Qv}j$xE8&B>ESjo605yGHdhgFI49nhxnifnj zhewxQyDz`^p#%Aas{Q%J>ixOJMmI#>=`zEDvMgRSW5VB)xn+LYL-vuqWIx%{VM^h@ Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-40x40@1x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..7f2230a978c8a2f82d02bf6ca32497c15669e48f GIT binary patch literal 1582 zcmV+}2GRM6P)oxL5Jl&M-bdt-nJLW7%*;tqD$LBxWM;P4BxYtABr|k+c6=+frM0{PRUMscPfyPc zN0@yoyQfc{?VNnEqH9uPrz*Op_Rn@r5@&*uVG9`URCG@6@%|KBtLUD5QNGCt01$L4 z`sPnmbWe?(?Vch@MfWs}3@f@|Q*dT^zM^MlM0Q{V5C~PhTFu#>nF0^-l4(m|mW>RX zor5y-Z0;btFhZh#)ymerTCt*cmW<56$gqN!!zLJK7=9c^hB1p=kewJI|_8U}V?~UIHV-=KJ^z*7+=yB7ENT#Y^8GUQCJV5!-&%@Df?W z2J2MA$b1Huqni0OkwZ6C(4R1wv+aqh5neuGS0GCx!whEGD#I4$k?TfnG?ZCIFJnRM zWH2wPM;%l>YF8jjGgX{nWEius6`IGLG`n0Rv(KA>r0IT9J?5mpalpv1PR%%s3?F9L zg!866?Nf+=-x!ezKGY9`!N zJE=fs|3C1qYv%)$+1@Er4F%JtJ4DT-hd}M2ZyeI-{4ty1cY2=k!pN{Gx7ot9y1PeK zJ}>x_hx?3uMD4VXYNx$AHB-v>4@}aRzy3}akJ{Alj)L#P$nb-%7;WzDTPpW;Jb&aH zT+ojP02iF1pMUSp|=@GNZLSznTN_75zTdq0xJJ;P39Q7eC#4JZ!t z1B0rdSlvfrx|%*Xc`4| ze)#zpx_M+?KQqkp0$B2KJWp0WyIk%$e+qYx*oT61Aq+5_^@1}f2k0l}?qQAUF)!f^ z|CC;{RBm&BpC0kbav^;e3;@nV{al#p=M{A-n-&BQ4NV*7o7jE%qNQ?$y?wgdoxpuA z0W0_q6h`KP3lRbhhkkH)*0daWa$tfNN2ql%O4F+wmdfRK_UL9;QoS{=;0%|5GcFh< z(6Ffd;0OvH&D-NMOV_v(hBs7>!N@RXNi;0+;Zoed10!15asvYclt?5f zpU)p#F1)ovmpPMaH$M)m41+j~OhON~gbs51LWJJy>?tYs%{SjrXJ@BgE*_8T5RG;|v?ojGSc-AUUX-H`Km3q>`Q;as11Kr~x7|=~p}0-w zIezzr zXq;LcY233w7Dk2viDpl3ui2d=Ns~JZmvDQTlJf6MTO>v;YL<6^99(`s?!kb&i55>j z&4CnoSf`0IEV;v%F)cYAimF)#Mutnk?lSMScylSy>R-{Cz00J?!^ki)-Qmv}N)862 zI4_~a2P5a%W%t7h--^ZsS6^(Fm-Hnou)+@;xht5XL^4T#1S0y+xDQPBA;YF%7v7QG zL`$%6vL&!eI(`_e!0Ivsx2ZGE%BBQhQ`BALVleaE}Uo$6^pIG0<|!$AOtJ;4Av=~FT%!boGo)-xh-5M$WDxq<#akCTQzOr z^&*1@O2HW$8CDrKW-IprzhCHxtk*C?qJM#NliMfSq8lS^kqu(xW!My)nao=}hYyKv zj>ry-00;&;qMIk%VjC}VS*<;~k>-ngt-P3jCRnivEBFjn88&9=cHY?@+f4I*tu40o gVn<^0BqIR$3#s8JH79+r6951J07*qoM6N<$f+ET2fdBvi literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-40x40@2x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..42315c6dc1260f60b9de72e58f1fd4789c1f488a GIT binary patch literal 3462 zcmV;14SDj3P)}00b^74z_|aGC)>rXiR;Q;~6~{lQNx80UE~{HruBZFC zC$mmZnEgR!$K0RfE%GLL8*n9L8$;bKW_7nh^Jg?2e-cS$_>*#-bxv9N`3Y+J^QcIL zb;R4^O5O@w4*xXFoAeG#i^pNnOqFY>&6?DJJQ???&d!gjyxgpOXq2}D_cvZWxazud zze!8K?r5lvlkA{L-qYvBZe&NmDUSc++kUCT0lmZl zstj>Q%5~3_-k&@VVK1D&5q3ZI_e!4wC)|8p zgzf#&pvtwVfG|}aFx$`HtbU%<^fMXx{EaaErSF%&Sm2!e_}%?yuO=RlwD>#&->PzL zd#Cp+%X|OjTUNjMZodM~T^|l-VY`2}o9s!!j&ur=^`khm;Ev-;qHrHv_!awK!m><) zWoBk(hA=ae;xL)QXl7fom}W*WVi=9kwOwv~o9C07aZS6E)j8kZYrT5)s;+T1r~zlr z`*_E>uip<2cSz6Nf^+{9Wz8+)UH~7f@)l}yIcgKu&E#WaGrPWW|IZ!hl>XA9c)rF6(7Atf z#h%l`H}I;87Nb@JKW1R~O7G*H=k|MFJJKa1z+xGJLxzbtoPMYVC#f3^n`d8EOTnXDA*u;mnxtm#qU*T3IER zngXn4|Hux^rfwfU^Un9w(4=JXHMX=|)BZ_-2fEhj6ja#|dsNX{G!+NXbp6Bo`1)91F3zxj z1_7=(=Oe)NLyA$tM3tYsbyzj1NAai+`@a8t^TBS}%SW^917!cI^F`+j7!QQvQRT56 zyX3F0?Xk}NxZhKchCb1z!##3xc0scKdSz^;@;t`8ks7E&1CJ^i;0rIjAXmQnj@0x0 z4Dh}WpF7$oJ*CCW!`oS$k$T7bA<>3IJ!%rvqXq=1T>tW$vgu$KcS7ub_zSH6+VOrF zDlcaq-jl=tuMVUTMkuzupY&u4y^m%Yt6~T@=E66-Ip8JcTy2;INU4s z70@$OA;6HkcD*7E2RhB>dKV47_dMhm?FE@zS$A|MqK>^qoi~!+* zT`x;>9Af>EKCM#?y?dZa_y5v0EQ@PvnTEF#hxhN^QSt9@&aVOXF|d9U#iNQDAUv{j zw|w?sC-t6wP_bTTySlH)N3+bn%4=)#$F7m&UG`5oZ&ZJzU!eXditj_K1_;}B?36F; zZx0^nNAW0tS$|hqa+t+3cd|!w z(92^x(*>yf?alqkqbJT?=qqgn$$bDH&Gt<%NaK2Vn@;3n)T8MLd*Gww8+k>SL-DAR zIzYJcjXkm{evkg&>ll%-58$KOYm+6}V(g>4qU`P5-#8~gJv^!C0cxQE?oJ&Z-1yo% zvh`$6e%?JQvny+vhxh#09Q(w}q6C13yZZO%EbJetd5?mi%Es8EN)`bs2im)&w37X= zyq3`!=1n+(+5v!Xe|&hZ0iGI?O{WSm`VAD1CS(y{cXzi84Gl@LSd_JlKHuu6l{<%~ zWfOD5DHMj#(7X2!d*TVud|-2+O3MWV_}p{PNpEkjXn3F@uCA_LPJPHK3xpi0+ysE`_4t40K40mYHKmWWu@x&9dZQC~K@9&o|JQy7vO&#L$+8O!# zzy$Nh3BK?2Jx z#D�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 literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@1x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@2x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..45537513df37c45e8074c7c131c61cec2eac66ec GIT binary patch literal 5868 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 literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@3x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6360ea17a408801185f000acaded313519da49b4 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@1x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b GIT binary patch literal 3390 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 UptyngmjD0&07*qoM6N<$f{32#_W%F@ literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@2x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..310b0b8f4f1ed5dec5fe5480c3aaa1ad05efc440 GIT binary patch literal 7082 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 literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@3x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..40ac4ea7a9434539521c5b9e693c804e1ef8273f GIT binary patch literal 10960 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 literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png b/redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..521c3e2a6269c88c8d6e6797b53448fe60b6c712 GIT binary patch literal 12001 zcmX9^dpuMB|DWqHw{k6)QGJkWrBE&-B;}Iauao2&llx^h*N|J0kTRE05lX0BX1U*! zkX+_|zie~cnC*9bf9LVo_Rs76x;&rH*X#X0J16O$i2)bKSq=~g#ASF}?>_KLJ^8S) z0^jE4-R>Ze;(J3q9g9$gjklJedFrH&y@dGnCOfxpSk2|S%e#at%Kv}uNTs%Fe%kc= z{o|stTd$9e`oC?PBNdUi#J?1m@iUr(6SOgKF2jUb(th28#6TrouiJ*HB9p9NRbTf83FqWj2IpJ3a3UE!AE)dIY(O zLM?_|yIZ^N^>^e-ciTG|6(Ti1_Mi+S)g)8%$-#uX=4IEBK7r{tgVDJIJX$XG@(gqu zT9si*+n)=$w&^u7qSk%Y-q=xN0*<;@+CVK_DAP-o2ElYk?6h~UL_nG)@&nOo29$|h zY;jFs$HFvHZ$9m`@#4eE1S9Nq6e{9%N(|D*Q?@?g`sox2(Sla1BK#&JMpY@~0< zBZ$@G%*=E1?pKINz_$_XlcSw~NXL{|hN12UW`Hpg8{?VV+830Hc3Q!VhONXHrdtm% zNc2hq$43*?qBV^nB;mGOQ|%T*P5cY#Q*A8B7weHjX65tIP-LO<)FT8R-ku+R>07=t z3~xchKFWU@9){KHX}XEVNdchpBYL- z$LM1)>8IPg3uf*wSfdsP`Fmhtp5Kws3{SmOBNN4l2V_L|)3BkACVd!l3Z~F2a`pp{ z{CT%XH~NPiIV{N?avmKJlIFT*ImI_+dU>)u7BnZ6gG7`+JbV38wHV658OgzJly?$e z@z`{7YJ!0IJv@iG5qx0xXk{mjKY@lU)W$%5Z;rE|iB8wmr z>ZOMG1=u}a8A>Ps;1aPx{q~jnNz&h7A{#O(6%~;!=ckKIUkSl5#)%v4FNHW!mS(6$ zge-cn>y9ScMCoi}kjL10kI#@1u2U8DE6T@`5?Tyu3F+xSzsH1H+K(jGpCSN707z%J zdRcyA%EXG`m9ONmi-O3}sQnf*HPy{MW|o`J5`p|-6UsLvC=CbGvoBZAL_(YIUA(}C zq$K|fWu)vCoj_OCV0fig=84)~>a-rL1fIdz)6rQaOv!>%rltZzUb?D%W}1Zc4GP|p z^H%($yryvII&8*cvkO_3a|6_Y3Ne^+^dZAqx&&@H*&jW<)x?7BK+&|>2kb$D(%M>D zK;v4|9Ja~chD+0dRd4AudR=&@TfB%M^b#NZa4vqnusVGTPNf2(*tJBxI)af-OBWbz z{}u9MvaMdJIVK5l37}>h;SU*cMPwmcN)}e1ygHC!bQ_m8IYZ|A(o~$x2-;Q+j*20J zQWJ2U^AN^JAmXdpZ86)xkZjk{4ECU3CG;0O^5|JL;*R-BHc19csy~NL+fwYV_;0)5 z%W;FaUN8;IxStl5tYw=dkzc>E6EOUb$3`0PW3?dN-=J=ErF>D$q7<>AyC(|T3xl9$ zqR32b*C?UXP!nNOAg3%!KwyHQTkUD^Li4IvWDraaCP8C)7O8_(y zlvI*W=vYDt0!2VKTd0xWn;c-m5=1XZ%;AijiCUeL1*OeU_`4O3R#322*R z^YD<>!O3Cv*gToP5Zm2hXcd+5B07IJJ+nsT*XseyIuxdR#iZl-IrKG>Gw42;>yG>( zZy=-m;d~>RyqY|YCCOo5(no2A>Vf+)wX=dO*oOHF4<~sj%}MSf*_RLshs{v=?*6@3 zN$DI=-Zo~KaQaj_uqKLLiMyzdqJ4Q}$4{l;lH6aUJb^8+N;NkgYPayn%b<0hmzJ8j$^?zlvr;Lf*Kh97Su1cHn+;u^#G3O1#u){t7b;o{_u% z=>+J(iSHBQSQU5g$7Te4KxgXbQJQHb+P`ur%3mj?C7IKZk)5wG?F13H)$~L6Wub}! zeH>;z?@d6+)TEY8nBTn8o!gnyHy-i9#WCrfsXS~QfYz1Qu@4?&ni{{k#w(mfg^U?D zqt}*Z;-U=^WA{~7%MVy?K9JWz@^CdHH9D)PJ@ot!vBAEcu&2Ue;S_fDskG>S{g?^;^wD*ohw|s zcpKojY7_RrdLdiP{wj5=vH_Mr=T?@imZZuv8uCP)ISH8ATDE!Ps|R_?QI&%GfL>rN ztuP-Ax}ZYDNxfzi5r-;1zlgYO)x;9-J?C_jXeKERjGcpVjA`G$Ag>`pLxb;1Y+(yS z7dIz0bgp|2fE|AWP=78~R_^g-B2Vtd%paR6r7j5@=`mHAzY={6aH>Fjy3h$$5qsGW(0gH8UKlG?5=vGF9!KVl6&i@&es-AsOp zp9<0)Acph32H!2xa$gk5s8UjLMnx{-E2x8tRvRzM15`=`xnQf`3Yp&?urrCo`kAgI zM15W%Gq&aQU~MVzD;f_62NeGD{|}P9$zQua(SkYqqe-k`$+$(Ol&e~Is>RDat5@Xc zZVTwmzo>{O4~9x7=Vr?qd?jWp{90!cj&MI8jJ@JbIc1ZsFjMGxvI&b;QS+YD#WE8% z_DUW#Feu2P_)K`k@1NuRnGF6(M(S`d;Fcja6jeUDK``_)q_;OX*3N<|bxHdR&YAAD z*plHPZ}S8h219H2;J2voe<42=t1A9-JvJle?K#|&-Iu#PA_TpsEzATI%1_0YVPz*$ z1kGv2C=csRcGhH+)_ce48;hr5S24Cw0gw^Z89B*w*n_80(Q22y^F~~Hu#yJ%BxIOp z;1a&E!g9h;%fV2fMD!5}|0VLD;DAGQ|KrPx_}fx`5SJHh5LP6PyxH(kWr){?5`7V! zN5nrlP_#c>el)QGMCD@Mjb&oEmny_h_H552$)Jx2utx^%TR#FvI(`A6UKq7lmk=2< zg+#~jgyauY9~`}JPCQ~|ElA{U@^(JCptc9{4rzn(CMTA?}7%zePs8T8JhxV`G6qwC*4z#68Gf+qB zN_=xfeZ7f2?#6emFQk~vDjrn0&^ch&q)#^U5#YBw$4`I*pI-7QYD-{g31{zs%;WN_ zzmds((azLSpue_7Z}`|3w!cK{Lf@Hz7^0rl&mita7Zz0gN6Dg(bq+l;uqd(m z4A}4Hq8PN>?aMw*v(ANKV*+%+DLXo!+N!Aa8Jjl(aCP?qa9Ck2`ec?x*rQAa;?5~M zCqF~@Izf)UslNZW!Ch(G>ZE37R%Yhp0!EO`%0rbt!GcDNtrCzk`u>v+6Ng4G`_Di+ znL>>#_8}IH#z=&jqy*uCughf>d*@lowEudn3jmS(%Y%Q%)|C@hK7hXqu}>K3F3f`O zw5q3h+Q1k`V19|R6?*_Bu$({IOj_Tm%d$73sLpb!Z4!eOzJGQV360j~m5V3$k%7Ys zU0@!(xj`-R*#j``=Yo7oN-|zxsUhYbcXm}#5&1VBD=8_C2YUcf z$x)2)Dp5b1B?<~=oEvvRIWZ}za0=e~y4UinY@dd&fCMh^{bdOTPMh*d6eJ3*Vd?;k z0#9=Jm(AY*FVQUThbP*=>zyneu{_5Dh#?+^BnYp3bwEaOJ4|S*s6Vv?qFCDVx6CzCR2LwqBQ$1 z+U73H#K4J)jD(dqTbL>Y6;>4NwSfs>R;_{t0sWInMko#ZjUK;SH+6y#E=HS0u#u%A zbN##=__>h9q0mi=Ilzo(M;Z>E<+J=hfKG;z@5S)s=3Tkd=G7woRa8^xG{RjGUY}P2 zP*)?s#E&b&*fDHNipX^Fw~;Q=v40ylmcG4^`bZBEQgd@#x+L8x>IPg=%57Q!oZfCv zce97Gt*>qQ*M*$hOtTubXj-f6Ga77MMg6|IV=k=*LB>}%S z7z-8KT~#zt_~2~1f*K`Zrd^Kh9;3QcevFvNp|IdxEzo!PUuY;%{eBy4mFg}uavx7% zOC1w@M^z`DUJBANNsR5x3!9aaQyW_*YB)%SX|!me3EU!d_??GWuacrV0wDKkZ_A8M zb3))XR~9G+X`+Sk%T>L^#TaEgCXzzA+DpEI zmFcGF9RdgTZIhAdkvLo&k%tvGmwZb>;EKPPK`dxuixP!|tSm{yz4UI}SnNzRdeEUL zN!Itxac;-5HsJls%%gTW^Lvd@7qHcv8>V~+0oW4_ z?qlBBiDjkEyFxTR@qNd~9l#26^rz*_#*f;I_{%xY)lp##PjF1$ruilA2!Zt{ocmxo zp^8Y_m6$&Ic*>O@6KMvIiUrr9?+*NBnX=LDf8x~tt0p|S#x}3X&o882y}IBTPO};+ zCOWc0`zMd}b*>gJ_avqa*X zKY?wQF-z-BxsE!Pp%yA$Tk+c^eWVt^bVpC5(Vi6oRgol692P_y(l7<8zWh1c21|Tw zG(!Ku!vs1w?BGKo6bPYEUYw90|Ci}C+CW4?M{%X0TKh~zj2-VNnVV-rJ^0OZL%uZM z)$RHL{8!Lp68&Sr>wjS4`^SGOYlDa0rOYhjiPfMPYn;xXbNf)uJ5YEp&Vhd5o`fYH zz9O3{RhEcr$lf(mANixh_xl1p&A*~mo6v$gZ?M`cmn+V#Mh-puijo4qLs61V9g+~w zDtW(Ig}7Trg~VhthF>Uf!Ofj-V&{gn@nmm>!yJyNO_PP@9q1>Iiua}871x#2{kKWl z7WPpq7PUH9l*=enZ%jFp?VGnP#KwzmiO`@^5br%D>-GC1Va{Qe=5|YX!(g0n8`=do zUy{cU5xwn$gb?=)(tC=&WBgEZh}#oX^;?jST0qzI#fX~XNEGpHLJMNK^7nA@J{a;6 zM>_tuth8+~t%SsoO+yoFhKj#mPD6_QGVXku`oufYlKN>h^x*G@D*h@7Yrq7AxP z{rXhr>u>*O5`V|&;z#2ns=Dx-d(o{w6S5@x6J{cD&xVCOeox)sIksI=su+|I>dGXc zFPF!ViVYqOO)hga%U7`L)5NIf!59g?8K`9S2WC|^+)-Rm*}(6bkUMjvXaojJp=Dg7 z)xMFH-9G68Z&Bf*bW*u)Cc4u(1{Xt+bA~c#LAUE?h`;;KgcJACtVi{|n9kv43BihW zcdHf}lz^#rp6+chy?nw}`IbmQy?^=5EVKd7d)8JGh$Jv@6irqLZ4BI5+nnnpL_;}g zgw(nA)iJe1Dom-Oa1_%m8>`8Xp~o!TU1^k2nR`gOE%5JWTT z??o>I5%msT+PIigjx&e&_J;(miuKk~J;Fvwp4=ImF)cd(CmwW2MJk(u*P2F$F-@!( zWSdnj8V>)-Y=iD$=IQ%^OsF6U9mem?O26^jd$Q-sC!Ur1`Y^7h?#H9X1!&9|Q_EU2 zgX9AZWL>@hjwxAjl8qDHc17vZcL^zX%U`u8`6}V4<|A>+9Fa7JPG?4H8&A}On}YIG z4jbgV`WXD6V@XmlB|?VnyEDA&L(v-(4Ox+EdteQeJYt3dc|?1_05&ws-@PgB@;1+T68zXS3gvImteP!ifTz_Dt5>@BL- zTV!omynzXr|6My%xz~r7fFU3+!nYT!&5fb|s|Iz5NM3)pW3)|$90kqEdvM%}(n&+u z5<*v(L^ZR`+@i4#Aigi<&e!1S*80_$>GI+w1|ZAYSGd9i_xs*{)2naMFTS8Hg^%s?Gw zpn^K{;=CJwttC{s<*8~SoM|VmU>Lq`@}!5n!;CZiI)f_rD3a9BG%#xzn=(~ew1O!p@qqy~mjtL`8WJYdBj$!LKP)4F@oW1wa@S!X zk_pGQ2PIG&qM*x+Gb;?WhJD$pEjadG@M#Sk6F5!0#1ye4orJaU^N;pPt~KBo`&U~h z9xm1SHNTyR>w~3B6P_4J&3KXi60aXT2!ajCSva$#XZtoczsR$odC70s?1X7aY3-)# zr}w0JmE|>f6ooMK>>*%uLaL&6ntwHjs;Ao4*=qU~!^iREq{^4&w%s#I(kYAcxd}Up zwYSoH)_l+p!Rqk-D>#=o$A_we*e+>qH2AHk8@L5I8}*yOJ?Qk~`?@N+ICOB?%6#cP zu!YrK8}*gH-Qs`T3*4xI;Zw8yQZ4?WcnM~VIGOm{I2V2TG}#NqB@lFwIa*W|`O$Z1 zKrTP(0hCg`zlNtnp0;47X3HPsDnSdjV2b%`v5)2@$zOj$m#c;@;K{wq^xy{yQzzST z0GfpoVHxl<=EZ{=TK^c>h^#Ko9T%H=ISnjXA|QxqFv`3x1mj5gk1!t*^yj^%tVrbM zFw<-Jw9Fe-b-Y2$d`vZ*?oZomsv)vcpCk-^3TA*$KflgEY58q-qS14jd5){OFlf31 z()_-uSTUgK=6z2u&se|an@w}bSabSHat+L;#%0snvj8q*c5$ z?J(5Y&G!7>E%eRTzy2jWT`ix>k(c16P<_U*6c*eY7&As#YU$@1>J6%Y&9yZ+0jz@2 z&{cAOB|QL_>B7k6O~FRB;{<`6rS(6nF~(f0GHBQvJpAiWmoH7@W_{8H>3PmR(ju#^ z=9#)FZ8GG2rlf;9+p748(z5tI*nI?L8heCyJoC6T*_tG7AA` z%rHp$ir(aWz^mc(BTT)xEeBQ|_6Gn}Zd0sajKk}{=&l(?vw%+{*z44p?HuMf%mv26 zQzy1`lNYDZSsD{E%_u4+98-yDo0IglO>v_QT3;mY?$FO-vi6N#uTF2Cb5itX#PrkPB#KW-IG z0VU(+*^diPYecLrxuG0rgNq~I+KuA`YmSb0b)85?WDPJ_y9C(N`a zk6SC>BBIxw#4J-z5{o#i9{FCnKu}Ptf)ldG1Iwj~WwL+d**D}4Wt89P1P+N9MZEuY z^gYqyLo?t|1V8#(S?S38{vO=n5+SUKNZenCKFl1zn{hL?SPN>&Curo0JzuKfN|(c7 zZUjAhCR_f##G0O~2@r%Xw_l9WkNmIPX>$~PhpgUnioM(V!Wj~)F0iY)58Mk1x;8R0 zVip;x$;EvOx;&B@2eYibV5Li`?o+K&<(}BXT%n~U$mOiEGBeH!QYkyjA4*F*1k`zx z+dZ6}qdL6J(IyeWVVNNey?Zi)_15%@i`yPdt^^Rk%Y)7sm8bn&M`E>KSQc6uj+x9V;>J6dFxUM zN%g=&nv^bY^+#hHr>dxt!}=C{QiC=_#g>SJWIPHLwNvHxZgBof0?#lm7VJr<9e)kk zcKTQAEwuUfbF9C=e@^20A@`uYAqY#*O=X534&vv>_}HxZ0hu+vn%=WJG`Ucim{nVFsGK6qDK6T5m@eB&$D>0yR6%f-;E# zm5)k{Hr9O8FufyFqUZ2mJ^6h8R!5J1vN!M^tthlCxB4DwX=%ypdgs^p_!)9lq@CH= z)+!8%0Y@$sC$@)utA$AVl z6kaR0yV#pO4CvmIIM=?mm7eWfQCM7j-VbQyf{)ieP_oy1%bn%_$Fn~#2o)pZGCvDB z7FW?Y3J<>DRw@1(H@J9bh4=f9Jh>P2qiyW&0UlkBS(m)A?twt?^o?m5mwTA#)B5L` zNTKQ{2rCDd5g9JwsZm$kQdQS~&_lxacD~VGM0RKV$NYj$S;p)FUdq#{Mu9I@CK7I~ ztbZwexrC>O*Vvq3>!(J=7o;S`U$*HVW7pmtZ>DWjqFw3B81zaNmR1C#kz-Luo2rM4 z+3*!Iah}(9=GW-xEfu@@nM;xP|GEB0N3jbx9}rht;LWYQ49>Hyj0et+@B3T*Z+7H_ zo$nOFmD3B%&vgQ9(O1hb9z#X?f%_Y_iE`B*K0YNDb+2iX;oI0-5DJgr@8{STGuIfk znJQu?!0Te9L*>flP@3hN!<9;{FZ9Fps@DH$TaK3=C80)YQ`^kktG&S=k8$_tH;kMo+@ zJ)`NIZVuWvafdbCewXvHQ)`1PdsE1U_ z5ptE?fA6jiXQiu7|32H_-{1U<<`Mzb)8t18`mKx<2wP|&TAYQDb*Y3YFrj0n*w1zVNY{e(l6u2kG8O;me()RZ* z54#REAh5=7Z)7#oX%UC}69`XWbXhn#aet0uH8wWR*TXh^P~RjW0??~1_{;Xyr+}RZ z1e@>PDVutx6ut-B!6SFLBKJnDw+6Sfva)y$W%OZJuDH-@P50h<=Avz&ymx@}!O<6I zGp35I9dZ)l8=F;HXJK+a%%gZ~4TGkAKh$iXoi@4Xi=eX5ZmHDNeFov%Q7QfC#fRdtOIkQyaGw0f^;8V z2sPeyoYLGiHuG88QA&YYQ^f-PbD&X6(&5_r#?^F#%a2`%G=l-#6*Yh62j6ziCaI;r z$WGk6q^zv?G&k3bpVvw6!N8TB*RRHfmj?dW`5ymvwV0?B@eaQGds~+Bx>@#Ev-v;# z@eS*b!Bq}ch~UG#gWX=0s@?SQuSK-^2pMDQ)6-!%7sPWk)48*M3nzCcCMJ$x@dp;p z!5_2gX!FQaz`*ngm_J3xi{ab?znL9o*ERT1hCb7BVN}gop*v@U&rHmtPy$6?hA z{0t+Nl^Ww8wJ-SG2x~7ZwhFE57E0dl7?L+fzdau7Kp<6&9^F+`@fQ;5xyhLfZo4eA z&8q)K=v-P^`hmgFuIoPK@qm-MS>lp49_>hFl_F%I-nCqt;Wg4_R=ujXr192Z!_d?X zlk>JV+f;Ffx^`5RfWL~k*vLhWAFMcv0|!f*L;-nofau02XG;* zA%E1e!3EmWcU@HpYYtpSSnC^q+~~o9lTMc!w)(4@=^SL^8`hLzK9GuhL*nGnVRK3Uk-BCKAZs-HucUw%WHvI+SlV}#|LeL?M8aE+f@Pffrm6zW^LIct|ui30zSSnqE9aViiJf86e9zho% zWRCTJp!D#3aA?n1F@81#{;18Fz6`N=a%$A8iGg=kzHl#>sA0-zYzk96GQuYscMet+ z1ITo*ONGw!i6<(7mOg*VuKLDyU7y#S7Z;Z45`GxDZvd8>Tecnr^1$TGq^jC0+K8VM zFVF|srOO?C5~R#5Q1Sl08pf>@+=DdEAgyI9cHdsh^&W10~U-P^Xm8A z-m2^0h<6#9zELL(!;b#HZ6K}Fe5OC{1IMWVlp>t>`;7_L!}!Oe)0fN=G4O!@$HKN8 z`$qV?PUVYUh!hNykL<0gw+7-_!nVP!PB5{>-rbhRO$4aEW=1OG2wL{}--Wsil{ z@srV6+_B)QUKfuFG@x0Viriv-xij1u@p-j-1D>ApZ%3$(uchi8K$3F&8YDWUFx#RK zRf*JvvV)kHXGNs&Ro+>bH6QMqKE1Vh9iq-YWBunuFhuQ+U%k2IwVAnGW>l^v((B}$ zgyo$U67k(xy{?Pms;JQ45wDN`wp44%HDrTOk52d!=W*q1dL9$I@idCi^8OO&Jnhya z4(8J-?q>rvC=I|PWp#D1%F)qr?0$;Fbp~qB;fd(Qx}L9;6uKM>LuS59nqQ)jUHaQ2 z1tfYPQcK&m<(aFtHP~TQSLN^ijAQ|zpU^*SGzGh!8!315uaC{X>u>?4MdDn{P4Tht zW{t~)2IGJ2W#=B;oi_g zDkWrsBXMEtiZ0?{*z0`M{N^m~gC1#p4a-O?2?t)ydUiaB4!W>UmIrpiZ z(X%N#m(!E6s+W$*qxqX+`FG{9l_yFxrH@V92KM?en|*7wjSz4n^Xy}*-(4D(dL!T3 zeTB345;e;23ztt!gCFa=%kxog;%~|{C!fTIrh#J^Eg=_3b&%EsR^?sF!28K5(GJg5wJ_I#gz_+Xdm zeGOaKjYB;4b2N*jFX5>>@_Z)eUD)Wi(aVV}ZBZ6be+3Oc(f1s3Ght`Rtd|^Z#5%8$Y|N0wh z_xt$cZ=Ym|n3XfkG1|0`8+d9SI{(2>vEF+gz8?<;N>tmPIcZOyeKhjV{q{PDNtRhD zTvOEf!apqBNZ>dRy#qZSbDBLPHTgMFE&u&A4Ww~thHFKY->@AV!^FiS3U<&xsbF}c z*;EaBE=}6AwrbiIQI(36XhGbT)w%?I{I0?-0V<4oC?~rB#HNS4D|m8MO1@hB<3|Kbt<>aW?O#!6Mya30+%zbpWa8^sUY^9@^#QNYCF>kUCnE{`BCC5cm<+Y zRXBDF{EkUhu669)Q|S8;&Amtfo54Tm*XVZ%kuR9Al;McMs?|bCb|^Ga^#SC0W2RLsD1zPVGBV-1pDMN;Lmgow&_DK zI^}DZm?J*+E=;d9EtKoxABLxNes)z5?Gz{$BYjr20`U2OHh=4YZSeGLX;R|q7m6zB zH6`SUY=SmW4KdNOJ$n5p-oo+|G5lc@4j>0Qh^C3rL;~j}T@D}9rjEYSE#54xyD;B8 zcxAaxXgM`|bV?5lEdc!HTv)H#>5IaOz)qcWGnnkD&wK&9aFsz+#tSsKXIr7v7l;P( zyn7t$9`9G9*Y#0Z=6;nYAV+|Dym10v>((B6|omo>`NAs2)3$R

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 zcmeHN2~<R zh`|8`A_PQ1nSu(UMFx?8j8PC!!VDphaL#`F42fd#7Vlc`zIE4n%Y~eiz4y1j|NDpi z?<@|pSJ-HM`qifhf@m%MamgwK83`XpBA<+azdF#2QsT{X@z0A9Bq>~TVErigKH1~P zRX-!h-f0NJ4Mh++{D}J+K>~~rq}d%o%+4dogzXp7RxX4C>Km5XEI|PAFDmo;DFm6G zzjVoB`@qW98Yl0Kvc-9w09^PrsobmG*Eju^=3f?0o-t$U)TL1B3;sZ^!++3&bGZ!o-*6w?;oOhf z=A+Qb$scV5!RbG+&2S}BQ6YH!FKb0``VVX~T$dzzeSZ$&9=X$3)_7Z{SspSYJ!lGE z7yig_41zpQ)%5dr4ff0rh$@ky3-JLRk&DK)NEIHecf9c*?Z1bUB4%pZjQ7hD!A0r-@NF(^WKdr(LXj|=UE7?gBYGgGQV zidf2`ZT@pzXf7}!NH4q(0IMcxsUGDih(0{kRSez&z?CFA0RVXsVFw3^u=^KMtt95q z43q$b*6#uQDLoiCAF_{RFc{!H^moH_cmll#Fc^KXi{9GDl{>%+3qyfOE5;Zq|6#Hb zp^#1G+z^AXfRKaa9HK;%b3Ux~U@q?xg<2DXP%6k!3E)PA<#4$ui8eDy5|9hA5&{?v z(-;*1%(1~-NTQ`Is1_MGdQ{+i*ccd96ab$R$T3=% zw_KuNF@vI!A>>Y_2pl9L{9h1-C6H8<)J4gKI6{WzGBi<@u3P6hNsXG=bRq5c+z;Gc3VUCe;LIIFDmQAGy+=mRyF++u=drBWV8-^>0yE9N&*05XHZpPlE zxu@?8(ZNy7rm?|<+UNe0Vs6&o?l`Pt>P&WaL~M&#Eh%`rg@Mbb)J&@DA-wheQ>hRV z<(XhigZAT z>=M;URcdCaiO3d^?H<^EiEMDV+7HsTiOhoaMX%P65E<(5xMPJKxf!0u>U~uVqnPN7T!X!o@_gs3Ct1 zlZ_$5QXP4{Aj645wG_SNT&6m|O6~Tsl$q?nK*)(`{J4b=(yb^nOATtF1_aS978$x3 zx>Q@s4i3~IT*+l{@dx~Hst21fR*+5}S1@cf>&8*uLw-0^zK(+OpW?cS-YG1QBZ5q! zgTAgivzoF#`cSz&HL>Ti!!v#?36I1*l^mkrx7Y|K6L#n!-~5=d3;K<;Zqi|gpNUn_ z_^GaQDEQ*jfzh;`j&KXb66fWEk1K7vxQIMQ_#Wu_%3 z4Oeb7FJ`8I>Px;^S?)}2+4D_83gHEq>8qSQY0PVP?o)zAv3K~;R$fnwTmI-=ZLK`= zTm+0h*e+Yfr(IlH3i7gUclNH^!MU>id$Jw>O?2i0Cila#v|twub21@e{S2v}8Z13( zNDrTXZVgris|qYm<0NU(tAPouG!QF4ZNpZPkX~{tVf8xY690JqY1NVdiTtW+NqyRP zZ&;T0ikb8V{wxmFhlLTQ&?OP7 z;(z*<+?J2~z*6asSe7h`$8~Se(@t(#%?BGLVs$p``;CyvcT?7Y!{tIPva$LxCQ&4W z6v#F*);|RXvI%qnoOY&i4S*EL&h%hP3O zLsrFZhv&Hu5tF$Lx!8(hs&?!Kx5&L(fdu}UI5d*wn~A`nPUhG&Rv z2#ixiJdhSF-K2tpVL=)5UkXRuPAFrEW}7mW=uAmtVQ&pGE-&az6@#-(Te^n*lrH^m@X-ftVcwO_#7{WI)5v(?>uC9GG{lcGXYJ~Q8q zbMFl7;t+kV;|;KkBW2!P_o%Czhw&Q(nXlxK9ak&6r5t_KH8#1Mr-*0}2h8R9XNkr zto5-b7P_auqTJb(TJlmJ9xreA=6d=d)CVbYP-r4$hDn5|TIhB>SReMfh&OVLkMk-T zYf%$taLF0OqYF?V{+6Xkn>iX@TuqQ?&cN6UjC9YF&%q{Ut3zv{U2)~$>-3;Dp)*(? zg*$mu8^i=-e#acaj*T$pNowo{xiGEk$%DusaQiS!KjJH96XZ-hXv+jk%ard#fu=@Q z$AM)YWvE^{%tDfK%nD49=PI|wYu}lYVbB#a7wtN^Nml@CE@{Gv7+jo{_V?I*jkdLD zJE|jfdrmVbkfS>rN*+`#l%ZUi5_bMS<>=MBDNlpiSb_tAF|Zy`K7kcp@|d?yaTmB^ zo?(vg;B$vxS|SszusORgDg-*Uitzdi{dUV+glA~R8V(?`3GZIl^egW{a919!j#>f` znL1o_^-b`}xnU0+~KIFLQ)$Q6#ym%)(GYC`^XM*{g zv3AM5$+TtDRs%`2TyR^$(hqE7Y1b&`Jd6dS6B#hDVbJlUXcG3y*439D8MrK!2D~6gn>UD4Imctb z+IvAt0iaW73Iq$K?4}H`7wq6YkTMm`tcktXgK0lKPmh=>h+l}Y+pDtvHnG>uqBA)l zAH6BV4F}v$(o$8Gfo*PB>IuaY1*^*`OTx4|hM8jZ?B6HY;F6p4{`OcZZ(us-RVwDx zUzJrCQlp@mz1ZFiSZ*$yX3c_#h9J;yBE$2g%xjmGF4ca z&yL`nGVs!Zxsh^j6i%$a*I3ZD2SoNT`{D%mU=LKaEwbN(_J5%i-6Va?@*>=3(dQy` zOv%$_9lcy9+(t>qohkuU4r_P=R^6ME+wFu&LA9tw9RA?azGhjrVJKy&8=*qZT5Dr8g--d+S8zAyJ$1HlW3Olryt`yE zFIph~Z6oF&o64rw{>lgZISC6p^CBer9C5G6yq%?8tC+)7*d+ib^?fU!JRFxynRLEZ zj;?PwtS}Ao#9whV@KEmwQgM0TVP{hs>dg(1*DiMUOKHdQGIqa0`yZnHk9mtbPfoLx zo;^V6pKUJ!5#n`w2D&381#5#_t}AlTGEgDz$^;u;-vxDN?^#5!zN9ngytY@oTv!nc zp1Xn8uR$1Z;7vY`-<*?DfPHB;x|GUi_fI9@I9SVRv1)qETbNU_8{5U|(>Du84qP#7 z*l9Y$SgA&wGbj>R1YeT9vYjZuC@|{rajTL0f%N@>3$DFU=`lSPl=Iv;EjuGjBa$Gw zHD-;%YOE@<-!7-Mn`0WuO3oWuL6tB2cpPw~Nvuj|KM@))ixuDK`9;jGMe2d)7gHin zS<>k@!x;!TJEc#HdL#RF(`|4W+H88d4V%zlh(7#{q2d0OQX9*FW^`^_<3r$kabWAB z$9BONo5}*(%kx zOXi-yM_cmB3>inPpI~)duvZykJ@^^aWzQ=eQ&STUa}2uT@lV&WoRzkUoE`rR0)`=l zFT%f|LA9fCw>`enm$p7W^E@U7RNBtsh{_-7vVz3DtB*y#*~(L9+x9*wn8VjWw|Q~q zKFsj1Yl>;}%MG3=PY`$g$_mnyhuV&~O~u~)968$0b2!Jkd;2MtAP#ZDYw9hmK_+M$ zb3pxyYC&|CuAbtiG8HZjj?MZJBFbt`ryf+c1dXFuC z0*ZQhBzNBd*}s6K_G}(|Z_9NDV162#y%WSNe|FTDDhx)K!c(mMJh@h87@8(^YdK$&d*^WQe8Z53 z(|@MRJ$Lk-&ii74MPIs80WsOFZ(NX23oR-?As+*aq6b?~62@fSVmM-_*cb1RzZ)`5$agEiL`-E9s7{GM2?(KNPgK1(+c*|-FKoy}X(D_b#etO|YR z(BGZ)0Ntfv-7R4GHoXp?l5g#*={S1{u-QzxCGng*oWr~@X-5f~RA14b8~B+pLKvr4 zfgL|7I>jlak9>D4=(i(cqYf7#318!OSR=^`xxvI!bBlS??`xxWeg?+|>MxaIdH1U~#1tHu zB{QMR?EGRmQ_l4p6YXJ{o(hh-7Tdm>TAX380TZZZyVkqHNzjUn*_|cb?T? zt;d2s-?B#Mc>T-gvBmQZx(y_cfkXZO~{N zT6rP7SD6g~n9QJ)8F*8uHxTLCAZ{l1Y&?6v)BOJZ)=R-pY=Y=&1}jE7fQ>USS}xP#exo57uND0i*rEk@$;nLvRB@u~s^dwRf?G?_enN@$t* zbL%JO=rV(3Ju8#GqUpeE3l_Wu1lN9Y{D4uaUe`g>zlj$1ER$6S6@{m1!~V|bYkhZA z%CvrDRTkHuajMU8;&RZ&itnC~iYLW4DVkP<$}>#&(`UO>!n)Po;Mt(SY8Yb`AS9lt znbX^i?Oe9r_o=?})IHKHoQGKXsps_SE{hwrg?6dMI|^+$CeC&z@*LuF+P`7LfZ*yr+KN8B4{Nzv<`A(wyR@!|gw{zB6Ha ziwPAYh)oJ(nlqSknu(8g9N&1hu0$vFK$W#mp%>X~AU1ay+EKWcFdif{% z#4!4aoVVJ;ULmkQf!ke2}3hqxLK>eq|-d7Ly7-J9zMpT`?dxo6HdfJA|t)?qPEVBDv z{y_b?4^|YA4%WW0VZd8C(ZgQzRI5(I^)=Ub`Y#MHc@nv0w-DaJAqsbEHDWG8Ia6ju zo-iyr*sq((gEwCC&^TYBWt4_@|81?=B-?#P6NMff(*^re zYqvDuO`K@`mjm_Jd;mW_tP`3$cS?R$jR1ZN09$YO%_iBqh5ftzSpMQQtxKFU=FYmP zeY^jph+g<4>YO;U^O>-NFLn~-RqlHvnZl2yd2A{Yc1G@Ga$d+Q&(f^tnPf+Z7serIU};17+2DU_f4Z z@GaPFut27d?!YiD+QP@)T=77cR9~MK@bd~pY%X(h%L={{OIb8IQmf-!xmZkm8A0Ga zQSWONI17_ru5wpHg3jI@i9D+_Y|pCqVuHJNdHUauTD=R$JcD2K_liQisqG$(sm=k9;L* z!L?*4B~ql7uioSX$zWJ?;q-SWXRFhz2Jt4%fOHA=Bwf|RzhwqdXGr78y$J)LR7&3T zE1WWz*>GPWKZ0%|@%6=fyx)5rzUpI;bCj>3RKzNG_1w$fIFCZ&UR0(7S?g}`&Pg$M zf`SLsz8wK82Vyj7;RyKmY{a8G{2BHG%w!^T|Njr!h9TO2LaP^_f22Q1=l$QiU84ao zHe_#{S6;qrC6w~7{y(hs-?-j?lbOfgH^E=XcSgnwW*eEz{_Z<_Px$?ny*JR5%f>l)FnDQ543{x%ZCiu33$Wg!pQFfT_}?5Q|_VSlIbLC`dpoMXL}9 zHfd9&47Mo(7D231gb+kjFxZHS4-m~7WurTH&doVX2KI5sU4v(sJ1@T9eCIKPjsqSr z)C01LsCxk=72-vXmX}CQD#BD;Cthymh&~=f$Q8nn0J<}ZrusBy4PvRNE}+1ceuj8u z0mW5k8fmgeLnTbWHGwfKA3@PdZxhn|PypR&^p?weGftrtCbjF#+zk_5BJh7;0`#Wr zgDpM_;Ax{jO##IrT`Oz;MvfwGfV$zD#c2xckpcXC6oou4ML~ezCc2EtnsQTB4tWNg z?4bkf;hG7IMfhgNI(FV5Gs4|*GyMTIY0$B=_*mso9Ityq$m^S>15>-?0(zQ<8Qy<_TjHE33(?_M8oaM zyc;NxzRVK@DL6RJnX%U^xW0Gpg(lXp(!uK1v0YgHjs^ZXSQ|m#lV7ip7{`C_J2TxPmfw%h$|%acrYHt)Re^PB%O&&=~a zhS(%I#+V>J-vjIib^<+s%ludY7y^C(P8nmqn9fp!i+?vr`bziDE=bx`%2W#Xyrj|i z!XQ4v1%L`m{7KT7q+LZNB^h8Ha2e=`Wp65^0;J00)_^G=au=8Yo;1b`CV&@#=jIBo zjN^JNVfYSs)+kDdGe7`1&8!?MQYKS?DuHZf3iogk_%#9E|5S zWeHrmAo>P;ejX7mwq#*}W25m^ZI+{(Z8fI?4jM_fffY0nok=+88^|*_DwcW>mR#e+ zX$F_KMdb6sRz!~7KkyN0G(3XQ+;z3X%PZ4gh;n-%62U<*VUKNv(D&Q->Na@Xb&u5Q3`3DGf+a8O5x7c#7+R+EAYl@R5us)CIw z7sT@_y~Ao@uL#&^LIh&QceqiT^+lb0YbFZt_SHOtWA%mgPEKVNvVgCsXy{5+zl*X8 zCJe)Q@y>wH^>l4;h1l^Y*9%-23TSmE>q5nI@?mt%n;Sj4Qq`Z+ib)a*a^cJc%E9^J zB;4s+K@rARbcBLT5P=@r;IVnBMKvT*)ew*R;&8vu%?Z&S>s?8?)3*YawM0P4!q$Kv zMmKh3lgE~&w&v%wVzH3Oe=jeNT=n@Y6J6TdHWTjXfX~-=1A1Bw`EW8rn}MqeI34nh zexFeA?&C3B2(E?0{drE@DA2pu(A#ElY&6el60Rn|Qpn-FkfQ8M93AfWIr)drgDFEU zghdWK)^71EWCP(@(=c4kfH1Y(4iugD4fve6;nSUpLT%!)MUHs1!zJYy4y||C+SwQ! z)KM&$7_tyM`sljP2fz6&Z;jxRn{Wup8IOUx8D4uh&(=O zx-7$a;U><*5L^!%xRlw)vAbh;sdlR||& ze}8_8%)c2Fwy=F&H|LM+p{pZB5DKTx>Y?F1N%BlZkXf!}JeGuMZk~LPi7{cidvUGB zAJ4LVeNV%XO>LTrklB#^-;8nb;}6l;1oW&WS=Mz*Az!4cqqQzbOSFq`$Q%PfD7srM zpKgP-D_0XPTRX*hAqeq0TDkJ;5HB1%$3Np)99#16c{ zJImlNL(npL!W|Gr_kxl1GVmF5&^$^YherS7+~q$p zt}{a=*RiD2Ikv6o=IM1kgc7zqpaZ;OB)P!1zz*i3{U()Dq#jG)egvK}@uFLa`oyWZ zf~=MV)|yJn`M^$N%ul5);JuQvaU1r2wt(}J_Qgyy`qWQI`hEeRX0uC@c1(dQ2}=U$ tNIIaX+dr)NRWXcxoR{>fqI{SF_dm1Ylv~=3YHI)h002ovPDHLkV1g(pWS;;4 diff --git a/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index f091b6b0bca859a3f474b03065bef75ba58a9e4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1588 zcmV-42Fv-0P)C1SqPt}wig>|5Crh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)y zRAZ>eDe#*r`yDAVgB_R*LB*MAc)8(b{g{9McCXW!lq7r(btRoB9!8B-#AI6JMb~YFBEvdsV)`mEQO^&#eRKx@b&x- z5lZm*!WfD8oCLzfHGz#u7sT0^VLMI1MqGxF^v+`4YYnVYgk*=kU?HsSz{v({E3lb9 z>+xILjBN)t6`=g~IBOelGQ(O990@BfXf(DRI5I$qN$0Gkz-FSc$3a+2fX$AedL4u{ z4V+5Ong(9LiGcIKW?_352sR;LtDPmPJXI{YtT=O8=76o9;*n%_m|xo!i>7$IrZ-{l z-x3`7M}qzHsPV@$v#>H-TpjDh2UE$9g6sysUREDy_R(a)>=eHw-WAyfIN z*qb!_hW>G)Tu8nSw9yn#3wFMiLcfc4pY0ek1}8(NqkBR@t4{~oC>ryc-h_ByH(Cg5 z>ao-}771+xE3um9lWAY1FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zm zZQj(aA_HeBY&OC^jj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5Kh zX*|AU4QE#~SgPzOXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&g3j|zDgC+}2Q_v%YfDax z!?umcN^n}KYQ|a$Lr+51Nf9dkkYFSjZZjkma$0KOj+;aQ&721~t7QUKx61J3(P4P1 zstI~7-wOACnWP4=8oGOwz%vNDqD8w&Q`qcNGGrbbf&0s9L0De{4{mRS?o0MU+nR_! zrvshUau0G^DeMhM_v{5BuLjb#Hh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG z;P%vktHcXwTj~+IE(~px)3*MY77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC z(zYC$g|@+I+kY;dg_dE>scBf&bP1Nc@Hz<3R)V`=AGkc;8CXqdi=B4l2k|g;2%#m& z*jfX^%b!A8#bI!j9-0Fi0bOXl(-c^AB9|nQaE`*)Hw+o&jS9@7&Gov#HbD~#d{twV zXd^Tr^mWLfFh$@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)y zI9C9*oUga6=hxw6QasLPnee@3^Rr*M{CdaL5=R41nLs(AHk_=Y+A9$2&H(B7!_pURs&8aNw7?`&Z&xY_Ye z)~D5Bog^td-^QbUtkTirdyK^mTHAOuptDflut!#^lnKqU md>ggs(5nOWAqO?umG&QVYK#ibz}*4>0000U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~cTNYR~@Y9KepMPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF4|Rt=2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ diff --git a/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index d0ef06e7edb86cdfe0d15b4b0d98334a86163658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1716 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 diff --git a/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index c8f9ed8f5cee1c98386d13b17e89f719e83555b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1895 zcmV-t2blPYP)FQtfgmafE#=YDCq`qUBt#QpG%*H6QHY765~R=q zZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1K4#~5?#|rh?sS)(-JQqX*}ciXJ56_H zdw=^s_srbAdqxlvGyrgGet#6T7_|j;95sL%MtM;q86vOxKM$f#puR)Bjv9Zvz9-di zXOTSsZkM83)E9PYBXC<$6(|>lNLVBb&&6y{NByFCp%6+^ALR@NCTse_wqvNmSWI-m z!$%KlHFH2omF!>#%1l3LTZg(s7eof$7*xB)ZQ0h?ejh?Ta9fDv59+u#MokW+1t8Zb zgHv%K(u9G^Lv`lh#f3<6!JVTL3(dCpxHbnbA;kKqQyd1~^Xe0VIaYBSWm6nsr;dFj z4;G-RyL?cYgsN1{L4ZFFNa;8)Rv0fM0C(~Tkit94 zz#~A)59?QjD&pAPSEQ)p8gP|DS{ng)j=2ux)_EzzJ773GmQ_Cic%3JJhC0t2cx>|v zJcVusIB!%F90{+}8hG3QU4KNeKmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u z7JyDj7`6d)qVp^R=%j>UIY6f+3`+qzIc!Y_=+uN^3BYV|o+$vGo-j-Wm<10%A=(Yk^beI{t%ld@yhKjq0iNjqN4XMGgQtbKubPM$JWBz}YA65k%dm*awtC^+f;a-x4+ddbH^7iDWGg&N0n#MW{kA|=8iMUiFYvMoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS z*ZdmT`g5-`BuJs`0LVhz+D9NNa3<=6m;cQLaF?tCv8)zcRSh66*Z|vXhG@$I%U~2l z?`Q zykI#*+rQ=z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRe zt3L_uNyQ*cE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=ky zx=~RKa4{iTm{_>_vSCm?$Ej=i6@=m%@VvAITnigVg{&@!7CDgs908761meDK5azA} z4?=NOH|PdvabgJ&fW2{Mo$Q0CcD8Qc84%{JPYt5EiG{MdLIAeX%T=D7NIP4%Hw}p9 zg)==!2Lbp#j{u_}hMiao9=!VSyx0gHbeCS`;q&vzeq|fs`y&^X-lso(Ls@-706qmA z7u*T5PMo_w3{se1t2`zWeO^hOvTsohG_;>J0wVqVe+n)AbQCx)yh9;w+J6?NF5Lmo zecS@ieAKL8%bVd@+-KT{yI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^ zEkL$}tsQt5>QA^;QgjgIfBDmcOgi5YDyu?t6vSnbp=1+@6D& z5MJ}B8q;bRlVoxasyhcUF1+)o`&3r0colr}QJ3hcSdLu;9;td>kf@Tcn<@9sIx&=m z;AD;SCh95=&p;$r{Xz3iWCO^MX83AGJ(yH&eTXgv|0=34#-&WAmw{)U7OU9!Wz^!7 zZ%jZFi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i h0WYBP*#0Ks^FNSabJA*5${_#%002ovPDHLkV1oKhTl@e3 diff --git a/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index a6d6b8609df07bf62e5100a53a01510388bd2b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ diff --git a/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index a6d6b8609df07bf62e5100a53a01510388bd2b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ diff --git a/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3831 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 diff --git a/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1888 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 iW8Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725b..00000000 --- a/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -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. \ No newline at end of file diff --git a/scoped_model/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/scoped_model/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/scoped_model/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/scoped_model/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/scoped_model/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/scoped_model/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/scoped_model/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/scoped_model/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 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 diff --git a/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 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 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC 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 delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 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 delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 3831 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 diff --git a/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 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 literal 0 HcmV?d00001 diff --git a/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/scoped_model/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 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 iW8_KLJ^8S) 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/simple_bloc_flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/simple_bloc_flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/simple_bloc_flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/simple_bloc_flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/simple_bloc_flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/simple_bloc_flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/simple_bloc_flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/simple_bloc_flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 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 diff --git a/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 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 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC 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 delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 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 delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 3831 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 diff --git a/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 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 literal 0 HcmV?d00001 diff --git a/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/simple_bloc_flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 zcmV+%4&(8OP)6$jw%VRuvdN2+38CZWny1cRtlsl+0_KtW)EU14Ei(F!UtWuj4IK+3{sK@>rh zs1Z;=(DD&U6+tlyL?UnHVN^&g6QhFi2#HS+*qz;(>63G(`|jRtW|nz$Pv7qTovP!^ zP_jES{mr@O-02w%!^a?^1ZP!_KmQiz0L~jZ=W@Qt`8wzOoclQsAS<5YdH;a(4bGLE zk8s}1If(PSIgVi!XE!5kA?~z*sobvNyohr;=Q_@h2@$6Flyej3J)D-6YfheRGl`HEcPk|~huT_2-U?PfL=4BPV)f1o!%rQ!NMt_MYw-5bUSwQ9Z&zC>u zOrl~UJglJNa%f50Ok}?WB{on`Ci`p^Y!xBA?m@rcJXLxtrE0FhRF3d*ir>yzO|BD$ z3V}HpFcCh6bTzY}Nt_(W%QYd3NG)jJ4<`F<1Od) zfQblTdC&h2lCz`>y?>|9o2CdvC8qZeIZt%jN;B7Hdn2l*k4M4MFEtq`q_#5?}c$b$pf_3y{Y!cRDafZBEj-*OD|gz#PBDeu3QoueOesLzB+O zxjf2wvf6Wwz>@AiOo2mO4=TkAV+g~%_n&R;)l#!cBxjuoD$aS-`IIJv7cdX%2{WT7 zOm%5rs(wqyPE^k5SIpUZ!&Lq4<~%{*>_Hu$2|~Xa;iX*tz8~G6O3uFOS?+)tWtdi| zV2b#;zRN!m@H&jd=!$7YY6_}|=!IU@=SjvGDFtL;aCtw06U;-v^0%k0FOyESt z1Wv$={b_H&8FiRV?MrzoHWd>%v6KTRU;-v^Miiz+@q`(BoT!+<37CKhoKb)|8!+RG z6BQFU^@fRW;s8!mOf2QViKQGk0TVER6EG1`#;Nm39Do^PoT!+<37AD!%oJe86(=et zZ~|sLzU>V-qYiU6V8$0GmU7_K8|Fd0B?+9Un1BhKAz#V~Fk^`mJtlCX#{^8^M8!me z8Yg;8-~>!e<-iG;h*0B1kBKm}hItVGY6WnjVpgnTTAC$rqQ^v)4KvOtpY|sIj@WYg zyw##ZZ5AC2IKNC;^hwg9BPk0wLStlmBr;E|$5GoAo$&Ui_;S9WY62n3)i49|T%C#i017z3J=$RF|KyZWnci*@lW4 z=AKhNN6+m`Q!V3Ye68|8y@%=am>YD0nG99M)NWc20%)gwO!96j7muR}Fr&54SxKP2 zP30S~lt=a*qDlbu3+Av57=9v&vr<6g0&`!8E2fq>I|EJGKs}t|{h7+KT@)LfIV-3K zK)r_fr2?}FFyn*MYoLC>oV-J~eavL2ho4a4^r{E-8m2hi>~hA?_vIG4a*KT;2eyl1 zh_hUvUJpNCFwBvRq5BI*srSle>c6%n`#VNsyC|MGa{(P&08p=C9+WUw9Hl<1o9T4M zdD=_C0F7#o8A_bRR?sFNmU0R6tW`ElnF8p53IdHo#S9(JoZCz}fHwJ6F<&?qrpVqE zte|m%89JQD+XwaPU#%#lVs-@-OL);|MdfINd6!XwP2h(eyafTUsoRkA%&@fe?9m@jw-v(yTTiV2(*fthQH9}SqmsRPVnwwbV$1E(_lkmo&S zF-truCU914_$jpqjr(>Ha4HkM4YMT>m~NosUu&UZ>zirfHo%N6PPs9^_o$WqPA0#5 z%tG>qFCL+b*0s?sZ;Sht0nE7Kl>OVXy=gjWxxK;OJ3yGd7-pZf7JYNcZo2*1SF`u6 zHJyRRxGw9mDlOiXqVMsNe#WX`fC`vrtjSQ%KmLcl(lC>ZOQzG^%iql2w-f_K@r?OE zwCICifM#L-HJyc7Gm>Ern?+Sk3&|Khmu4(~3qa$(m6Ub^U0E5RHq49za|XklN#?kP zl;EstdW?(_4D>kwjWy2f!LM)y?F94kyU3`W!6+AyId-89v}sXJpuic^NLL7GJItl~ zsiuB98AI-(#Mnm|=A-R6&2fwJ0JVSY#Q>&3$zFh|@;#%0qeF=j5Ajq@4i0tIIW z&}sk$&fGwoJpe&u-JeGLi^r?dO`m=y(QO{@h zQqAC7$rvz&5+mo3IqE?h=a~6m>%r5Quapvzq;{y~p zJpyXOBgD9VrW7@#p6l7O?o3feml(DtSL>D^R) zZUY%T2b0-vBAFN7VB;M88!~HuOXi4KcI6aRQ&h|XQ0A?m%j2=l1f0cGP}h(oVfJ`N zz#PpmFC*ieab)zJK<4?^k=g%OjPnkANzbAbmGZHoVRk*mTfm75s_cWVa`l*f$B@xu z5E*?&@seIo#*Y~1rBm!7sF9~~u6Wrj5oICUOuz}CS)jdNIznfzCA(stJ(7$c^e5wN z?lt>eYgbA!kvAR7zYSD&*r1$b|(@;9dcZ^67R0 zXAXJKa|5Sdmj!g578Nwt6d$sXuc&MWezA0Whd`94$h{{?1IwXP4)Tx4obDK%xoFZ_Z zjjHJ_P@R_e5blG@yEjnaJb`l;s%Lb2&=8$&Ct-fV`E^4CUs)=jTk!I}2d&n!f@)bm z@ z_4Dc86+3l2*p|~;o-Sb~oXb_RuLmoifDU^&Te$*FevycC0*nE3Xws8gsWp|Rj2>SM zns)qcYj?^2sd8?N!_w~4v+f-HCF|a$TNZDoNl$I1Uq87euoNgKb6&r26TNrfkUa@o zfdiFA@p{K&mH3b8i!lcoz)V{n8Q@g(vR4ns4r6w;K z>1~ecQR0-<^J|Ndg5fvVUM9g;lbu-){#ghGw(fg>L zh)T5Ljb%lWE;V9L!;Cqk>AV1(rULYF07ZBJbGb9qbSoLAd;in9{)95YqX$J43-dY7YU*k~vrM25 zxh5_IqO0LYZW%oxQ5HOzmk4x{atE*vipUk}sh88$b2tn?!ujEHn`tQLe&vo}nMb&{ zio`xzZ&GG6&ZyN3jnaQy#iVqXE9VT(3tWY$n-)uWDQ|tc{`?fq2F`oQ{;d3aWPg4Hp-(iE{ry>MIPWL> iW8_KLJ^8S) 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/vanilla/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/vanilla/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..a3f285f9e5f45e0961f6e7c2d46032087e550a7f 100644 GIT binary patch delta 1337 zcmV-91;+ZI1i=cB8Gi-<0033(vqt~`1qew*K~#7F?b!p69Z47m@P0VkwryLnGyP)Q zwvF}1m_6IJeX*0e^>)uXPNv_!p3;7Mx~q@wEg*1JNCDuEFfT zBp4cq=D}r@iwzP84b*~(8x3x!N)R+q3#;H>%IzEpfCg%rX+Ldnu~Ra54HU3~O$;W4 zWZ)Vo!0pbIi+_ERL2IA@7ekLTU=2jMm@OHo2BH8yg9lB?AT>}wfRiW}AIb-*2s!8_Z`J0aSdqWHt5tUJPJ$^55SD*-LM#Ayh~gM5 zI93e|;(v$~nj@|!nDPL^@XVKDClh&;0pT@Z!zs}(mw#$cx6Or1C=+W{;<($^-M&N~)j(Kg z%1P0$mguR_B3oQ%Fp;G8%n@_(saugixRNqYjClFZ;^7qB<=#V-ZY#^4N-&iG2$8n= zBg{t%?W?TN6O@VVN^zJNOfZ!Q2y2gjwpr^qUpgC5CibfA$lWg+1XKBdu*{$@GU15s zn15OY?F=qLDm(Ik6>Ls0l^6(Xzk}43I58|S(7_2STsgb3Bd;<*SWm4;S)us6*-BXm z&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPVl>vKRDRAbbSa^O_8bTCW^)_TebGBDOM_!4LJQHKVGiU;M z`i_QkC&fUm)rH|mR?-G{CGAz;kt^PAqog=97lWtIDDZR{2p3O|D-@z|Bxfb17k>-s zRY^x)d65omtJdA&ikWkvRw;3?>a4Szm9$5FN3QnqZ;m_ysBKTUE^0C2l(}lJ7EaMD0dvJT5Gwx-Bfnu>hsjH zr1h$RURawEc7FdGq^jqse-g_bsejfQ7JmGnqcs+5gzGGzYG zmM4}c6^*nequ}Wk8L}5$8tM5p8TLc#k}o1PICyZcItFKT`mS1QvQ8s9crs5qg!J61 vw0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjfmpO2S literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/vanilla/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/vanilla/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 100644 GIT binary patch delta 916 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 diff --git a/vanilla/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/vanilla/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..deafae2dafc27e64687f0680900a2bc1d4338762 100644 GIT binary patch literal 2950 zcmV;13wiX3P)YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/vanilla/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/vanilla/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..d5614ac831d924f5e49e16a3d4391be8964fcdf3 100644 GIT binary patch literal 4067 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 diff --git a/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..d22f10b2 100644 --- a/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,12 +107,6 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" } ], "info" : { diff --git a/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 a0{1_&;gnn2jcRKE0000Z*FU!m{%*@P8 zVRsLNIdO-bn8LBcq}8jNvvE!9=H589S!qj+abC^^ zSdhKga?WIIGls$$He>gBa^U>>j=Xd*C;)=x4~_c6B@OMjoU3owf(*c9OvWx)d%xxZ zlr(hSBApBh2!9sYaMlj%aKf6Hj4chAjDtD(dH4IynSX!=1q4;n*!2x>L#Gy#v6F!P zXHCXr4B+06p%aI?AEcW>3HC4Ljqy|Gn!58Q>vIONAe*rh*2D!l{5lrc=ibj-aA9`L zBQq~A9Sus#n$q3>;F9A|($tN~IOKUu#s?V}<|5xC9e)j`aC_>LB~3kfHXVm^n2dek z0qzH$oT^x_?|Y=9bXDhLJ*6ehJz9_j48R%&aGWO>zYZbx|Egz9zn)$=@_o`(mA3R= zZP0>zi9LET89U*u?>w@&Fo&LpJ$TRG2dDJT-o9>`T|V-D>8i?NeKGF=vZ)V~v6nF! z2k`%x&wtuYBT2o#zpv%fYznjAHBY*l!u|2mSf4hSMNGyg$1xwm-`9dY9-PW*J`_Ic z{nAyH#QK&>FZOFo43jar5Bt!M3$uIOIUl>vb9b5X3#kSD-cQS%Eqv6xMPD}S7EB5SJD41qFCzKF?#n2bFxVKR2E z%USH0CmDNGzCEZrmh$v-7G|d3{i^J(LG2+MF&Q5q8Iy4soae*c|Ebov9?GrL&0TnY zh5dd=;UNhglCkhMcEB3utnWN>`1{CTXdls2Yn${ssxY&BQ8MuS+rt)e=z_8rd*?8- zuzw53eUh=a=NnyPI=i_|r+~t_fcaAR9kcj9;+Tvb$RO;7HTVAD^&j<4=;iGl`h+RW z3}+wds=VNF9>cp>kTvYL|1u`yK)470awwtKcK7HKy0Bj#Q1YOwJmezmAsIVi&9R?c z#Js;;PU`JF${wTeLe6(SsH<8>^!WoMV}C(5)X2XQ9B9QJvImnf88Z)C$OZS_Fp<@J z-cJ>aD4e(VF|Y6r?p7>13mdMkYti40bvf1zZKGI_HS9YNvlk2ZP0#C-d>%_JGS7ot zaIa#~(vA=F^>xkqg_mB^KWXV;-(f*a#_oBtCU)+BHnVi1vM*$oWlkWG;*$gX227ciKa z_|rX8dLX}1blF`~_UegQ<_E&Pwtw(ZP#ECq`j{@aLnhf9nlJVy^u+pB(Pg*y_Vu5~ zG9m7o#0OBgYtonN>)nNgo9dc%CI93O=3p`=f1`g|r#H8YE-OD7`Q=F3G2eARE+{Nt zly^^A$YBb@9d9)18hZ&d#BP2xoYITiyG55>+1b@UH8T$1iw`m;V=#S`cYhcX*mA+- z>+55_W#Qh}>ve7Cxa{}k=OY=ty1Q3&+4=1q{oSFYSI|S=h{@QAoK@vL)4IGTVUUgZ zFb5Te2VZ?df3|asSr%shd16j)?d=y`Ho3X2zdo2`?vd}sZl+D)UU`(83bPibFg*Io zYx;{Fqq^{d>k{+!|ER@&b zHgv?iq1=}8kT+pL*07f`Br(|(?w11|6&TFgaSOll$}2jVOzLzxt$)|o*NZ9}TVB^S z11Y)RfF1N<-j4nIC>dBe;2{~qZ!dO)F8jg@FX&V%1x1y9ZDCDUN(sv10C;;)A5}S! z)_zo&&EmhbwEC8O`st_jLk~TqpM3I3ie6EAZEY=7*{A37@3|k7aoF{g#$;tTvvCj~ zX8hM!8zsS(y!F;w^?$<;KTJVC0!!bY%^lpA5tDIYb{AwHwvZ2dDEq|_WHA|A{t|1q zMd7;ZuG0@Z@IYW$SY2JcqNx1t#?7e}d6?XV$=J;hCS$=pPe}+%mEkX!I&4|_*Z9E) zAC!M(LzRVmKCk)gn6m$xSq^_cCgbp!!o#z=>Hx`@>{|b`DS!RiYp+q_*yM6Ky}7rq z|1iD8Tqjl7iL7NY84FSndzh@M;&T!#k}=tDeJq_Vx^Om|l|R=#a=wM^`wwIedzg$l zi$M`Wad}?jh+#5w{L-0BM&B4u_}np%-LO`~d&x=$RA2U}!es2T9*Ku9%|F?{4Ne8m zhd3_G?sa-#pMQC#@W{ea^~i!2pdrtD9LlUynmpCIM2m$7@lbXC>kD_0kMfqyME*p2MP&eAic?APO2%{*p@ zy^kFBJoxRGuBv)srL<;zSsTnEh9&Go_F~R`%2@vOPME@99GPdPi-H-HTgD#a*!@0o z*!j{`eJiCu85v*6*Nm^|<0FGHc%^I21+1~Z+GI?|u6fls#C|dckdD$-3aiLO?jLqx z!e9+KY=4n8?AmYUU@{IMc@lr;?CI8P3{f2lUPY2LCCGw-`v-Y9Q1sH6BV(qknF29IVh00000 LNkvXXu0mjfrrZDz delta 1572 zcmV+<2HW|{6SNGFBYy?^Nklc)UfJ<2uenUn3ARN>mf|M z+(eagCX~wv_9N9Br6dE4W@{R1X8yU75JVAXqB_2?1W&7xoYHg zkR5NEVWsUG^?wLzRHH9Aa#eCDK9NvdPE(De9-HaQc(6~^lpTe2pm3&x9G1K5Xawdi z4F*DRWI%>vgEBPFqaRR51|&E>B!fiay027YsK+Vrn=1PqDKdi{m<&P1nQ3_Gw<%cH zHU+slT8moWCbIKH=(W3t1j5BNfsIKQ#Mzi(J59kx zT!xVJ&SKqb4XjdxWQV7$IrZ-{l-x3`7M}qzHsPzP1S_$c=96h(q%b9ZXPvcV z;D5oPsau6Q(U`-YLD*G41z_cgz)a99av0W_U=aHAj?mj@2KZI50efIA zO8^kn_?FjaZ_hfbhSh@3^GzxJx*P{Jc7Hi*OHPZ!wvEV2a9XKq###zPPeRs75i0(W zU?doBGb9yqT58~qn?wQ4oCi3oWdc^W%JAgTVR)*l33@Ky3ip4Rqz14Wx_gwsGYGq) zMY~B;*z8j>WF8xV`^#!USYHDVZf}I{OZGzBnutHA1D(}!4{};5>;)mO27l7F zHh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG;P%vktHcXwTj~+IE(~px)3*MY z77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC(zYC$g|@+I+kY;dg_dE>scBf& zbP1Nc@Hz<3R)V`=AGkc;8CXqdi+`PV3Vc;#lxQO~AoO*}pfE+=*r3ffZ_YMC zflq>i%a-`Xw)YRuK;MUtq{SGa7vtY^gg0bKSp&F>y|A>h5qhqSvgdtV{(lh0c$xz5 z;*U?KQl%W)htLmD=yhL!@aldLHW(=H00^&qu7J0mA5v0IaX@pn_bKobsC(e>(nAjI zzjyto3Dmc!oOxjlw&JZqeL%+vsN0Zy8@1@rs~rRNAqO?umG&QV WYK#ibz}*4>0000KGlrR&nVFfHIf5{m znHd*mnar>-*)df5W>l@#yqP??rK5ATRa4jQ9xo~H82hxeecUK*A2Z9^$Efu0F@ldx zhy1={+`zr^?%5LId{<9QoK?{=@pxJ1gjLotK}>n4vJGdLcYk2TxU!yc7x&SlN-Mf% z9xv~jk_RV=?M9hqfL*rDBwJ-RK##zyk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9b zo*4oaY^HaX4KQPKX1mifOV2JxVH>$y**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pD zhlfKvo$yeq-$NftsdCVR0k%!mAe&iI z2H35U{xh?MJ}y=Jn8TuKXqgnlY!B29v!o2_hgWE5bC2|Ap;Udp1j|ynSUqARGur{r ze9BH*#sf6Bo7ekPsq?<59`#erm<=-fIGi_WP%vkr!+*8Zxi4zQgH$~h0EGN(=K$47 z^Y6|%oAYI}5lWgx@_IA7dAS=Pn;DS-r_4Zz>!;)iGI~h_2*Du6qqqy%` zIJ%vqX8Ri*S&9QwVFgNm`Q;aS=kG3Rnl$toVV8Z!N|Lhs2cCu9n^~&E{-nLHe=BOI zBUCpX1%HIhrQqYgI;m9_<9D4$f*CRo4?PQiUEd?V%ht1~n~9NPHpZoj&;M+vvnPU7 zI}^p6UWlyI!O@Xt;kTI`zK3s=^(^Y=62#Qa##O1#*MIy)7fuD~z2r6>c@*OJ4^!Lr zow+#R4C`5z&L>HSOPz#cF|sVnwGjXLYw<0rvwv^ET823%U|G75qK3sZp!&rWJ=s65 zm(dSD{6NuYlv1e_WipwQimk&VdM37|zGri0>xhP>3@MgvKRGagLi+U6Pbm_Kpb)6y zVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZnrpk2E=``&W3Un6=<$j~wccVd>v2Tk; z-+wwa`ZoY^hCv{eaV^Dv`%)n3*asWRoZ0%WXbx_gO@U2vK`w1lFr7K6@CknkGqt1k z*^bO}l%h{G8{46#;1>N4vUpV$-Wy13vu!qKwimK=+Yn8m-A|iCJ9H{06KT37u!c-c zhATXS9q??MTEe@ZigRMwl9q7RY7XyFbANc3*sf?hphcPUF57G0LZ85EjpZM2iRP#! zk|nmC**47)WjnJy_Br#sHI{u`@VlDmtky*S@wQmOYKi6KFc0ttux&WQdRB8b;62&EQ_{YSZ)|B}v?&>}N0zG=}5)j!Z Rb0sYywyRT@!HH?E|j zMhb#%s#4upT=)UH*V?AKa$!XfDp{yYMM4EjBZ*)|sUM-0QcIzVVEUzzCX>V@GwETqrXGsdu zA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnb zRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yIC*%Wgg22K|8E#!~c zTNYR~@Y9Kep?_ava@M;M8kmViU%_&qKVn19EJb6L%o<5ryPpl%8u^fhsfT?9!(e|z zYg7{msk{Fg=+Yccm!Y>{*q;KO>K8^PXf0r1U?zrb1;c^{Splu&<;=9>z4K+dat5se?oWZUF&sQo;?$JL1+gmMrdqaw4-)Uy6fE`VS`NRWHPm9hb$Oljeq3qzfzL34WA)&3E*EQj_ z#)s*NZh!yi@GmiUwp(6LfzxI2{CJ7UMd-?TP+;I{8J_M5c&a;WSjjcpVCBWnFDBgE zY1z>1fzN(l;@ioDEiIOtTMPkWDu!pahV1DHm#V&=)a||1#W682UO8Ff#AHHe&ajZc zxl(1kEaPYZ6hwubN6i<8QHgsu0oE)iJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+& zK7ZsKxz;@6=dLht@F-X3N(9#6>iA+L6@m3xzycB{LJO~c@)K`<_zg5y-Q>ju`fuOJ z$ZNaU+|lB5Y}R-@XC#dRJIOdB32iJUA<4bXt Z%s>0@A=V4gM}zoW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW literal 1716 zcmds$`#;kQ7{|XelZftyR5~xW7?MLxS4^|Hw3&P7^y)@A9Fj{Xm1~_CIV^XZ%SLBn zA;!r`GqGHg=7>xrB{?psZQs88ZaedDoagm^KF{a*>G|dJWRSe^I$DNW008I^+;Kjt z>9p3GNR^I;v>5_`+91i(*G;u5|L+Bu6M=(afLjtkya#yZ175|z$pU~>2#^Z_pCZ7o z1c6UNcv2B3?; zX%qdxCXQpdKRz=#b*q0P%b&o)5ZrNZt7$fiETSK_VaY=mb4GK`#~0K#~9^ zcY!`#Af+4h?UMR-gMKOmpuYeN5P*RKF!(tb`)oe0j2BH1l?=>y#S5pMqkx6i{*=V9JF%>N8`ewGhRE(|WohnD59R^$_36{4>S zDFlPC5|k?;SPsDo87!B{6*7eqmMdU|QZ84>6)Kd9wNfh90=y=TFQay-0__>=<4pk& zYDjgIhL-jQ9o>z32K)BgAH+HxamL{ZL~ozu)Qqe@a`FpH=oQRA8=L-m-1dam(Ix2V z?du;LdMO+ooBelr^_y4{|44tmgH^2hSzPFd;U^!1p>6d|o)(-01z{i&Kj@)z-yfWQ)V#3Uo!_U}q3u`(fOs`_f^ueFii1xBNUB z6MecwJN$CqV&vhc+)b(p4NzGGEgwWNs z@*lUV6LaduZH)4_g!cE<2G6#+hJrWd5(|p1Z;YJ7ifVHv+n49btR}dq?HHDjl{m$T z!jLZcGkb&XS2OG~u%&R$(X+Z`CWec%QKt>NGYvd5g20)PU(dOn^7%@6kQb}C(%=vr z{?RP(z~C9DPnL{q^@pVw@|Vx~@3v!9dCaBtbh2EdtoNHm4kGxp>i#ct)7p|$QJs+U z-a3qtcPvhihub?wnJqEt>zC@)2suY?%-96cYCm$Q8R%-8$PZYsx3~QOLMDf(piXMm zB=<63yQk1AdOz#-qsEDX>>c)EES%$owHKue;?B3)8aRd}m~_)>SL3h2(9X;|+2#7X z+#2)NpD%qJvCQ0a-uzZLmz*ms+l*N}w)3LRQ*6>|Ub-fyptY(keUxw+)jfwF5K{L9 z|Cl_w=`!l_o><384d&?)$6Nh(GAm=4p_;{qVn#hI8lqewW7~wUlyBM-4Z|)cZr?Rh z=xZ&Ol>4(CU85ea(CZ^aO@2N18K>ftl8>2MqetAR53_JA>Fal`^)1Y--Am~UDa4th zKfCYpcXky$XSFDWBMIl(q=Mxj$iMBX=|eM-ZTF#Iu^~aV=HLuxJUHhR;)%U74Ro7H+I)AV6nd+LnWBHl$ z_iRKpibs=q`uttg_rd3t_aSi}ncMli?D2H?eCVOeq8%e&%w+Q=2Z-{?Uaw z?1o_|Z&_538tQw!F1=9C2i#Y~^L+X`Z_B>2x9smQX-RodLajOS^o5%BXdxkf98Kl| zy1^^q;Zxra>krC%px>AMB?mp^fNdEix>FV;Q#%*EPu77&zWARwGt6ptno7`FSg zp?K6M{Ji9GvF2IH$6++o!p0;f4zhF!qDo72*qrvs!g!hNi=Pkbf=1cVxl9$5(V8Dgj z_G-BhU8ae`CNw3S4ZaVTP~Vs7y@35CFUieed@usvW9t}RE~2qVp&pHq8d^LI|Bmmq zy1b40%cn+tB_5+BxjwT~#Q6H@zUOVsi^xoF) zmwsNEpR<4H8?);KOSsD`Dfj2C=4!L~Mr)%Q9tzh`L29T*D~d;Tg6`{eW4tHT6_z4b;LibqpX{C*qi`;_zP`|NZ*Za#QSj(WHu``>I^Htr{4BJkQWQWI6q z;{)ob5*CE_2T;#f+-|o`Q?rs^(QrfeH(PJEM@A5j3R|2$JTy3*=Wc+|d0^Y}zBXqG^^BZlQwIP^}-zSrp%f77tUvEB%-)>HeE*yKQcM ziR@B^8@j)t5YvGsK}~6f*ZWBgEq)%4Lcn>Y{@#W@`(SC=hWwb4a0B-@slya*cc2m5 zQ2Z@aLtj4peSBEIk2eq6>6O)xTnRULe-jrwBgCVnz+JsxC+hpKegWrYK~(rs$FN;k zT?@^XaD(?Z+wR1R3gS^g4x-`V!IShyf!^ACI^XNg+m$tb*Hu!uq5Dg?U3RN1NXTl~ zLKo_LwGJS?PylKu0CS?g*ZSjsJ5b=avriIk@cxG361j^CvIq*Yq_(UchSDGJ-A8?| z*Zmpk^Gfc45?64z!TXzdq3#I0w!G9(&ntBu(@|ONS{nUA- zS4B;at>?G1nTET{tf}`m{3MC(HE4{S{aN)DyXQ`4VzY4c_wcBP8ur1uKHJG}XR{Ai z-XMom`v|50&o|_qrvCj(l}s;=a>(=ucymR8CV?5Yd)$Nhz%J;7|R z?Nf_VL-B+w{N?mn`^G!%)Qdwet$zu8v^{61R#wXr?DE>W{btWt$@53y?x^dJz-x!4 zM!4{|Q>X1)Z?~ojVh4&xOXLe(qjr9Ett`Px-_LjD|6~7Rs;Y{Qx$cXO`VgFF%|qTd*Coi}sKN zTYP`iLqBhJHVlc05Rc+fNE0r6_wp^dqxF|TP&NF@#vxntc)o1G*1O)7O+&@^4}x$T z<#IaYY}#<)Czo#6T{5J+<0$|&R5;W!V%ujI%NFd7$vL~XDQtf<4JJN3EXWs7JQ}eh zFkJZ6g{yWC;W@Pa;?cLX=Ir47QrUt%_h82EmYo9kME}=9+1*rvx z3x7C&*;X_RNDrWAq`rT5$EY1&S}9ww|13PV>>av4>U*tjFfk)29>tdwE_J^eT@zf0kh~eQJ3Qrs^f8g_`x?X=E`^~}ocBxFion3Lk zet+nJx@XA#;MeqU4ESJ&)k`X=;!@B#ay!cOPWBn(9kq7kjA zAhqnmJ#*%a&E;}-Y;4TV&CO*V?BvR-{YX!NeG;J-vOgMmR5@>AGb%^{#iJnMW)f^Z zpSPo z%{<_d#TEOu&hg|h+C0Sv?jM5TfkawS{8*$v2nhJdkt6o6fBmbis;aU_j~-Qng_)U| zl7sD;U$$@P9CLxh>_WlYf!#v)N9m0UauyX#RD^ca_sPTl;OZR-Pv!XWBF1ZJAxN2Rp`PUY5s;`d$quWPcy6pNStFkHBk}sd4`MdcgKC zfBB33^{; zLk*Zu?azMpGyCmte_Q_^n^C}5rsnNl=IKCVb~%qm9tCzSb$?LaH#E~9D_;NpwYz?} z(f8Lce({U;+_`fERWegkQ);j$AI&jC2m$+r)d5V%Fnc;DEQ&|J=LP(YZ+ydEx^#(v z$`bHj?$6pi%q8Gc&I=jruhtDeDNga>zIVOGzWnmb_Qs7H1d|z)larQzTJ*=lO!4K! zcNS0~s-c|AWPhM08igwtyY5HeMU&X$sm7J|P68=M!15eR)-M4S-zHdh-92o~YK0ajONhu;F~Sr|gYp&W3RDJiZrIkU>#@kt_o)6bkm)j)9F~;L&6VvS_&3?=P6W z-4B-?R**($5fUHAQ-4$MLz|zNc%oo`(LP|c`S$iaLls#`p2z`;=w>ys7AU)Tlr92oE^}X7EFY5b% z_dx5P#r~3`#_wj0-c}t%saDQQN=7_@x z2D3lsKD~o8>y?Av;XxFSW`YcY;?ZOVJ;jI5oBDicKgo|ztza;M8}wOOPFqH5Xyj2m zni6_x{qf=Nhrh?(PqP2M!P#dW1~3u(N9=!94$an84$W9WE}*_w>!|WLWYe$6eFz9& z?xMl_yWHMt?W-IHFktqNF1*@3FcDvzwP<;P85EBu;?Ec`Z|42>4bM(UZVuyvfrx{- z`Pa#X%Hg@_vS10ef>P%tD~v@$C0z5`h8~6_peL(!~!M}`5t^AxA1J`$ozWZvZ#W39zTNO(L}=E zADKsepWKggY0kSm4&>&Z<$J6KMo`(GTYhT)$ovrrSsv4dFGeMbM>AnV7y@2-FZ8_Z zFF8ma4pR(FN+jfkKkm;j4DZV=L=U5Qv}j$xE8&B>ESjo605yGHdhgFI49nhxnifnj zhewxQyDz`^p#%Aas{Q%J>ixOJMmI#>=`zEDvMgRSW5VB)xn+LYL-vuqWIx%{VM^h@ Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! delta 1906 zcmV-&2aWjR9e@vzBYy`+Nkl^fDmF(5(5$|?Cx}D zKEJa&XZP%OyE`*GvvYQ4PV&!g2|L^Q?YG}tx;sY@GzV#^0C$Z`m}blr)&(OPMHT6T@%AxHOWYGG zm>@=0?<)?0r0XK9>leRXyD^j4O4bXT!@LESVI<~>`yB+S2b_f__vvyMHkwGyyXedq3usx&X*}E{O;}+nJ#G_xm zJbQX5 zuFrVK*|x9RQeZ1J@1v9MX;>n34(i>=YE@Iur`0Vah(inE3VUFZNqf~ ztSz{1fz3Fsn_x4F>o(Yo;kpqvBe-sbwH(*Yuz!}~S^-;|MX;9Py1im8!}VY-!u4P+ z!nLEvx?+Rogo+Kw9OBXy&lGIvJ51_7Hl6Q>*MAJa!lMDGGML530`Te&0ciU({DC7` z;RKg{uC>($*mdXnVQQBjiVyqYC7mf!Z%e-Q!?Oo{ufu`G3CAC=UjiTpU<94UTFz2KEDuNS@KKkg)K8!v1L8RUP$_! z({LG$Dy&JLEVpiNVe^G(HCbA*SpsX?292)#=JVQDUMp-cOJPl`+yTHTD!AOit-zAD zptXYa!q%OVLa^mo25b7^Z>kE`3rqgr-G4i;Lw<+P(8khESW8aaBmxfY`WS#6j<92Q z-++&Y z$gbH4#2sT0cU0SdFs=*W*4hKGpuR1QGacHFy;`# zR&NJkbTNp}Ee5f08HmLzK%D(q3@lH;Tzx$?VT;&xJq-KyHV__o3dD)?KrE<6*iXV0 z8;6<{IKw@dyDwJ90H5^3h;|9?twz{UGr|>1Pzhdn6W(r0ifeZd=JI+AAz<~yL(QJk zAWW))+=`8mGj|J!70oF@d4B;WxB=jBM1bWWRBb&1!ie3BUzOdm}yC-xA%SY``k$rbfk;CHqifhU*jfGM@DkYCec zD9&E@F9*za0?~OQZiDE|Cf;;0 z`uZ%H=IeGyG^H0ruev{yIVARgwZUG)j7>F#3~dh+8DOtPByR=(VDhz2enf#EjcXCI z=NUPYr4@S)GhX!?s(0Eh(nGe!y$#$r1B$||I~`wPhUuCQEo;#Xb$EXk=6HgBBRd#c ziK|jN$e~{zV~|;*E@Ij-Z(+tI^B8RW51ptE!nMnPyZ`_I07*qoM6N<$f?!CDR{#J2 diff --git a/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967d9697cd4b83225558af2911e9571c9b..7f2230a978c8a2f82d02bf6ca32497c15669e48f 100644 GIT binary patch delta 1566 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 a0{1_&;gnn2jcRKE0000}00b^74z_|aGC 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 delta 2657 zcmV-n3ZC_+E9n%FBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf{azY+ diff --git a/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609df07bf62e5100a53a01510388bd2b22..45537513df37c45e8074c7c131c61cec2eac66ec 100644 GIT binary patch literal 5868 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 delta 2657 zcmV-n3ZC`sE$I}HBYz4oNkloFh3q0M zFesq&64WThn3$;G69TfjsAv=f2G9}pgSx99+!YO}2Uveik)GA5ewEg1Va|1@=x;Pyj3t}zC)T-c zzoz+u9TyK|)jteh(` z;D6}gLagCR0hn*76kN#wCv*`b8GyswI1s7kNaT!{fEXv;5ofK|nu3vU_1cRKLBd@TQ@Ei6F6QJ?HM!O!+{x(L<6rNAv)=55QOzlPWhqI{ zjSR5c$#aW1xy}c;$06La(Y*xlX>0w3EDGGn02k}7*%ZplRLFsw%E3MJO@BuPkU#Ja zcbp(_BL!RxGHHe;wff^+2G>u>ah(dq7O)#K0ekx={yBF*$P%aJSOMmjHHmAxvW0cp zt8@K;ETVH`1(=8Ie(Z;Hy+9V#xv>Mxz*+%0w;aeKJ2#eqVJL7nrpksp7|5bKS2)0a zId?FSYb0>4P=MLsl6(J^Q-5;@54jg=+fq2sO~Hz-hVXEO0L<$0j+BKdGX;Npqt{os zJmk~Y_Q1L83|RfW)5G^!;(u>i7{EI*HIqAp9`Cbzna*hHhI2Lm9I{{?%y{Hgdzxli z7Fd?00Ed;L$qk&zI`y$@{Dn;5j(iW`=!aXNV*G=kjb8%Qi`UtJMSq7ZT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah-w13P)xT`>~eFoJC!>{2X zL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw>F+gN+i+VD?gMXwcIhn8 zrz`>e>J^TI3E-MW>VM=sWZual)ns9B%8_$25BcpOz+KP;+J(1(UiAp*Q=dc!FQL}*R43bTaVm7wy#IrC-VD&k-4FWYMd;wg6!1z8a3SP;O>P#-$->_l zEAM2>hI~v3$Y(TlIdJE^0@|6AK_7#uc{~E1^f2gGJ^}i)rGJ>FDPRt4F~}m-WGQZK zw?8N6;NJH#XeW;Webf!0kG=!+v2#G5xX^L14Y#o*Tz9&z7NjOib92f(6aq==Ntoo74a!u6w~r!$mq|FDi7h6+6fTa4$$0Y>@Y*O}J#< z8ic&ucAQ^e_cw)#3uFTLcly|p7IMmPAXha6205mSA%EQja0eR?DV=N%;eS$2zHI*MpiObUuA|j7`m5?j`@^G6SO!-;(G1aCOu{sGli$ zGck~Eqx{gt?U$`9P3JRJO>}Ku- zRew#6AKb$jGi@lro`A;#P%m@cnyJP&(r%f}Zq^V3mIc=hnLfVXHRn=pj;2#4v8WiM zav|%So5|ksmkM-bV7H;F_%f>b72G`eFJ!d@wTC-#ALO^GRCtHl=K|Y}dX%fTm0A$N zzc4;N3AGsYM~OOND&T_#%8wZzWYfL@by`|620=mAU7(LZ-At!cdlWCvu@AK#bt~#< z9;~k^d5}}7VXmK@h?&@_rUHYJ9zD=M%4AFQ`}k8OC$9ssPq=LnkwKG P00000NkvXXu0mjf-f$Yh diff --git a/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..6360ea17a408801185f000acaded313519da49b4 100644 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! 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 K)eG-g1^+*MxH5nM literal 3831 zcmVjJBgitF5mAp-i>4+KS_oR{|13AP->1TD4=w)g|)JHOx|a2Wk1Va z!k)vP$UcQ#mdj%wNQoaJ!w>jv_6&JPyutpQps?s5dmDQ>`%?Bvj>o<%kYG!YW6H-z zu`g$@mp`;qDR!51QaS}|ZToSuAGcJ7$2HF0z`ln4t!#Yg46>;vGG9N9{V@9z#}6v* zfP?}r6b{*-C*)(S>NECI_E~{QYzN5SXRmVnP<=gzP+_Sp(Aza_hKlZ{C1D&l*(7IKXxQC1Z9#6wx}YrGcn~g%;icdw>T0Rf^w0{ z$_wn1J+C0@!jCV<%Go5LA45e{5gY9PvZp8uM$=1}XDI+9m7!A95L>q>>oe0$nC->i zeexUIvq%Uk<-$>DiDb?!In)lAmtuMWxvWlk`2>4lNuhSsjAf2*2tjT`y;@d}($o)S zn(+W&hJ1p0xy@oxP%AM15->wPLp{H!k)BdBD$toBpJh+crWdsNV)qsHaqLg2_s|Ih z`8E9z{E3sA!}5aKu?T!#enD(wLw?IT?k-yWVHZ8Akz4k5(TZJN^zZgm&zM28sfTD2BYJ|Fde3Xzh;;S` z=GXTnY4Xc)8nYoz6&vF;P7{xRF-{|2Xs5>a5)@BrnQ}I(_x7Cgpx#5&Td^4Q9_FnQ zX5so*;#8-J8#c$OlA&JyPp$LKUhC~-e~Ij!L%uSMu!-VZG7Hx-L{m2DVR2i=GR(_% zCVD!4N`I)&Q5S`?P&fQZ=4#Dgt_v2-DzkT}K(9gF0L(owe-Id$Rc2qZVLqI_M_DyO z9@LC#U28_LU{;wGZ&))}0R2P4MhajKCd^K#D+JJ&JIXZ_p#@+7J9A&P<0kdRujtQ_ zOy>3=C$kgi6$0pW06KaLz!21oOryKM3ZUOWqppndxfH}QpgjEJ`j7Tzn5bk6K&@RA?vl##y z$?V~1E(!wB5rH`>3nc&@)|#<1dN2cMzzm=PGhQ|Yppne(C-Vlt450IXc`J4R0W@I7 zd1e5uW6juvO%ni(WX7BsKx3MLngO7rHO;^R5I~0^nE^9^E_eYLgiR9&KnJ)pBbfno zSVnW$0R+&6jOOsZ82}nJ126+c|%svPo;TeUku<2G7%?$oft zyaO;tVo}(W)VsTUhq^XmFi#2z%-W9a{7mXn{uzivYQ_d6b7VJG{77naW(vHt-uhnY zVN#d!JTqVh(7r-lhtXVU6o})aZbDt_;&wJVGl2FKYFBFpU-#9U)z#(A%=IVnqytR$SY-sO( z($oNE09{D^@OuYPz&w~?9>Fl5`g9u&ecFGhqX=^#fmR=we0CJw+5xna*@oHnkahk+ z9aWeE3v|An+O5%?4fA&$Fgu~H_YmqR!yIU!bFCk4!#pAj%(lI(A5n)n@Id#M)O9Yx zJU9oKy{sRAIV3=5>(s8n{8ryJ!;ho}%pn6hZKTKbqk=&m=f*UnK$zW3YQP*)pw$O* zIfLA^!-bmBl6%d_n$#tP8Zd_(XdA*z*WH|E_yILwjtI~;jK#v-6jMl^?<%Y%`gvpwv&cFb$||^v4D&V=aNy?NGo620jL3VZnA%s zH~I|qPzB~e(;p;b^gJr7Ure#7?8%F0m4vzzPy^^(q4q1OdthF}Fi*RmVZN1OwTsAP zn9CZP`FazX3^kG(KodIZ=Kty8DLTy--UKfa1$6XugS zk%6v$Kmxt6U!YMx0JQ)0qX*{CXwZZk$vEROidEc7=J-1;peNat!vS<3P-FT5po>iE z!l3R+<`#x|+_hw!HjQGV=8!q|76y8L7N8gP3$%0kfush|u0uU^?dKBaeRSBUpOZ0c z62;D&Mdn2}N}xHRFTRI?zRv=>=AjHgH}`2k4WK=#AHB)UFrR-J87GgX*x5fL^W2#d z=(%K8-oZfMO=i{aWRDg=FX}UubM4eotRDcn;OR#{3q=*?3mE3_oJ-~prjhxh%PgQT zyn)Qozaq0@o&|LEgS{Ind4Swsr;b`u185hZPOBLL<`d2%^Yp1?oL)=jnLi;Zo0ZDliTtQ^b5SmfIMe{T==zZkbvn$KTQGlbG8w}s@M3TZnde;1Am46P3juKb zl9GU&3F=q`>j!`?SyH#r@O59%@aMX^rx}Nxe<>NqpUp5=lX1ojGDIR*-D^SDuvCKF z?3$xG(gVUsBERef_YjPFl^rU9EtD{pt z0CXwpN7BN3!8>hajGaTVk-wl=9rxmfWtIhC{mheHgStLi^+Nz12a?4r(fz)?3A%at zMlvQmL<2-R)-@G1wJ0^zQK%mR=r4d{Y3fHp){nWXUL#|CqXl(+v+qDh>FkF9`eWrW zfr^D%LNfOcTNvtx0JXR35J0~Jpi2#P3Q&80w+nqNfc}&G0A~*)lGHKv=^FE+b(37|)zL;KLF>oiGfb(?&1 zV3XRu!Sw>@quKiab%g6jun#oZ%!>V#A%+lNc?q>6+VvyAn=kf_6z^(TZUa4Eelh{{ zqFX-#dY(EV@7l$NE&kv9u9BR8&Ojd#ZGJ6l8_BW}^r?DIS_rU2(XaGOK z225E@kH5Opf+CgD^{y29jD4gHbGf{1MD6ggQ&%>UG4WyPh5q_tb`{@_34B?xfSO*| zZv8!)q;^o-bz`MuxXk*G^}(6)ACb@=Lfs`Hxoh>`Y0NE8QRQ!*p|SH@{r8=%RKd4p z+#Ty^-0kb=-H-O`nAA3_6>2z(D=~Tbs(n8LHxD0`R0_ATFqp-SdY3(bZ3;VUM?J=O zKCNsxsgt@|&nKMC=*+ZqmLHhX1KHbAJs{nGVMs6~TiF%Q)P@>!koa$%oS zjXa=!5>P`vC-a}ln!uH1ooeI&v?=?v7?1n~P(wZ~0>xWxd_Aw;+}9#eULM7M8&E?Y zC-ZLhi3RoM92SXUb-5i-Lmt5_rfjE{6y^+24`y$1lywLyHO!)Boa7438K4#iLe?rh z2O~YGSgFUBH?og*6=r9rme=peP~ah`(8Zt7V)j5!V0KPFf_mebo3z95U8(up$-+EA^9dTRLq>Yl)YMBuch9%=e5B`Vnb>o zt03=kq;k2TgGe4|lGne&zJa~h(UGutjP_zr?a7~#b)@15XNA>Dj(m=gg2Q5V4-$)D|Q9}R#002ovPDHLkV1o7DH3k3x diff --git a/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b 100644 GIT binary patch delta 3388 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 Sf%%sJ0000x~L`~4d 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 delta 3291 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 literal 0 HcmV?d00001 diff --git a/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/vanilla/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f58536026aebc4f1f70e481f6993c9ff088d..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f 100644 GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 3612 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 iW8_KLJ^8S) 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 From 6a3c30a8b4009aec74447d2f96f09c64af1facd0 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 03:53:09 +0100 Subject: [PATCH 39/77] Fix formatting --- bloc_flutter/lib/main_firebase.dart | 14 ++++++-------- mobx/lib/main.dart | 14 +++++++------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/bloc_flutter/lib/main_firebase.dart b/bloc_flutter/lib/main_firebase.dart index 8bc05b4e..a78bef69 100644 --- a/bloc_flutter/lib/main_firebase.dart +++ b/bloc_flutter/lib/main_firebase.dart @@ -13,12 +13,10 @@ import 'package:flutter/widgets.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); - runApp( - BlocApp( - todosInteractor: TodosInteractor( - FirestoreReactiveTodosRepository(Firestore.instance), - ), - userRepository: FirebaseUserRepository(FirebaseAuth.instance), - ) - ); + runApp(BlocApp( + todosInteractor: TodosInteractor( + FirestoreReactiveTodosRepository(Firestore.instance), + ), + userRepository: FirebaseUserRepository(FirebaseAuth.instance), + )); } diff --git a/mobx/lib/main.dart b/mobx/lib/main.dart index 0b9475db..936ea5ca 100644 --- a/mobx/lib/main.dart +++ b/mobx/lib/main.dart @@ -9,13 +9,13 @@ Future main() async { WidgetsFlutterBinding.ensureInitialized(); runApp( - MobxApp( - repository: LocalStorageRepository( - localStorage: LocalStorage( - 'mobx_todos', - FlutterKeyValueStore(await SharedPreferences.getInstance()), - ), + MobxApp( + repository: LocalStorageRepository( + localStorage: LocalStorage( + 'mobx_todos', + FlutterKeyValueStore(await SharedPreferences.getInstance()), ), ), - ); + ), + ); } From c6191ac524a0ac0dc729fa8d733992df4fd637f5 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 13:41:28 +0100 Subject: [PATCH 40/77] Fix redux, rename/refactor repository and add tests --- bloc_flutter/lib/main.dart | 6 +- bloc_flutter/lib/main_web.dart | 6 +- bloc_flutter/pubspec.yaml | 4 +- bloc_library/lib/blocs/todos/todos_bloc.dart | 1 - bloc_library/lib/main.dart | 4 +- bloc_library/lib/main_web.dart | 4 +- bloc_library/pubspec.yaml | 4 +- .../test/blocs/filtered_todos_bloc_test.dart | 4 +- bloc_library/test/blocs/todos_bloc_test.dart | 6 +- change_notifier_provider/lib/main.dart | 4 +- change_notifier_provider/lib/main_web.dart | 4 +- change_notifier_provider/pubspec.yaml | 4 +- .../ios/Runner.xcodeproj/project.pbxproj | 66 ++++++++++++++++++ firestore_redux/pubspec.yaml | 4 +- .../test_driver/mock_reactive_repository.dart | 2 +- frideos_library/lib/app_state.dart | 8 +-- frideos_library/pubspec.yaml | 4 +- .../ios/Runner.xcodeproj/project.pbxproj | 66 ++++++++++++++++++ .../contents.xcworkspacedata | 3 + inherited_widget/lib/main.dart | 4 +- inherited_widget/lib/main_web.dart | 4 +- inherited_widget/pubspec.yaml | 4 +- mobx/lib/main.dart | 4 +- mobx/lib/main_web.dart | 4 +- mobx/pubspec.yaml | 4 +- mvc/lib/src/todo_list_model.dart | 6 +- mvc/pubspec.yaml | 4 +- mvi_flutter/lib/main.dart | 6 +- mvi_flutter/lib/main_web.dart | 6 +- mvi_flutter/pubspec.yaml | 4 +- mvu/lib/common/repository_commands.dart | 6 +- mvu/pubspec.yaml | 4 +- redux/.metadata | 4 +- redux/ios/Podfile.lock | 34 +++++++++ redux/ios/Runner.xcodeproj/project.pbxproj | 66 ++++++++++++++++++ .../contents.xcworkspacedata | 3 + .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin .../Icon-App-83.5x83.5@1x.png | Bin .../Icon-App-83.5x83.5@2x.png | Bin .../Icon-App-83.5x83.5@3x.png | Bin .../LaunchImage.imageset/Contents.json | 23 ++++++ .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 ++ redux/lib/main.dart | 4 +- redux/lib/main_web.dart | 4 +- redux/pubspec.yaml | 4 +- scoped_model/lib/main.dart | 6 +- scoped_model/pubspec.yaml | 4 +- scripts/line_counter.dart | 3 +- simple_bloc_flutter/lib/main.dart | 6 +- simple_bloc_flutter/lib/main_web.dart | 6 +- simple_bloc_flutter/pubspec.yaml | 4 +- .../.gitignore | 0 .../README.md | 0 .../lib/src/file_storage.dart | 4 +- .../lib/src/key_value_storage.dart | 15 ++-- .../lib/src/reactive_repository.dart | 4 +- .../lib/src/repository.dart | 21 +++--- .../lib/src/web_client.dart | 8 ++- .../lib/todos_repository_local_storage.dart | 5 +- .../pubspec.yaml | 2 +- .../test/all_tests.dart | 0 .../test/file_storage_test.dart | 2 +- .../test/key_value_storage_test.dart | 33 +++++++++ .../test/reactive_repository_test.dart | 12 ++-- .../test/repository_test.dart | 34 ++++----- .../ios/Runner/GeneratedPluginRegistrant.h | 17 ----- .../lib/src/local_storage_repository.dart | 51 -------------- vanilla/lib/main.dart | 4 +- vanilla/lib/main_web.dart | 4 +- vanilla/pubspec.yaml | 4 +- 88 files changed, 450 insertions(+), 210 deletions(-) create mode 100644 redux/ios/Podfile.lock rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Contents.json (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-20x20@1x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-20x20@2x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-20x20@3x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-29x29@1x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-29x29@2x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-29x29@3x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-40x40@1x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-40x40@2x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-40x40@3x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-60x60@1x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-60x60@2x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-60x60@3x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-76x76@1x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-76x76@2x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-76x76@3x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png (100%) rename redux/ios/Runner/{ => Assets.xcassets}/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png (100%) create mode 100644 redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md rename {todos_repository_simple => todos_repository_local_storage}/.gitignore (100%) rename {todos_repository_simple => todos_repository_local_storage}/README.md (100%) rename {todos_repository_simple => todos_repository_local_storage}/lib/src/file_storage.dart (95%) rename todos_repository_simple/lib/src/local_storage.dart => todos_repository_local_storage/lib/src/key_value_storage.dart (64%) rename {todos_repository_simple => todos_repository_local_storage}/lib/src/reactive_repository.dart (95%) rename todos_repository_simple/lib/src/flutter_repository.dart => todos_repository_local_storage/lib/src/repository.dart (69%) rename {todos_repository_simple => todos_repository_local_storage}/lib/src/web_client.dart (91%) rename todos_repository_simple/lib/todos_repository_simple.dart => todos_repository_local_storage/lib/todos_repository_local_storage.dart (73%) rename {todos_repository_simple => todos_repository_local_storage}/pubspec.yaml (89%) rename {todos_repository_simple => todos_repository_local_storage}/test/all_tests.dart (100%) rename {todos_repository_simple => todos_repository_local_storage}/test/file_storage_test.dart (92%) create mode 100644 todos_repository_local_storage/test/key_value_storage_test.dart rename {todos_repository_simple => todos_repository_local_storage}/test/reactive_repository_test.dart (89%) rename {todos_repository_simple => todos_repository_local_storage}/test/repository_test.dart (78%) delete mode 100644 todos_repository_simple/ios/Runner/GeneratedPluginRegistrant.h delete mode 100644 todos_repository_simple/lib/src/local_storage_repository.dart diff --git a/bloc_flutter/lib/main.dart b/bloc_flutter/lib/main.dart index 47582ef1..29c83666 100644 --- a/bloc_flutter/lib/main.dart +++ b/bloc_flutter/lib/main.dart @@ -10,16 +10,16 @@ import 'package:flutter/widgets.dart'; import 'package:key_value_store_flutter/key_value_store_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); runApp(BlocApp( todosInteractor: TodosInteractor( - ReactiveTodosRepositoryFlutter( + ReactiveLocalStorageRepository( repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'bloc_todos', FlutterKeyValueStore(await SharedPreferences.getInstance()), ), diff --git a/bloc_flutter/lib/main_web.dart b/bloc_flutter/lib/main_web.dart index a249c2e6..fb868ff1 100644 --- a/bloc_flutter/lib/main_web.dart +++ b/bloc_flutter/lib/main_web.dart @@ -10,16 +10,16 @@ import 'package:blocs/blocs.dart'; import 'package:flutter/widgets.dart'; import 'package:key_value_store_web/key_value_store_web.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); runApp(BlocApp( todosInteractor: TodosInteractor( - ReactiveTodosRepositoryFlutter( + ReactiveLocalStorageRepository( repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'bloc_todos', WebKeyValueStore(window.localStorage), ), diff --git a/bloc_flutter/pubspec.yaml b/bloc_flutter/pubspec.yaml index 5324b264..559b2d60 100644 --- a/bloc_flutter/pubspec.yaml +++ b/bloc_flutter/pubspec.yaml @@ -19,8 +19,8 @@ environment: dependencies: flutter: sdk: flutter - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage firebase_flutter_repository: path: ../firebase_flutter_repository todos_app_core: diff --git a/bloc_library/lib/blocs/todos/todos_bloc.dart b/bloc_library/lib/blocs/todos/todos_bloc.dart index 82f8b9c0..ea1222a8 100644 --- a/bloc_library/lib/blocs/todos/todos_bloc.dart +++ b/bloc_library/lib/blocs/todos/todos_bloc.dart @@ -9,7 +9,6 @@ import 'package:meta/meta.dart'; import 'package:bloc_library/blocs/todos/todos.dart'; import 'package:bloc_library/models/models.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; class TodosBloc extends Bloc { final TodosRepository todosRepository; diff --git a/bloc_library/lib/main.dart b/bloc_library/lib/main.dart index eaaca15c..4ba559f3 100644 --- a/bloc_library/lib/main.dart +++ b/bloc_library/lib/main.dart @@ -2,13 +2,13 @@ import 'package:bloc_library/run_app.dart'; import 'package:flutter/cupertino.dart'; import 'package:key_value_store_flutter/key_value_store_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); runBlocLibraryApp(LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'bloc_library', FlutterKeyValueStore(await SharedPreferences.getInstance()), ), diff --git a/bloc_library/lib/main_web.dart b/bloc_library/lib/main_web.dart index 57c83e9f..8d500a2d 100644 --- a/bloc_library/lib/main_web.dart +++ b/bloc_library/lib/main_web.dart @@ -3,13 +3,13 @@ import 'dart:html'; import 'package:bloc_library/run_app.dart'; import 'package:flutter/cupertino.dart'; import 'package:key_value_store_web/key_value_store_web.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); runBlocLibraryApp(LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'bloc_library', WebKeyValueStore(window.localStorage), ), diff --git a/bloc_library/pubspec.yaml b/bloc_library/pubspec.yaml index 12f9176b..878d0848 100644 --- a/bloc_library/pubspec.yaml +++ b/bloc_library/pubspec.yaml @@ -21,8 +21,8 @@ dependencies: sdk: flutter todos_app_core: path: ../todos_app_core - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage todos_repository_core: path: ../todos_repository_core meta: ">=1.1.0 <2.0.0" diff --git a/bloc_library/test/blocs/filtered_todos_bloc_test.dart b/bloc_library/test/blocs/filtered_todos_bloc_test.dart index c71e8fc0..42f44d78 100644 --- a/bloc_library/test/blocs/filtered_todos_bloc_test.dart +++ b/bloc_library/test/blocs/filtered_todos_bloc_test.dart @@ -8,12 +8,12 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; import 'package:bloc_library/blocs/blocs.dart'; import 'package:bloc_library/models/models.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; class MockTodosBloc extends MockBloc implements TodosBloc {} -class MockTodosRepository extends Mock implements TodosRepositoryFlutter {} +class MockTodosRepository extends Mock implements LocalStorageRepository {} void main() { group('FilteredTodosBloc', () { diff --git a/bloc_library/test/blocs/todos_bloc_test.dart b/bloc_library/test/blocs/todos_bloc_test.dart index 6408c18a..fb9beaf4 100644 --- a/bloc_library/test/blocs/todos_bloc_test.dart +++ b/bloc_library/test/blocs/todos_bloc_test.dart @@ -7,13 +7,13 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; import 'package:bloc_library/blocs/todos/todos.dart'; import 'package:bloc_library/models/models.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; -class MockTodosRepository extends Mock implements TodosRepositoryFlutter {} +class MockTodosRepository extends Mock implements LocalStorageRepository {} void main() { group('TodosBloc', () { - TodosRepositoryFlutter todosRepository; + LocalStorageRepository todosRepository; TodosBloc todosBloc; setUp(() { diff --git a/change_notifier_provider/lib/main.dart b/change_notifier_provider/lib/main.dart index ce40de67..3a202521 100644 --- a/change_notifier_provider/lib/main.dart +++ b/change_notifier_provider/lib/main.dart @@ -6,12 +6,12 @@ import 'package:change_notifier_provider_sample/app.dart'; import 'package:flutter/material.dart'; import 'package:key_value_store_flutter/key_value_store_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; Future main() async { runApp(ProviderApp( repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'change_notifier_provider_todos', FlutterKeyValueStore(await SharedPreferences.getInstance()), ), diff --git a/change_notifier_provider/lib/main_web.dart b/change_notifier_provider/lib/main_web.dart index e4acc6e2..5ee85c93 100644 --- a/change_notifier_provider/lib/main_web.dart +++ b/change_notifier_provider/lib/main_web.dart @@ -7,12 +7,12 @@ import 'dart:html'; import 'package:change_notifier_provider_sample/app.dart'; import 'package:flutter/material.dart'; import 'package:key_value_store_web/key_value_store_web.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; Future main() async { runApp(ProviderApp( repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'change_notifier_provider', WebKeyValueStore(window.localStorage), ), diff --git a/change_notifier_provider/pubspec.yaml b/change_notifier_provider/pubspec.yaml index 63323d7a..5050d8be 100644 --- a/change_notifier_provider/pubspec.yaml +++ b/change_notifier_provider/pubspec.yaml @@ -18,8 +18,8 @@ environment: dependencies: provider: ^4.0.1 - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage todos_app_core: path: ../todos_app_core flutter: diff --git a/firestore_redux/ios/Runner.xcodeproj/project.pbxproj b/firestore_redux/ios/Runner.xcodeproj/project.pbxproj index 5de2da40..7eaece8c 100644 --- a/firestore_redux/ios/Runner.xcodeproj/project.pbxproj +++ b/firestore_redux/ios/Runner.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 3DC6C12F0C8DFDEB46BBFD03 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9BD3573C89AFE68E3A21F6 /* Pods_Runner.framework */; }; 4EEE3E9123C493B90065A5A2 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 4EEE3E9023C493B80065A5A2 /* GoogleService-Info.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; @@ -38,12 +39,15 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 32DF067C14C43DCE0F4AD703 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 3A9BD3573C89AFE68E3A21F6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 4EEE3E9023C493B80065A5A2 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 8C698F6ECF0154F865792E58 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; @@ -52,6 +56,7 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9E51BC1BAB575DF40A23CCE8 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -61,12 +66,32 @@ files = ( 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, + 3DC6C12F0C8DFDEB46BBFD03 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 14C49F13D6D71163E2B1EDBD /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3A9BD3573C89AFE68E3A21F6 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 6535F9FC413878FBAB23E085 /* Pods */ = { + isa = PBXGroup; + children = ( + 8C698F6ECF0154F865792E58 /* Pods-Runner.debug.xcconfig */, + 32DF067C14C43DCE0F4AD703 /* Pods-Runner.release.xcconfig */, + 9E51BC1BAB575DF40A23CCE8 /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -86,6 +111,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + 6535F9FC413878FBAB23E085 /* Pods */, + 14C49F13D6D71163E2B1EDBD /* Frameworks */, ); sourceTree = ""; }; @@ -128,12 +155,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + DA25481C73BA8ED396688A6A /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 733B60DD2D2D2F65ABD9C4F3 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -207,6 +236,21 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; }; + 733B60DD2D2D2F65ABD9C4F3 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -221,6 +265,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + DA25481C73BA8ED396688A6A /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ diff --git a/firestore_redux/pubspec.yaml b/firestore_redux/pubspec.yaml index f71ec4a2..6d15d4fb 100644 --- a/firestore_redux/pubspec.yaml +++ b/firestore_redux/pubspec.yaml @@ -36,8 +36,8 @@ dev_dependencies: mockito: integration_tests: path: ../integration_tests - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/firestore_redux/test_driver/mock_reactive_repository.dart b/firestore_redux/test_driver/mock_reactive_repository.dart index ba8f538f..7da09f11 100644 --- a/firestore_redux/test_driver/mock_reactive_repository.dart +++ b/firestore_redux/test_driver/mock_reactive_repository.dart @@ -5,7 +5,7 @@ import 'dart:async'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; class MockUserRepository implements UserRepository { @override diff --git a/frideos_library/lib/app_state.dart b/frideos_library/lib/app_state.dart index 9484416c..0c91154b 100644 --- a/frideos_library/lib/app_state.dart +++ b/frideos_library/lib/app_state.dart @@ -1,6 +1,6 @@ import 'package:path_provider/path_provider.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; import 'package:frideos/frideos.dart'; @@ -17,15 +17,15 @@ class AppState extends AppStateModel { return _singletonAppState; } - TodosRepositoryFlutter respository; + LocalStorageRepository respository; TodosBloc todosBloc; StatsBloc statsBloc; final tabController = StreamedValue(initialData: AppTab.todos); @override void init() { - respository = const TodosRepositoryFlutter( - fileStorage: FileStorage( + respository = const LocalStorageRepository( + localStorage: FileStorage( 'frideos_library', getApplicationDocumentsDirectory, ), diff --git a/frideos_library/pubspec.yaml b/frideos_library/pubspec.yaml index 631e0bb1..1a4a6a51 100644 --- a/frideos_library/pubspec.yaml +++ b/frideos_library/pubspec.yaml @@ -22,8 +22,8 @@ dependencies: frideos: ^1.0.0+1 todos_app_core: path: ../todos_app_core - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage dev_dependencies: flutter_test: diff --git a/inherited_widget/ios/Runner.xcodeproj/project.pbxproj b/inherited_widget/ios/Runner.xcodeproj/project.pbxproj index 96d032d4..c1b070d9 100644 --- a/inherited_widget/ios/Runner.xcodeproj/project.pbxproj +++ b/inherited_widget/ios/Runner.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3348E430D7129BB18BC78B4B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE925AD22BC8A868F53BE025 /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -37,8 +38,11 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 1E69637449B29CC0AB13D272 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; + 4A35D354374ABDAA8E56C08A /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 722B0CDB9A6F3DED6856BA0F /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -50,6 +54,7 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + DE925AD22BC8A868F53BE025 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -59,12 +64,24 @@ files = ( 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, + 3348E430D7129BB18BC78B4B /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 66C4DAC000F715814BBD3787 /* Pods */ = { + isa = PBXGroup; + children = ( + 4A35D354374ABDAA8E56C08A /* Pods-Runner.debug.xcconfig */, + 1E69637449B29CC0AB13D272 /* Pods-Runner.release.xcconfig */, + 722B0CDB9A6F3DED6856BA0F /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -84,6 +101,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + 66C4DAC000F715814BBD3787 /* Pods */, + F4E297C3C4563E091C160C6A /* Frameworks */, ); sourceTree = ""; }; @@ -118,6 +137,14 @@ name = "Supporting Files"; sourceTree = ""; }; + F4E297C3C4563E091C160C6A /* Frameworks */ = { + isa = PBXGroup; + children = ( + DE925AD22BC8A868F53BE025 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -125,12 +152,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + 8BAEDFE2B03121E235B57BBB /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 632B8B8C0062E80365A4A3D9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -203,6 +232,43 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; }; + 632B8B8C0062E80365A4A3D9 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 8BAEDFE2B03121E235B57BBB /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/inherited_widget/ios/Runner.xcworkspace/contents.xcworkspacedata b/inherited_widget/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a16..21a3cc14 100644 --- a/inherited_widget/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/inherited_widget/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + diff --git a/inherited_widget/lib/main.dart b/inherited_widget/lib/main.dart index ab9e7e8e..adee245b 100644 --- a/inherited_widget/lib/main.dart +++ b/inherited_widget/lib/main.dart @@ -7,13 +7,13 @@ import 'package:inherited_widget_sample/app.dart'; import 'package:inherited_widget_sample/state_container.dart'; import 'package:key_value_store_flutter/key_value_store_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; Future main() async { runApp(StateContainer( child: const InheritedWidgetApp(), repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'inherited_widget_todos', FlutterKeyValueStore(await SharedPreferences.getInstance()), ), diff --git a/inherited_widget/lib/main_web.dart b/inherited_widget/lib/main_web.dart index 9b2082fd..9d10935d 100644 --- a/inherited_widget/lib/main_web.dart +++ b/inherited_widget/lib/main_web.dart @@ -8,13 +8,13 @@ import 'package:flutter/material.dart'; import 'package:inherited_widget_sample/app.dart'; import 'package:inherited_widget_sample/state_container.dart'; import 'package:key_value_store_web/key_value_store_web.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; void main() { runApp(StateContainer( child: const InheritedWidgetApp(), repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'inherited_widget_todos', WebKeyValueStore(window.localStorage), ), diff --git a/inherited_widget/pubspec.yaml b/inherited_widget/pubspec.yaml index 7a5c5c61..4a5f5a44 100644 --- a/inherited_widget/pubspec.yaml +++ b/inherited_widget/pubspec.yaml @@ -19,8 +19,8 @@ environment: dependencies: flutter: sdk: flutter - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage todos_app_core: path: ../todos_app_core key_value_store_flutter: diff --git a/mobx/lib/main.dart b/mobx/lib/main.dart index 936ea5ca..d2c75a27 100644 --- a/mobx/lib/main.dart +++ b/mobx/lib/main.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:key_value_store_flutter/key_value_store_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; import 'app.dart'; @@ -11,7 +11,7 @@ Future main() async { runApp( MobxApp( repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'mobx_todos', FlutterKeyValueStore(await SharedPreferences.getInstance()), ), diff --git a/mobx/lib/main_web.dart b/mobx/lib/main_web.dart index 7b5d8806..aae2a2d3 100644 --- a/mobx/lib/main_web.dart +++ b/mobx/lib/main_web.dart @@ -2,7 +2,7 @@ import 'dart:html'; import 'package:flutter/material.dart'; import 'package:key_value_store_web/key_value_store_web.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; import 'app.dart'; @@ -10,7 +10,7 @@ Future main() async { runApp( MobxApp( repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'mobx_todos', WebKeyValueStore(window.localStorage), ), diff --git a/mobx/pubspec.yaml b/mobx/pubspec.yaml index 764b0e48..4fdbe688 100644 --- a/mobx/pubspec.yaml +++ b/mobx/pubspec.yaml @@ -20,8 +20,8 @@ dependencies: mobx: ^0.4.0 flutter_mobx: ^0.3.0 provider: ^4.0.0 - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage todos_repository_core: path: ../todos_repository_core todos_app_core: diff --git a/mvc/lib/src/todo_list_model.dart b/mvc/lib/src/todo_list_model.dart index c057f642..3863533b 100644 --- a/mvc/lib/src/todo_list_model.dart +++ b/mvc/lib/src/todo_list_model.dart @@ -6,7 +6,7 @@ import 'dart:async'; import 'package:path_provider/path_provider.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; import 'package:mvc/src/models.dart'; class TodoListModel { @@ -14,8 +14,8 @@ class TodoListModel { : _activeFilter = activeFilter ?? VisibilityFilter.all { /// The rest of the app need not know of its existence. repository = repo ?? - TodosRepositoryFlutter( - fileStorage: const FileStorage( + LocalStorageRepository( + localStorage: const FileStorage( 'mvc_app', getApplicationDocumentsDirectory, ), diff --git a/mvc/pubspec.yaml b/mvc/pubspec.yaml index b14c50bd..f1ca5380 100644 --- a/mvc/pubspec.yaml +++ b/mvc/pubspec.yaml @@ -23,8 +23,8 @@ dependencies: path: ../scoped_model todos_app_core: path: ../todos_app_core - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage mvc_pattern: dev_dependencies: diff --git a/mvi_flutter/lib/main.dart b/mvi_flutter/lib/main.dart index ce63db23..c4ec5116 100644 --- a/mvi_flutter/lib/main.dart +++ b/mvi_flutter/lib/main.dart @@ -10,16 +10,16 @@ import 'package:mvi_base/mvi_base.dart'; import 'package:mvi_flutter_sample/run_mvi_app.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); runApp(MviApp( todosRepository: TodosInteractor( - ReactiveTodosRepositoryFlutter( + ReactiveLocalStorageRepository( repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'mvi_flutter', FlutterKeyValueStore(await SharedPreferences.getInstance()), ), diff --git a/mvi_flutter/lib/main_web.dart b/mvi_flutter/lib/main_web.dart index 1f27a6f0..35bc10e2 100644 --- a/mvi_flutter/lib/main_web.dart +++ b/mvi_flutter/lib/main_web.dart @@ -10,16 +10,16 @@ import 'package:key_value_store_web/key_value_store_web.dart'; import 'package:mvi_base/mvi_base.dart'; import 'package:mvi_flutter_sample/run_mvi_app.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); runApp(MviApp( todosRepository: TodosInteractor( - ReactiveTodosRepositoryFlutter( + ReactiveLocalStorageRepository( repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'mvi_flutter', WebKeyValueStore(window.localStorage), ), diff --git a/mvi_flutter/pubspec.yaml b/mvi_flutter/pubspec.yaml index 8886f726..2a9d57e4 100644 --- a/mvi_flutter/pubspec.yaml +++ b/mvi_flutter/pubspec.yaml @@ -19,8 +19,8 @@ environment: dependencies: flutter: sdk: flutter - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage firebase_flutter_repository: path: ../firebase_flutter_repository todos_app_core: diff --git a/mvu/lib/common/repository_commands.dart b/mvu/lib/common/repository_commands.dart index 14022c1b..1c2a6e79 100644 --- a/mvu/lib/common/repository_commands.dart +++ b/mvu/lib/common/repository_commands.dart @@ -4,7 +4,7 @@ import 'package:dartea/dartea.dart'; import 'package:path_provider/path_provider.dart'; import 'package:todos_app_core/todos_app_core.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; abstract class RepositoryEvent {} @@ -110,8 +110,8 @@ class TodosCmdRepository implements CmdRepository { }, onSuccess: onSuccess); } -const _internalRepository = TodosRepositoryFlutter( - fileStorage: FileStorage( +const _internalRepository = LocalStorageRepository( + localStorage: FileStorage( 'mvu_app', getApplicationDocumentsDirectory, ), diff --git a/mvu/pubspec.yaml b/mvu/pubspec.yaml index 962cc417..df6c4155 100644 --- a/mvu/pubspec.yaml +++ b/mvu/pubspec.yaml @@ -24,8 +24,8 @@ dependencies: dartea: "^0.5.5" todos_app_core: path: ../todos_app_core - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage dev_dependencies: flutter_test: diff --git a/redux/.metadata b/redux/.metadata index 1b5cec02..361e1e4c 100644 --- a/redux/.metadata +++ b/redux/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: 27321ebbad34b0a3fafe99fac037102196d655ff - channel: stable + revision: 18cd7a3601bcffb36fdf2f679f763b5e827c2e8e + channel: beta project_type: app diff --git a/redux/ios/Podfile.lock b/redux/ios/Podfile.lock new file mode 100644 index 00000000..60cb72ff --- /dev/null +++ b/redux/ios/Podfile.lock @@ -0,0 +1,34 @@ +PODS: + - Flutter (1.0.0) + - key_value_store_flutter (0.0.1): + - Flutter + - path_provider (0.0.1): + - Flutter + - shared_preferences (0.0.1): + - Flutter + +DEPENDENCIES: + - Flutter (from `Flutter`) + - key_value_store_flutter (from `.symlinks/plugins/key_value_store_flutter/ios`) + - path_provider (from `.symlinks/plugins/path_provider/ios`) + - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`) + +EXTERNAL SOURCES: + Flutter: + :path: Flutter + key_value_store_flutter: + :path: ".symlinks/plugins/key_value_store_flutter/ios" + path_provider: + :path: ".symlinks/plugins/path_provider/ios" + shared_preferences: + :path: ".symlinks/plugins/shared_preferences/ios" + +SPEC CHECKSUMS: + Flutter: 0e3d915762c693b495b44d77113d4970485de6ec + key_value_store_flutter: 17757389b11f4df6461c3a63b7a996062c74b13c + path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d + shared_preferences: 1feebfa37bb57264736e16865e7ffae7fc99b523 + +PODFILE CHECKSUM: 1b66dae606f75376c5f2135a8290850eeb09ae83 + +COCOAPODS: 1.8.4 diff --git a/redux/ios/Runner.xcodeproj/project.pbxproj b/redux/ios/Runner.xcodeproj/project.pbxproj index 7f09584d..dd0da594 100644 --- a/redux/ios/Runner.xcodeproj/project.pbxproj +++ b/redux/ios/Runner.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 5E7495283C2EE97EE73E9CE4 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCA19202287B052354FC31F7 /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -39,6 +40,8 @@ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; + 480AC9B32D88555244F6D203 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 6484D0F73242762AEE945887 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -50,6 +53,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + ABE7BBA1000592FA3BB3A065 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + BCA19202287B052354FC31F7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -59,12 +64,24 @@ files = ( 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, + 5E7495283C2EE97EE73E9CE4 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 60B8E1B7B3D4F8767DEAF8E2 /* Pods */ = { + isa = PBXGroup; + children = ( + ABE7BBA1000592FA3BB3A065 /* Pods-Runner.debug.xcconfig */, + 480AC9B32D88555244F6D203 /* Pods-Runner.release.xcconfig */, + 6484D0F73242762AEE945887 /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -84,6 +101,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + 60B8E1B7B3D4F8767DEAF8E2 /* Pods */, + B5449BEF13D944A9F24ACD12 /* Frameworks */, ); sourceTree = ""; }; @@ -118,6 +137,14 @@ name = "Supporting Files"; sourceTree = ""; }; + B5449BEF13D944A9F24ACD12 /* Frameworks */ = { + isa = PBXGroup; + children = ( + BCA19202287B052354FC31F7 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -125,12 +152,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + 4FEA805F7E8C9CABE6EB44C4 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 20E57DA7F7B71919905952FF /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -189,6 +218,21 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 20E57DA7F7B71919905952FF /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -203,6 +247,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; }; + 4FEA805F7E8C9CABE6EB44C4 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/redux/ios/Runner.xcworkspace/contents.xcworkspacedata b/redux/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a16..21a3cc14 100644 --- a/redux/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/redux/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + diff --git a/redux/ios/Runner/AppIcon.appiconset/Contents.json b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Contents.json rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@1x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@1x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@2x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@2x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@3x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-20x20@3x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-29x29@1x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-29x29@1x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-29x29@2x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-29x29@2x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-29x29@3x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-29x29@3x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-40x40@1x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-40x40@1x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-40x40@2x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-40x40@2x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-40x40@3x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-40x40@3x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@1x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@1x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@2x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@2x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@3x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-60x60@3x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@1x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@1x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@2x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@2x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@3x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-76x76@3x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png diff --git a/redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png b/redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png similarity index 100% rename from redux/ios/Runner/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png rename to redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png diff --git a/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000..0bedcf2f --- /dev/null +++ b/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +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. \ No newline at end of file diff --git a/redux/lib/main.dart b/redux/lib/main.dart index 4189ac30..71e9857c 100644 --- a/redux/lib/main.dart +++ b/redux/lib/main.dart @@ -8,7 +8,7 @@ import 'package:redux/redux.dart'; import 'package:redux_sample/app.dart'; import 'package:redux_sample/reducers/app_state_reducer.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; import 'middleware/store_todos_middleware.dart'; import 'models/app_state.dart'; @@ -21,7 +21,7 @@ Future main() async { appReducer, initialState: AppState.loading(), middleware: createStoreTodosMiddleware(LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'redux', FlutterKeyValueStore(await SharedPreferences.getInstance()), ), diff --git a/redux/lib/main_web.dart b/redux/lib/main_web.dart index 72880789..960dfe81 100644 --- a/redux/lib/main_web.dart +++ b/redux/lib/main_web.dart @@ -9,7 +9,7 @@ import 'package:key_value_store_web/key_value_store_web.dart'; import 'package:redux/redux.dart'; import 'package:redux_sample/app.dart'; import 'package:redux_sample/reducers/app_state_reducer.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; import 'middleware/store_todos_middleware.dart'; import 'models/app_state.dart'; @@ -20,7 +20,7 @@ Future main() async { appReducer, initialState: AppState.loading(), middleware: createStoreTodosMiddleware(LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'redux', WebKeyValueStore(window.localStorage), ), diff --git a/redux/pubspec.yaml b/redux/pubspec.yaml index 9dbd5185..ed270298 100644 --- a/redux/pubspec.yaml +++ b/redux/pubspec.yaml @@ -26,8 +26,8 @@ dependencies: path: ../todos_app_core todos_repository_core: path: ../todos_repository_core - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage key_value_store_flutter: key_value_store_web: shared_preferences: diff --git a/scoped_model/lib/main.dart b/scoped_model/lib/main.dart index d529dcb4..90ba691b 100644 --- a/scoped_model/lib/main.dart +++ b/scoped_model/lib/main.dart @@ -5,11 +5,11 @@ import 'package:flutter/material.dart'; import 'package:path_provider/path_provider.dart'; import 'package:scoped_model_sample/app.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; void main() { - var todoRepo = const TodosRepositoryFlutter( - fileStorage: FileStorage( + var todoRepo = const LocalStorageRepository( + localStorage: FileStorage( 'scoped_model_todos', getApplicationDocumentsDirectory, ), diff --git a/scoped_model/pubspec.yaml b/scoped_model/pubspec.yaml index 6087b730..ffefa676 100644 --- a/scoped_model/pubspec.yaml +++ b/scoped_model/pubspec.yaml @@ -20,8 +20,8 @@ dependencies: flutter: sdk: flutter scoped_model: ^1.0.1 - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage todos_app_core: path: ../todos_app_core diff --git a/scripts/line_counter.dart b/scripts/line_counter.dart index dfec857e..99b7bac0 100644 --- a/scripts/line_counter.dart +++ b/scripts/line_counter.dart @@ -98,7 +98,8 @@ List _findDartFiles(List directories) { !path.endsWith('.g.dart') && !path.contains('todos_repository') && !path.contains('file_storage') && - !path.contains('web_client')) + !path.contains('web_client') && + !path.contains('main_')) .toSet(); return {...files, ...currentDirectoryDartFiles}; diff --git a/simple_bloc_flutter/lib/main.dart b/simple_bloc_flutter/lib/main.dart index 7f2c5d56..722f66da 100644 --- a/simple_bloc_flutter/lib/main.dart +++ b/simple_bloc_flutter/lib/main.dart @@ -10,16 +10,16 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:simple_bloc_flutter_sample/app.dart'; import 'package:simple_blocs/simple_blocs.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); runApp(SimpleBlocApp( todosInteractor: TodosInteractor( - ReactiveTodosRepositoryFlutter( + ReactiveLocalStorageRepository( repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'simple_bloc', FlutterKeyValueStore(await SharedPreferences.getInstance()), ), diff --git a/simple_bloc_flutter/lib/main_web.dart b/simple_bloc_flutter/lib/main_web.dart index 90219378..3c8c166a 100644 --- a/simple_bloc_flutter/lib/main_web.dart +++ b/simple_bloc_flutter/lib/main_web.dart @@ -10,14 +10,14 @@ import 'package:key_value_store_web/key_value_store_web.dart'; import 'package:simple_bloc_flutter_sample/app.dart'; import 'package:simple_blocs/simple_blocs.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; Future main() async { runApp(SimpleBlocApp( todosInteractor: TodosInteractor( - ReactiveTodosRepositoryFlutter( + ReactiveLocalStorageRepository( repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'simple_bloc', WebKeyValueStore(window.localStorage), ), diff --git a/simple_bloc_flutter/pubspec.yaml b/simple_bloc_flutter/pubspec.yaml index d2f3d743..0a5366c7 100644 --- a/simple_bloc_flutter/pubspec.yaml +++ b/simple_bloc_flutter/pubspec.yaml @@ -19,8 +19,8 @@ environment: dependencies: flutter: sdk: flutter - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage firebase_flutter_repository: path: ../firebase_flutter_repository todos_app_core: diff --git a/todos_repository_simple/.gitignore b/todos_repository_local_storage/.gitignore similarity index 100% rename from todos_repository_simple/.gitignore rename to todos_repository_local_storage/.gitignore diff --git a/todos_repository_simple/README.md b/todos_repository_local_storage/README.md similarity index 100% rename from todos_repository_simple/README.md rename to todos_repository_local_storage/README.md diff --git a/todos_repository_simple/lib/src/file_storage.dart b/todos_repository_local_storage/lib/src/file_storage.dart similarity index 95% rename from todos_repository_simple/lib/src/file_storage.dart rename to todos_repository_local_storage/lib/src/file_storage.dart index 0fdf5f69..f49ff4ef 100644 --- a/todos_repository_simple/lib/src/file_storage.dart +++ b/todos_repository_local_storage/lib/src/file_storage.dart @@ -13,7 +13,7 @@ import 'package:todos_repository_core/todos_repository_core.dart'; /// Note: This class has no direct dependencies on any Flutter dependencies. /// Instead, the `getDirectory` method should be injected. This allows for /// testing. -class FileStorage { +class FileStorage implements TodosRepository { final String tag; final Future Function() getDirectory; @@ -22,6 +22,7 @@ class FileStorage { this.getDirectory, ); + @override Future> loadTodos() async { final file = await _getLocalFile(); final string = await file.readAsString(); @@ -33,6 +34,7 @@ class FileStorage { return todos; } + @override Future saveTodos(List todos) async { final file = await _getLocalFile(); diff --git a/todos_repository_simple/lib/src/local_storage.dart b/todos_repository_local_storage/lib/src/key_value_storage.dart similarity index 64% rename from todos_repository_simple/lib/src/local_storage.dart rename to todos_repository_local_storage/lib/src/key_value_storage.dart index b0506022..e43ea6ee 100644 --- a/todos_repository_simple/lib/src/local_storage.dart +++ b/todos_repository_local_storage/lib/src/key_value_storage.dart @@ -8,15 +8,21 @@ import 'package:key_value_store/key_value_store.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; /// Loads and saves a List of Todos using a provided KeyValueStore, which works -/// on mobile and web. -class LocalStorage { +/// on mobile and web. On mobile, it uses the SharedPreferences package, on web +/// it uses window.localStorage. +/// +/// Can be used as it's own repository, or mixed together with other storage +/// solutions, such as the the WebClient, which can be seen in the +/// LocalStorageRepository. +class KeyValueStorage implements TodosRepository { final String key; final KeyValueStore store; final JsonCodec codec; - const LocalStorage(this.key, this.store, [this.codec = json]); + const KeyValueStorage(this.key, this.store, [this.codec = json]); - List loadTodos() { + @override + Future> loadTodos() async { return codec .decode(store.getString(key))['todos'] .cast>() @@ -24,6 +30,7 @@ class LocalStorage { .toList(growable: false); } + @override Future saveTodos(List todos) { return store.setString( key, diff --git a/todos_repository_simple/lib/src/reactive_repository.dart b/todos_repository_local_storage/lib/src/reactive_repository.dart similarity index 95% rename from todos_repository_simple/lib/src/reactive_repository.dart rename to todos_repository_local_storage/lib/src/reactive_repository.dart index 6b3952e5..2e0e4502 100644 --- a/todos_repository_simple/lib/src/reactive_repository.dart +++ b/todos_repository_local_storage/lib/src/reactive_repository.dart @@ -11,12 +11,12 @@ import 'package:todos_repository_core/todos_repository_core.dart'; /// A class that glues together our local file storage and web client. It has a /// clear responsibility: Load Todos and Persist todos. -class ReactiveTodosRepositoryFlutter implements ReactiveTodosRepository { +class ReactiveLocalStorageRepository implements ReactiveTodosRepository { final TodosRepository _repository; final BehaviorSubject> _subject; bool _loaded = false; - ReactiveTodosRepositoryFlutter({ + ReactiveLocalStorageRepository({ @required TodosRepository repository, List seedValue, }) : _repository = repository, diff --git a/todos_repository_simple/lib/src/flutter_repository.dart b/todos_repository_local_storage/lib/src/repository.dart similarity index 69% rename from todos_repository_simple/lib/src/flutter_repository.dart rename to todos_repository_local_storage/lib/src/repository.dart index e8872b66..eb5b52b8 100644 --- a/todos_repository_simple/lib/src/flutter_repository.dart +++ b/todos_repository_local_storage/lib/src/repository.dart @@ -7,17 +7,16 @@ import 'dart:core'; import 'package:meta/meta.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'file_storage.dart'; import 'web_client.dart'; /// A class that glues together our local file storage and web client. It has a /// clear responsibility: Load Todos and Persist todos. -class TodosRepositoryFlutter implements TodosRepository { - final FileStorage fileStorage; - final WebClient webClient; +class LocalStorageRepository implements TodosRepository { + final TodosRepository localStorage; + final TodosRepository webClient; - const TodosRepositoryFlutter({ - @required this.fileStorage, + const LocalStorageRepository({ + @required this.localStorage, this.webClient = const WebClient(), }); @@ -26,11 +25,11 @@ class TodosRepositoryFlutter implements TodosRepository { @override Future> loadTodos() async { try { - return await fileStorage.loadTodos(); + return await localStorage.loadTodos(); } catch (e) { - final todos = await webClient.fetchTodos(); + final todos = await webClient.loadTodos(); - await fileStorage.saveTodos(todos); + await localStorage.saveTodos(todos); return todos; } @@ -40,8 +39,8 @@ class TodosRepositoryFlutter implements TodosRepository { @override Future saveTodos(List todos) { return Future.wait([ - fileStorage.saveTodos(todos), - webClient.postTodos(todos), + localStorage.saveTodos(todos), + webClient.saveTodos(todos), ]); } } diff --git a/todos_repository_simple/lib/src/web_client.dart b/todos_repository_local_storage/lib/src/web_client.dart similarity index 91% rename from todos_repository_simple/lib/src/web_client.dart rename to todos_repository_local_storage/lib/src/web_client.dart index e3e9cdae..45138691 100644 --- a/todos_repository_simple/lib/src/web_client.dart +++ b/todos_repository_local_storage/lib/src/web_client.dart @@ -12,13 +12,14 @@ import 'package:todos_repository_core/todos_repository_core.dart'; /// /// Since we're trying to keep this example simple, it doesn't communicate with /// a real server but simply emulates the functionality. -class WebClient { +class WebClient implements TodosRepository { final Duration delay; const WebClient([this.delay = const Duration(milliseconds: 3000)]); /// Mock that "fetches" some Todos from a "web service" after a short delay - Future> fetchTodos() async { + @override + Future> loadTodos() async { return Future.delayed( delay, () => [ @@ -57,7 +58,8 @@ class WebClient { /// Mock that returns true or false for success or failure. In this case, /// it will "Always Succeed" - Future postTodos(List todos) async { + @override + Future saveTodos(List todos) async { return Future.value(true); } } diff --git a/todos_repository_simple/lib/todos_repository_simple.dart b/todos_repository_local_storage/lib/todos_repository_local_storage.dart similarity index 73% rename from todos_repository_simple/lib/todos_repository_simple.dart rename to todos_repository_local_storage/lib/todos_repository_local_storage.dart index c4564483..21fdf1c6 100644 --- a/todos_repository_simple/lib/todos_repository_simple.dart +++ b/todos_repository_local_storage/lib/todos_repository_local_storage.dart @@ -6,7 +6,6 @@ library todos_repository_simple; export 'src/file_storage.dart'; export 'src/reactive_repository.dart'; -export 'src/flutter_repository.dart'; +export 'src/repository.dart'; export 'src/web_client.dart'; -export 'src/local_storage.dart'; -export 'src/local_storage_repository.dart'; +export 'src/key_value_storage.dart'; diff --git a/todos_repository_simple/pubspec.yaml b/todos_repository_local_storage/pubspec.yaml similarity index 89% rename from todos_repository_simple/pubspec.yaml rename to todos_repository_local_storage/pubspec.yaml index c100ac00..0587370d 100644 --- a/todos_repository_simple/pubspec.yaml +++ b/todos_repository_local_storage/pubspec.yaml @@ -1,4 +1,4 @@ -name: todos_repository_simple +name: todos_repository_local_storage description: An app-agnostic data source that can be used by all implementations environment: diff --git a/todos_repository_simple/test/all_tests.dart b/todos_repository_local_storage/test/all_tests.dart similarity index 100% rename from todos_repository_simple/test/all_tests.dart rename to todos_repository_local_storage/test/all_tests.dart diff --git a/todos_repository_simple/test/file_storage_test.dart b/todos_repository_local_storage/test/file_storage_test.dart similarity index 92% rename from todos_repository_simple/test/file_storage_test.dart rename to todos_repository_local_storage/test/file_storage_test.dart index ff069c82..e45a8897 100644 --- a/todos_repository_simple/test/file_storage_test.dart +++ b/todos_repository_local_storage/test/file_storage_test.dart @@ -6,7 +6,7 @@ import 'dart:io'; import 'package:test/test.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; void main() { group('FileStorage', () { diff --git a/todos_repository_local_storage/test/key_value_storage_test.dart b/todos_repository_local_storage/test/key_value_storage_test.dart new file mode 100644 index 00000000..c59ff825 --- /dev/null +++ b/todos_repository_local_storage/test/key_value_storage_test.dart @@ -0,0 +1,33 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:key_value_store/key_value_store.dart'; +import 'package:mockito/mockito.dart'; +import 'package:test/test.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; + +class MockKeyValueStore extends Mock implements KeyValueStore {} + +void main() { + group('KeyValueStorage', () { + final store = MockKeyValueStore(); + final todos = [TodoEntity('Task', '1', 'Hallo', true)]; + final todosJson = + '{"todos":[{"complete":true,"task":"Task","note":"Hallo","id":"1"}]}'; + final storage = KeyValueStorage('T', store); + + test('Should persist TodoEntities to the store', () async { + await storage.saveTodos(todos); + + verify(store.setString('T', todosJson)); + }); + + test('Should load TodoEntities from disk', () async { + when(store.getString('T')).thenReturn(todosJson); + + expect(await storage.loadTodos(), todos); + }); + }); +} diff --git a/todos_repository_simple/test/reactive_repository_test.dart b/todos_repository_local_storage/test/reactive_repository_test.dart similarity index 89% rename from todos_repository_simple/test/reactive_repository_test.dart rename to todos_repository_local_storage/test/reactive_repository_test.dart index fdf597ea..74453787 100644 --- a/todos_repository_simple/test/reactive_repository_test.dart +++ b/todos_repository_local_storage/test/reactive_repository_test.dart @@ -7,7 +7,7 @@ import 'dart:async'; import 'package:mockito/mockito.dart'; import 'package:test/test.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; class MockTodosRepository extends Mock implements TodosRepository {} @@ -25,7 +25,7 @@ void main() { () { final todos = createTodos(); final repository = MockTodosRepository(); - final reactiveRepository = ReactiveTodosRepositoryFlutter( + final reactiveRepository = ReactiveLocalStorageRepository( repository: repository, seedValue: todos, ); @@ -39,7 +39,7 @@ void main() { test('should only load from the base repo once', () { final todos = createTodos(); final repository = MockTodosRepository(); - final reactiveRepository = ReactiveTodosRepositoryFlutter( + final reactiveRepository = ReactiveLocalStorageRepository( repository: repository, seedValue: todos, ); @@ -55,7 +55,7 @@ void main() { test('should add todos to the repository and emit the change', () async { final todos = createTodos(); final repository = MockTodosRepository(); - final reactiveRepository = ReactiveTodosRepositoryFlutter( + final reactiveRepository = ReactiveLocalStorageRepository( repository: repository, seedValue: [], ); @@ -74,7 +74,7 @@ void main() { () async { final todos = createTodos(); final repository = MockTodosRepository(); - final reactiveRepository = ReactiveTodosRepositoryFlutter( + final reactiveRepository = ReactiveLocalStorageRepository( repository: repository, seedValue: todos, ); @@ -95,7 +95,7 @@ void main() { test('should remove todos from the repo and emit the change', () async { final repository = MockTodosRepository(); final todos = createTodos(); - final reactiveRepository = ReactiveTodosRepositoryFlutter( + final reactiveRepository = ReactiveLocalStorageRepository( repository: repository, seedValue: todos, ); diff --git a/todos_repository_simple/test/repository_test.dart b/todos_repository_local_storage/test/repository_test.dart similarity index 78% rename from todos_repository_simple/test/repository_test.dart rename to todos_repository_local_storage/test/repository_test.dart index 3d622b5b..5774ce6f 100644 --- a/todos_repository_simple/test/repository_test.dart +++ b/todos_repository_local_storage/test/repository_test.dart @@ -8,7 +8,7 @@ import 'dart:io'; import 'package:mockito/mockito.dart'; import 'package:test/test.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; /// We create two Mocks for our Web Client and File Storage. We will use these /// mock classes to verify the behavior of the TodosRepository. @@ -27,8 +27,8 @@ void main() { () { final fileStorage = MockFileStorage(); final webClient = MockWebClient(); - final repository = TodosRepositoryFlutter( - fileStorage: fileStorage, + final repository = LocalStorageRepository( + localStorage: fileStorage, webClient: webClient, ); final todos = createTodos(); @@ -39,7 +39,7 @@ void main() { when(fileStorage.loadTodos()).thenAnswer((_) => Future.value(todos)); expect(repository.loadTodos(), completion(todos)); - verifyNever(webClient.fetchTodos()); + verifyNever(webClient.loadTodos()); }); test( @@ -47,8 +47,8 @@ void main() { () async { final fileStorage = MockFileStorage(); final webClient = MockWebClient(); - final repository = TodosRepositoryFlutter( - fileStorage: fileStorage, + final repository = LocalStorageRepository( + localStorage: fileStorage, webClient: webClient, ); final todos = createTodos(); @@ -56,12 +56,12 @@ void main() { // In this instance, we'll ask our Mock to throw an error. When it does, // we expect the web client to be called instead. when(fileStorage.loadTodos()).thenThrow('Uh ohhhh'); - when(webClient.fetchTodos()).thenAnswer((_) => Future.value(todos)); + when(webClient.loadTodos()).thenAnswer((_) => Future.value(todos)); // We check that the correct todos were returned, and that the - // webClient.fetchTodos method was in fact called! + // webClient.loadTodos method was in fact called! expect(await repository.loadTodos(), todos); - verify(webClient.fetchTodos()); + verify(webClient.loadTodos()); }); test( @@ -69,37 +69,37 @@ void main() { () async { final fileStorage = MockFileStorage(); final webClient = MockWebClient(); - final repository = TodosRepositoryFlutter( - fileStorage: fileStorage, + final repository = LocalStorageRepository( + localStorage: fileStorage, webClient: webClient, ); final todos = createTodos(); when(fileStorage.loadTodos()).thenThrow(Exception('Oh no.')); - when(webClient.fetchTodos()).thenAnswer((_) => Future.value(todos)); + when(webClient.loadTodos()).thenAnswer((_) => Future.value(todos)); expect(await repository.loadTodos(), todos); - verify(webClient.fetchTodos()); + verify(webClient.loadTodos()); }); test('should persist the todos to local disk and the web client', () { final fileStorage = MockFileStorage(); final webClient = MockWebClient(); - final repository = TodosRepositoryFlutter( - fileStorage: fileStorage, + final repository = LocalStorageRepository( + localStorage: fileStorage, webClient: webClient, ); final todos = createTodos(); when(fileStorage.saveTodos(todos)) .thenAnswer((_) => Future.value(File('falsch'))); - when(webClient.postTodos(todos)).thenAnswer((_) => Future.value(true)); + when(webClient.saveTodos(todos)).thenAnswer((_) => Future.value(true)); // In this case, we just want to verify we're correctly persisting to all // the storage mechanisms we care about. expect(repository.saveTodos(todos), completes); verify(fileStorage.saveTodos(todos)); - verify(webClient.postTodos(todos)); + verify(webClient.saveTodos(todos)); }); }); } diff --git a/todos_repository_simple/ios/Runner/GeneratedPluginRegistrant.h b/todos_repository_simple/ios/Runner/GeneratedPluginRegistrant.h deleted file mode 100644 index ed9a5c61..00000000 --- a/todos_repository_simple/ios/Runner/GeneratedPluginRegistrant.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Generated file. Do not edit. -// - -#ifndef GeneratedPluginRegistrant_h -#define GeneratedPluginRegistrant_h - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface GeneratedPluginRegistrant : NSObject -+ (void)registerWithRegistry:(NSObject*)registry; -@end - -NS_ASSUME_NONNULL_END -#endif /* GeneratedPluginRegistrant_h */ diff --git a/todos_repository_simple/lib/src/local_storage_repository.dart b/todos_repository_simple/lib/src/local_storage_repository.dart deleted file mode 100644 index eb1e0b64..00000000 --- a/todos_repository_simple/lib/src/local_storage_repository.dart +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'dart:async'; -import 'dart:core'; - -import 'package:meta/meta.dart'; -import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/src/local_storage.dart'; - -import 'web_client.dart'; - -/// A class that glues together our local storage and web client. It has a -/// clear responsibility: Load Todos and Persist todos. -/// -/// It interacts with the LocalStorage class which can be used for either web -/// or mobile. -class LocalStorageRepository implements TodosRepository { - final LocalStorage localStorage; - final WebClient webClient; - - const LocalStorageRepository({ - @required this.localStorage, - this.webClient = const WebClient(), - }); - - /// Loads todos first from File storage. If they don't exist or encounter an - /// error, it attempts to load the Todos from a Web Client. - @override - Future> loadTodos() async { - try { - return localStorage.loadTodos(); - } catch (e) { - final todos = await webClient.fetchTodos(); - - await localStorage.saveTodos(todos); - - return todos; - } - } - - // Persists todos to local disk and the web - @override - Future> saveTodos(List todos) { - return Future.wait([ - localStorage.saveTodos(todos), - webClient.postTodos(todos), - ]); - } -} diff --git a/vanilla/lib/main.dart b/vanilla/lib/main.dart index 1cb33ee6..48a3702f 100644 --- a/vanilla/lib/main.dart +++ b/vanilla/lib/main.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:key_value_store_flutter/key_value_store_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; import 'package:vanilla/app.dart'; Future main() async { @@ -14,7 +14,7 @@ Future main() async { runApp( VanillaApp( repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'vanilla', FlutterKeyValueStore(await SharedPreferences.getInstance()), ), diff --git a/vanilla/lib/main_web.dart b/vanilla/lib/main_web.dart index 0a6e8c43..4d1b687e 100644 --- a/vanilla/lib/main_web.dart +++ b/vanilla/lib/main_web.dart @@ -6,7 +6,7 @@ import 'dart:html'; import 'package:flutter/material.dart'; import 'package:key_value_store_web/key_value_store_web.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; import 'package:vanilla/app.dart'; Future main() async { @@ -15,7 +15,7 @@ Future main() async { runApp( VanillaApp( repository: LocalStorageRepository( - localStorage: LocalStorage( + localStorage: KeyValueStorage( 'vanilla', WebKeyValueStore(window.localStorage), ), diff --git a/vanilla/pubspec.yaml b/vanilla/pubspec.yaml index 96847fb5..c168de5c 100644 --- a/vanilla/pubspec.yaml +++ b/vanilla/pubspec.yaml @@ -21,8 +21,8 @@ dependencies: sdk: flutter todos_app_core: path: ../todos_app_core - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage key_value_store_flutter: key_value_store_web: shared_preferences: From c69f4a12a61b2fb15c2ec2f4a1a43e94c85af0f0 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Sat, 11 Jan 2020 14:15:21 +0100 Subject: [PATCH 41/77] Add codemagic static sites to readme and website --- README.md | 102 ++++++--- index.html | 624 ++++++++++++++++++++++++++++------------------------- 2 files changed, 413 insertions(+), 313 deletions(-) diff --git a/README.md b/README.md index 10e20eca..4d59afd6 100644 --- a/README.md +++ b/README.md @@ -8,51 +8,103 @@ [TodoMVC](http://todomvc.com) for Flutter! -Flutter provides a lot of flexibility in deciding how to organize and architect your apps. While this freedom is very valuable, it can also lead to apps with large classes, inconsistent naming schemes, as well as mismatching or missing architectures. These types of issues can make testing, maintaining and extending your apps difficult. - -The Flutter Architecture Samples project demonstrates strategies to help solve or avoid these common problems. This project implements the same app using different architectural concepts and tools. - -You can use the samples in this project as a learning reference, or as a starting point for creating your own apps. The focus of this project is on demonstrating how to structure your code, design your architecture, and the eventual impact of adopting these patterns on testing and maintaining your app. You can use the techniques demonstrated here in many different ways to build apps. Your own particular priorities will impact how you implement the concepts in these projects, so you should not consider these samples to be canonical examples. To ensure the focus is kept on the aims described above, the app uses a simple UI. +Flutter provides a lot of flexibility in deciding how to organize and architect +your apps. While this freedom is very valuable, it can also lead to apps with +large classes, inconsistent naming schemes, as well as mismatching or missing +architectures. These types of issues can make testing, maintaining and extending +your apps difficult. + +The Flutter Architecture Samples project demonstrates strategies to help solve +or avoid these common problems. This project implements the same app using +different architectural concepts and tools. + +You can use the samples in this project as a learning reference, or as a +starting point for creating your own apps. The focus of this project is on +demonstrating how to structure your code, design your architecture, and the +eventual impact of adopting these patterns on testing and maintaining your app. +You can use the techniques demonstrated here in many different ways to build +apps. Your own particular priorities will impact how you implement the concepts +in these projects, so you should not consider these samples to be canonical +examples. To ensure the focus is kept on the aims described above, the app uses +a simple UI. ### Current Samples -Examples have been updated to Dart 2. - -- [Lifting State Up (Vanilla) Example](vanilla) - Uses the tools Flutter provides out of the box to manage app state. -- [InheritedWidget Example](inherited_widget) - Uses an InheritedWidget to pass app state down the widget hierarchy. -- [BLoC Example](bloc_flutter) - An implementation of the BLoC pattern, which uses Sinks for Inputs and Streams for Outputs -- ["Simple" BLoC Example](simple_bloc_flutter) - Similar to the BLoC pattern, but uses Functions for Inputs and Streams for Outputs. Results in far less code compared to standard BLoC. -- [Bloc Library Example](bloc_library) - Uses the [bloc](https://pub.dartlang.org/packages/bloc) and [flutter_bloc](https://pub.dartlang.org/packages/flutter_bloc) libraries to manage app state and update Widgets. -- [Redux Example](redux) - Uses the [Redux](https://pub.dartlang.org/packages/redux) library to manage app state and update Widgets +- [Vanilla Lifting State Up Example](vanilla) ([Web Demo](https://fas_vanilla.codemagic.app)) - Uses the tools Flutter provides out of the box to manage app state. +- [InheritedWidget Example](inherited_widget) ([Web Demo](https://fas_inherited_widget.codemagic.app)) - Uses an InheritedWidget to pass app state down the widget hierarchy. +- [Change Notifier + Provider Example](change_notifier_provider) ([Web Demo](https://fas_change_notifier_provider.codemagic.app)) - Uses the [ChangeNotifier](https://api.flutter.dev/flutter/foundation/ChangeNotifier-class.html) class from Flutter with [provider](https://pub.dev/packages/provider) package now recommended by the Flutter team. +- [BLoC Example](bloc_flutter) ([Web Demo](https://fas_bloc_flutter.codemagic.app)) - An implementation of the BLoC pattern, which uses Sinks for Inputs and Streams for Outputs +- [Bloc Library Example](bloc_library) ([Web Demo](https://fas_bloc_library.codemagic.app)) - Uses the [bloc](https://pub.dartlang.org/packages/bloc) and [flutter_bloc](https://pub.dartlang.org/packages/flutter_bloc) libraries to manage app state and update Widgets. +- [MobX Example](mobx) ([Web Demo](https://fas_mobx.codemagic.app)) - Uses the [MobX](https://pub.dev/packages/mobx) library to manage app state and update widgets using `Observables`, `Actions` and `Reactions`. +- [Redux Example](redux) ([Web Demo](https://fas_redux.codemagic.app)) - Uses the [Redux](https://pub.dartlang.org/packages/redux) library to manage app state and update Widgets +- ["Simple" BLoC Example](simple_bloc_flutter) ([Web Demo](https://fas_simple_bloc.codemagic.app)) - Similar to the BLoC pattern, but uses Functions for Inputs and Streams for Outputs. Results in far less code compared to standard BLoC. +- [MVI Example](mvi_flutter) ([Web Demo](https://fas_mvi.codemagic.app)) - Uses the concepts from Cycle.JS and applies them to Flutter. - [built_redux Example](built_redux) - Uses the [built_redux](https://pub.dartlang.org/packages/built_redux) library to enforce immutability and manage app state - [scoped_model Example](scoped_model) - Uses the [scoped_model](https://pub.dartlang.org/packages/scoped_model) library to hold app state and notify Widgets of Updates - [Firestore Redux Example](firestore_redux) - Uses the [Redux](https://pub.dartlang.org/packages/redux) library to manage app state and update Widgets and adds [Cloud_Firestore](https://firebase.google.com/docs/firestore/) as the Todos database. - [MVU Example](mvu) - Uses the [dartea](https://pub.dartlang.org/packages/dartea) library to manage app state and update Widgets. -- [MVI Example](mvi_flutter) - Uses the concepts from Cycle.JS and applies them to Flutter. - [MVC Example](mvc) - Uses the [MVC](https://pub.dartlang.org/packages/mvc_pattern) library to implement the traditional MVC design pattern. - [Frideos Example](frideos_library) - Uses the [Frideos](https://pub.dartlang.org/packages/frideos) library to manage app state and update widgets using streams. -- [MobX Example](mobx) - Uses the [MobX](https://pub.dev/packages/mobx) library to manage app state and update widgets using `Observables`, `Actions` and `Reactions`. -- [Change Notifier + Provider Example](change_notifier_provider) - Uses the [ChangeNotifier](https://api.flutter.dev/flutter/foundation/ChangeNotifier-class.html) class from Flutter with [provider](https://pub.dev/packages/provider) package now recommended by the Flutter team. ### Supporting Code -- [integration_tests](integration_tests) - Demonstrates how to write selenium-style integration (aka end to end) tests using the Page Object Model. This test suite is run against all samples. -- [todos_repository_core](todos_repository_core) - Demonstrates the repository pattern and testing strategies for working with the filesystem. Used to provide local storage and mock web storage to samples. +- [integration_tests](integration_tests) - Demonstrates how to write +selenium-style integration (aka end to end) tests using the Page Object Model. +This test suite is run against all samples. +- [todos_repository_core](todos_repository_core) - Defines the core abstract +classes for loading and saving data so that storage can be implemented in +various ways, such as file storage or firebase for mobile projects, or +window.localStorage for web projects. +- [todos_repository_local_storage](todos_repository_local_storage) - Implements +the todos repository using the file system, window.localStorage, and +SharedPreferences as the data source. +- [firebase_flutter_repository](firebase_flutter_repository) - Implements +the todos repository using firestore as the data source. +- [firebase_rtdb_flutter_repository](firebase_rtdb_flutter_repository) - +Implements the todos repository using firebase real-time database as the data +source. + +### Running the samples + +#### iOS / Android + +``` +cd +flutter run +``` + +#### Web + +Make sure you're on Flutter version "Flutter 1.12.13+hotfix.6 • channel beta" or +newer. Not all samples support web at this time, so please check the sample +directory for a `lib/main_web.dart` file. + +``` +cd +flutter run -d chrome -t lib/main_web.dart +``` ### Why a todo app? -The app in this project aims to be simple enough that you can understand it quickly, but complex enough to showcase difficult design decisions and testing scenarios. For more information, see the [app's specification](app_spec.md). +The app in this project aims to be simple enough that you can understand it +quickly, but complex enough to showcase difficult design decisions and testing +scenarios. For more information, see the [app's specification](app_spec.md). ### Be excellent to each other -This Repo is meant as a discussion platform for various architectures. Let us debate these ideas vigorously, but let us be excellent to each other in the process! +This Repo is meant as a discussion platform for various architectures. Let us +debate these ideas vigorously, but let us be excellent to each other in the +process! -While healthy debate and contributions are very welcome, trolls are not. Read the [code of conduct](code-of-conduct.md) for detailed information. +While healthy debate and contributions are very welcome, trolls are not. Read +the [code of conduct](code-of-conduct.md) for detailed information. ### Contributing -Feel free to join in the discussion, file issues, and we'd love to have more samples added! Please read the [CONTRIBUTING](CONTRIBUTING.md) file for guidance :) +Feel free to join in the discussion, file issues, and we'd love to have more +samples added! Please read the [CONTRIBUTING](CONTRIBUTING.md) file for guidance +:) ### License @@ -60,7 +112,8 @@ All code in this repo is MIT licensed. ## Attribution -All of these ideas and even some of the language are directly influenced by two projects: +All of these ideas and even some of the language are directly influenced by two +projects: - [TodoMVC](http://todomvc.com) - A Todo App implemented in various JS frameworks - [Android Architecture Blueprints](https://github.com/googlesamples/android-architecture) - A similar concept, but for Android! The UI and app spec was highly inspired by their example. @@ -82,4 +135,5 @@ All of these ideas and even some of the language are directly influenced by two - [Kushagra Saxena](https://github.com/kush3107) - [Shakib Hossain](https://github.com/shakib609) -I'd like to thank all of the folks who have helped write new samples, improve the current implementations, and added documentation! You're amazing! :) +I'd like to thank all of the folks who have helped write new samples, improve +the current implementations, and added documentation! You're amazing! :) diff --git a/index.html b/index.html index 53f7ec3e..d9784888 100644 --- a/index.html +++ b/index.html @@ -5,302 +5,348 @@ - - - Flutter Architecture Samples - - - - - - - + + + Flutter Architecture Samples + + + + + + +

    - @@ -355,6 +359,9 @@

    Contributors

  • Kushagra Saxena
  • +
  • + Mellati Fateh +
  • From a08c47975800bd8416ada6937120c10fd2232381 Mon Sep 17 00:00:00 2001 From: MELLATI Fatah <38536986+GIfatahTH@users.noreply.github.com> Date: Mon, 13 Jan 2020 16:37:31 +0100 Subject: [PATCH 48/77] add states_rebuilder --- .travis.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.travis.yml b/.travis.yml index eb832b00..d09dd464 100644 --- a/.travis.yml +++ b/.travis.yml @@ -331,6 +331,16 @@ jobs: env: mobx_ios before_install: *before_install_osx script: travis_retry ./scripts/ci.sh ./mobx + - <<: *integration-test + os: linux + env: states_rebuilder_android + script: travis_retry ./scripts/ci.sh ./states_rebuilder + - <<: *integration-test + os: osx + osx_image: xcode11.3 + env: states_rebuilder_ios + before_install: *before_install_osx + script: travis_retry ./scripts/ci.sh ./states_rebuilder allow_failures: # - env: From d4636ea40ea94051bbdcd8ca53138f04af182a69 Mon Sep 17 00:00:00 2001 From: MELLATI Fatah <38536986+GIfatahTH@users.noreply.github.com> Date: Mon, 13 Jan 2020 16:41:37 +0100 Subject: [PATCH 49/77] add states_rebuilder --- .cirrus.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.cirrus.yml b/.cirrus.yml index 601b9d96..b5c29eca 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -38,6 +38,7 @@ task: app_arch: scoped_model app_arch: simple_bloc_flutter app_arch: vanilla + app_arch: states_rebuilder container: image: cirrusci/flutter:$DOCKER_VERSION cpu: 4 @@ -79,6 +80,7 @@ task: app_arch: scoped_model app_arch: simple_bloc_flutter app_arch: vanilla + app_arch: states_rebuilder osx_instance: image: mojave-xcode-11.2.1-flutter simulator_script: From f189168bea2385ef1b3584058fd2ea3bbf788dd2 Mon Sep 17 00:00:00 2001 From: MELLATI Fatah <38536986+GIfatahTH@users.noreply.github.com> Date: Mon, 13 Jan 2020 17:06:03 +0100 Subject: [PATCH 50/77] refactor to use StatesRebuilderTodosRepository --- states_rebuilder/lib/main.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/states_rebuilder/lib/main.dart b/states_rebuilder/lib/main.dart index 36b9ec83..c899ae87 100644 --- a/states_rebuilder/lib/main.dart +++ b/states_rebuilder/lib/main.dart @@ -15,8 +15,8 @@ void main() async { runApp( StatesRebuilderApp( - repository: TodosRepository( - localStorage: KeyValueStorage( + repository: StatesRebuilderTodosRepository( + todosRepository: KeyValueStorage( 'states_rebuilder', FlutterKeyValueStore(await SharedPreferences.getInstance()), )), From 42c15ac9ae30df849dc0bdce4cdfb56afdf508a0 Mon Sep 17 00:00:00 2001 From: MELLATI Fatah <38536986+GIfatahTH@users.noreply.github.com> Date: Mon, 13 Jan 2020 17:06:47 +0100 Subject: [PATCH 51/77] refactor to use StatesRebuilderTodosRepository --- states_rebuilder/lib/main_web.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/states_rebuilder/lib/main_web.dart b/states_rebuilder/lib/main_web.dart index b8530bc9..67ad0673 100644 --- a/states_rebuilder/lib/main_web.dart +++ b/states_rebuilder/lib/main_web.dart @@ -16,8 +16,8 @@ void main() async { runApp( StatesRebuilderApp( - repository: TodosRepository( - localStorage: KeyValueStorage( + repository: StatesRebuilderTodosRepository( + todosRepository: KeyValueStorage( 'states_rebuilder', WebKeyValueStore(window.localStorage), )), From dbdbcabf333456b05ebca870649659d0bf4bfed6 Mon Sep 17 00:00:00 2001 From: MELLATI Fatah <38536986+GIfatahTH@users.noreply.github.com> Date: Mon, 13 Jan 2020 17:07:46 +0100 Subject: [PATCH 52/77] refactor to use StatesRebuilderTodosRepository --- .../lib/repository/todo_repository.dart | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/states_rebuilder/lib/repository/todo_repository.dart b/states_rebuilder/lib/repository/todo_repository.dart index f00b198e..775d0345 100644 --- a/states_rebuilder/lib/repository/todo_repository.dart +++ b/states_rebuilder/lib/repository/todo_repository.dart @@ -1,23 +1,20 @@ import 'package:todos_repository_core/src/todo_entity.dart'; -import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; - +import 'package:todos_repository_core/src/todos_repository.dart'; import '../domain/entities/todo.dart'; import '../service/exceptions/persistance_exception.dart'; import '../service/interfaces/i_todo_repository.dart'; -class TodosRepository implements ITodosRepository { - final KeyValueStorage localStorage; +class StatesRebuilderTodosRepository implements ITodosRepository { - TodosRepository({this.localStorage}) - : _localStorageRepository = LocalStorageRepository( - localStorage: localStorage, - ); + TodosRepository _todosRepository; + + StatesRebuilderTodosRepository({TodosRepository todosRepository}) + : _todosRepository =todosRepository; - final LocalStorageRepository _localStorageRepository; @override Future> loadTodos() async { try { - final todoEntities = await _localStorageRepository.loadTodos(); + final todoEntities = await _todosRepository.loadTodos(); var todos = []; for (var todoEntity in todoEntities) { todos.add( @@ -38,7 +35,7 @@ class TodosRepository implements ITodosRepository { todosEntities.add(TodoEntity.fromJson(todo.toJson())); } - return _localStorageRepository.saveTodos(todosEntities); + return _todosRepository.saveTodos(todosEntities); } catch (e) { throw PersistanceException('There is a problem in saving todos : $e'); } From a5136038ede314bf15dd7308320aa0322bbabd2a Mon Sep 17 00:00:00 2001 From: MELLATI Fatah Date: Mon, 13 Jan 2020 21:47:01 +0100 Subject: [PATCH 53/77] add comments --- states_rebuilder/README.md | 897 +----------------- states_rebuilder/lib/app.dart | 6 +- .../todo_repository.dart | 11 +- .../lib/domain/entities/todo.dart | 2 + states_rebuilder/lib/main.dart | 15 +- states_rebuilder/lib/main_web.dart | 16 +- .../lib/service/common/enums.dart | 2 + .../lib/service/todos_service.dart | 12 +- .../ui/pages/detail_screen/detail_screen.dart | 9 +- .../ui/pages/home_screen/filter_button.dart | 1 + .../lib/ui/pages/home_screen/home_screen.dart | 2 + .../ui/pages/home_screen/stats_counter.dart | 1 + .../lib/ui/pages/home_screen/todo_item.dart | 1 + 13 files changed, 101 insertions(+), 874 deletions(-) rename states_rebuilder/lib/{repository => data_source}/todo_repository.dart (81%) diff --git a/states_rebuilder/README.md b/states_rebuilder/README.md index 75733b40..7b65b4b4 100644 --- a/states_rebuilder/README.md +++ b/states_rebuilder/README.md @@ -4,880 +4,79 @@ This sample is an implementation of the todoMVC app using `states_rebuilder` pac For more information and tutorials on how states_rebuilder work please check out the [official documentation](https://github.com/GIfatahTH/states_rebuilder). -# key concepts +# key concepts of the architecture -* Business logic is written using Plain Old Dart Object without any need to extend, notify, annotate any thing. -* The app is divided into there layers : Domain, Service, and the outer layer for UI and external services which has three parts (UI, repository, and infrastructure). +* The app is divided into there layers in the form of onion layers : the innermost is Domain, the middle is Service, and the outer layer for UI and external services which has three parts (UI, data_source, and infrastructure). The folders structure is : -lib - - |-domain - | |-entities - | |-exceptions - |-service - | |-interfaces - | |-exceptions - | |-common - |-repository - |-ui - | |-pages - | |-exceptions - | |-common - +```lib - + |-domain + | |-entities + | |-exceptions + |-service (application service) + | |-interfaces (to be implemented by data_source) + | |-exceptions + | |-common + |-data_source + |-ui + | |-pages + | |-exceptions (handle exception) + | |-common +``` ## domain Contains enterprise wide business logic. It encapsulates entities, value_objects, exceptions. In case of todoMVC we need one entity `Todo`. ->Entity is a mutable object with an ID. It should contain all the logic It controls. Entity is validated just before persistance, ie, in toMap() method. - -**file:domain/entities/todo.dart** -```dart -class Todo { - String id; - bool complete; - String note; - String task; - - Todo(this.task, {String id, this.note, this.complete = false}) - : id = id ?? flutter_arch_sample_app.Uuid().generateV4(); - - Todo.fromJson(Map map) { - id = map['id'] as String; - task = map['task'] as String; - note = map['note'] as String; - complete = map['complete'] as bool; - } - - // toJson is called just before persistance. - Map toJson() { - // validation - _validation(); - return { - 'complete': complete, - 'task': task, - 'note': note, - 'id': id, - }; - } - - void _validation() { - if (id == null) { - // Custom defined error classes - throw ValidationException('This todo has no ID!'); - } - if (task == null || task.isEmpty) { - throw ValidationException('Empty task are not allowed'); - } - } - - @override - int get hashCode => id.hashCode; +* Entity is a mutable object with an ID. It should contain all the logic It controls. Entity is validated just before persistance, ie, in toMap() method. - @override - bool operator ==(Object other) => - identical(this, other) || - other is Todo && runtimeType == other.runtimeType && id == other.id; -} -``` ->Domain objects must throw exceptions defined in the exception folders: - -**file:domain/exceptions/validation_exception.dart** -```dart -class ValidationException extends Error { - final String message; - - ValidationException(this.message); -} -``` +* Domain objects must throw exceptions defined in the exception folders: ## service Contains service application use cases business logic. It defines a set of API to be consumed by the outer layer (UI and infrastructure). -> Service layer defines a set of interfaces, outer layer (repository and infrastructure) must implement. - -**file:service/interfaces/i_todo_repository.dart** - -```dart -abstract class ITodoRepository { - /// Loads todos - Future> loadTodos(); - // Persists todos to local disk and the web - Future saveTodos(List todos); -} -``` ->Service objects must throw exceptions defined in the exception folders: - -**file:service/exceptions/validation_exception.dart** - -```dart -class PersistanceException extends Error { - final String message; - - PersistanceException(this.message); -} -``` - ->Service layer contains common and helper classes used inside it: - -**file:service/common/enums.dart** - -```dart -enum VisibilityFilter { all, active, completed } -``` -NOTE that `AppTab` and `ExtraAction` are not used here. They will be declared in the UI layer. - ->Service layer contains service classes that defined the application specific use cases. These class must obey to the single responsibility principle. - -**file:service/todos_service.dart** - -```dart -class TodosService { - //Constructor injection of the ITodoRepository abstract class. - TodosService(ITodoRepository todoRepository) - : _todoRepository = todoRepository; - - //private fields - final ITodoRepository _todoRepository; - List _todos = const []; - List get _completedTodos => _todos.where((t) => t.complete).toList(); - List get _activeTodos => _todos.where((t) => !t.complete).toList(); - - //public field - VisibilityFilter activeFilter = VisibilityFilter.all; - - //getters - List get todos { - if (activeFilter == VisibilityFilter.active) { - return _activeTodos; - } - if (activeFilter == VisibilityFilter.completed) { - return _completedTodos; - } - return _todos; - } - int get numCompleted => _completedTodos.length; - int get numActive => _activeTodos.length; - bool get allComplete => _activeTodos.isEmpty; - - - //methods for CRUD - void loadTodos() async { - _todos = await _todoRepository.loadTodos(); - } - - void addTodo(Todo todo) { - _todos.add(todo); - _todoRepository.saveTodos(_todos); - } - - void updateTodo(Todo todo) { - final index = _todos.indexOf(todo); - if (index == -1) return; - _todos[index] = todo; - _todoRepository.saveTodos(_todos); - } - - void deleteTodo(Todo todo) { - if (_todos.remove(todo)) { - _todoRepository.saveTodos(_todos); - } - } - - void toggleAll() { - final allComplete = _todos.every((todo) => todo.complete); - - for (final todo in _todos) { - todo.complete = !allComplete; - } - _todoRepository.saveTodos(_todos); - } - - void clearCompleted() { - _todos.removeWhere((todo) => todo.complete); - _todoRepository.saveTodos(_todos); - } -} -``` -`TodosService` is a pure dart class that can be easily tested (see test folder). - ->Domain and Service layer are the core portable part of your app. It does not depend on any concrete implementation of external service and can be share a cross many UI frameworks. - -# Repository -**file:repository/todos_repository.dart** - -The `TodosRepository` implements the `ITodosRepository` and delegate to `LocalStorageRepository` for fetching todos and persisting them. -```dart -class TodosRepository implements ITodosRepository { - final KeyValueStorage localStorage; - - TodosRepository({this.localStorage}) - : _localStorageRepository = LocalStorageRepository( - localStorage: localStorage, - ); - - final LocalStorageRepository _localStorageRepository; - - @override - Future> loadTodos() async { - try { - final todoEntities = await _localStorageRepository.loadTodos(); - var todos = []; - for (var todoEntity in todoEntities) { - todos.add( - Todo.fromJson(todoEntity.toJson()), - ); - } - return todos; - } catch (e) { - throw PersistanceException('There is a problem in loading todos : $e'); - } - } - - @override - Future saveTodos(List todos) { - try { - var todosEntities = []; - for (var todo in todos) { - todosEntities.add(TodoEntity.fromJson(todo.toJson())); - } - - return _localStorageRepository.saveTodos(todosEntities); - } catch (e) { - throw PersistanceException('There is a problem in saving todos : $e'); - } - } -} -``` - -## UI - -**file:ui/main.dart** - -```dart -void main() async { - WidgetsFlutterBinding.ensureInitialized(); - - runApp( - StatesRebuilderApp( - repository: TodosRepository( - localStorage: KeyValueStorage( - 'states_rebuilder', - FlutterKeyValueStore(await SharedPreferences.getInstance()), - )), - ), - ); -} -``` -**file:ui/app.dart** - -```dart - -class StatesRebuilderApp extends StatelessWidget { - final TodosRepository repository; - - const StatesRebuilderApp({Key key, this.repository}) : super(key: key); - - @override - Widget build(BuildContext context) { - //Injecting the TodoService globally before MaterialApp widget. - //It will be available throughout all the widget tree even after navigation. - return Injector( - inject: [Inject(() => TodosService(repository))], - builder: (_) => MaterialApp( - title: StatesRebuilderLocalizations().appTitle, - theme: ArchSampleTheme.theme, - localizationsDelegates: [ - ArchSampleLocalizationsDelegate(), - StatesRebuilderLocalizationsDelegate(), - ], - routes: { - ArchSampleRoutes.home: (context) => HomeScreen(), - ArchSampleRoutes.addTodo: (context) => AddEditPage(), - }, - ), - ); - } -} -``` - -**The home screen** -**file:ui/pages/home_screen/home_screen.dart** - -```dart -class HomeScreen extends StatefulWidget { - HomeScreen({Key key}) : super(key: key ?? ArchSampleKeys.homeScreen); - - @override - _HomeScreenState createState() => _HomeScreenState(); -} - -class _HomeScreenState extends State { - // Here we use a StatefulWidget to store the _activeTab state which is is private to this class - // In fact, with states_rebuilder, we refer to StatefulWidgets in two cases: - // 1. To caches UI related state of a widget, ex: the state of Taps, Selector, Checkbox, DropdownButton , ... - // 2. For local private variable only used inside the widget. - AppTab _activeTab = AppTab.todos; - @override - Widget build(BuildContext context) { - //Get the reactive model of TodosService and subscribe the HomeScreen to it using the context - //In the context of Observable pattern: todoServiceRM is the observable and HomeScreen is the observer. - //and setState is used for notification (see later) - final todosServiceRM = - Injector.getAsReactive(context: context); - - return Scaffold( - appBar: AppBar( - title: Text(StatesRebuilderLocalizations.of(context).appTitle), - actions: [ - //see file:ui/pages/home_screen/filter_button.dart - FilterButton(isActive: _activeTab == AppTab.todos), - //see file:ui/pages/home_screen/extra_action_button.dart - ExtraActionsButton(), - ], - ), - - body: StateBuilder( - //Get reactive model of TodosService and subscribe this StateBuilder to it. - models: [Injector.getAsReactive()], - initState: (_, todosServiceRM) { - //mutate the state by calling loadTodos and notify observers. - return todosServiceRM.setState((s) => s.loadTodos()); - }, - builder: (_, todosServiceRM) { - //TodoList : see file:ui/pages/home_screen/todo_list.dart - //StatsCounter : see file:ui/pages/home_screen/stats_counter.dart - return _activeTab == AppTab.todos ? TodoList() : StatsCounter(); - }, - ), - floatingActionButton: FloatingActionButton( - key: ArchSampleKeys.addTodoFab, - onPressed: () { - Navigator.pushNamed(context, ArchSampleRoutes.addTodo); - }, - child: Icon(Icons.add), - tooltip: ArchSampleLocalizations.of(context).addTodo, - ), - bottomNavigationBar: BottomNavigationBar( - key: ArchSampleKeys.tabs, - currentIndex: AppTab.values.indexOf(_activeTab), - onTap: (index) { - //For this particular case the only mutated variable is _activeTab which is local private to the widget - //we can simply use setState of flutter: - setState(() => _activeTab = AppTab.values[index]); - }, - items: AppTab.values.map( - (tab) { - return BottomNavigationBarItem( - icon: Icon( - tab == AppTab.todos ? Icons.list : Icons.show_chart, - key: tab == AppTab.stats - ? ArchSampleKeys.statsTab - : ArchSampleKeys.todoTab, - ), - title: Text( - tab == AppTab.stats - ? ArchSampleLocalizations.of(context).stats - : ArchSampleLocalizations.of(context).todos, - ), - ); - }, - ).toList(), - ), - ); - } -} -``` - -**The home screen** -**file:ui/pages/home_screen/filter_button.dart** - -```dart -class FilterButton extends StatelessWidget { - FilterButton({this.isActive, Key key}) : super(key: key); - final bool isActive; - - @override - Widget build(BuildContext context) { - //get the reactive model of TodosService and subscribe this widget as observer. - final todosServiceRM = Injector.getAsReactive(context: context); - - final defaultStyle = Theme.of(context).textTheme.body1; - final activeStyle = Theme.of(context) - .textTheme - .body1 - .copyWith(color: Theme.of(context).accentColor); - final button = _Button( - onSelected: (filter) { - //mutate the state of the activeFilter and notify observers - todosServiceRM.setState((s) => s.activeFilter = filter); - }, - //get the value of activeFiler - activeFilter: todosServiceRM.state.activeFilter, - activeStyle: activeStyle, - defaultStyle: defaultStyle, - ); - - return AnimatedOpacity( - opacity: isActive ? 1.0 : 0.0, - duration: Duration(milliseconds: 150), - child: isActive ? button : IgnorePointer(child: button), - ); - } -} -``` -**The home screen** -**file:ui/pages/home_screen/extra_action_button.dart** - -```dart -class ExtraActionsButton extends StatelessWidget { - ExtraActionsButton({Key key}) : super(key: key); - //get the reactive model of TodosService without subscription. - final todosServiceRM = Injector.getAsReactive(); - - @override - Widget build(BuildContext context) { - return PopupMenuButton( - key: ArchSampleKeys.extraActionsButton, - onSelected: (action) { - if (action == ExtraAction.toggleAllComplete) { - //mutate the state by calling toggleAll and notify observers (HomeScreen) - todosServiceRM.setState((s) => s.toggleAll()); - } else if (action == ExtraAction.clearCompleted) { - //mutate the state by calling clearCompleted and notify observers (HomeScreen) - todosServiceRM.setState((s) => s.clearCompleted()); - } - }, - itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - key: ArchSampleKeys.toggleAll, - value: ExtraAction.toggleAllComplete, - child: Text(todosServiceRM.state.allComplete - ? ArchSampleLocalizations.of(context).markAllIncomplete - : ArchSampleLocalizations.of(context).markAllComplete), - ), - PopupMenuItem( - key: ArchSampleKeys.clearCompleted, - value: ExtraAction.clearCompleted, - child: Text(ArchSampleLocalizations.of(context).clearCompleted), - ), - ], - ); - } -} -``` -**The home screen** -**file:ui/pages/home_screen/todo_list.dart** - -```dart -class TodoList extends StatelessWidget { - TodoList() : super(key: ArchSampleKeys.todoList); - //Get reactive model of TodosService without subscription. - final todosServiceRM = Injector.getAsReactive(); - @override - Widget build(BuildContext context) { - //use of whenConnectionState to go through all the possible status of the state - return todosServiceRM.whenConnectionState( - onIdle: () => Container(), - onWaiting: () => Center( - child: CircularProgressIndicator( - key: ArchSampleKeys.todosLoading, - ), - ), - onData: (todosService) { - return ListView.builder( - key: ArchSampleKeys.todoList, - itemCount: todosService.todos.length, - itemBuilder: (BuildContext context, int index) { - final todo = todosService.todos[index]; - return TodoItem(todo: todo); - }, - ); - }, - onError: (error) { - //delegate to the ErrorHandler.getErrorMessage to get the error message - return Center(child: Text(ErrorHandler.getErrorMessage(error))); - }, - ); - } -} -``` - -**The home screen** -**file:ui/pages/home_screen/todo_item.dart** +* Service layer defines a set of interfaces, outer layer (data_source and infrastructure) must implement. -```dart -class TodoItem extends StatelessWidget { - final Todo todo; +* Service objects must throw exceptions defined in the exception folder in the service layer: - TodoItem({ - Key key, - @required this.todo, - }) : super(key: key); - - //get the reactive model of TodosService without subscription. - final todosServiceRM = Injector.getAsReactive(); - @override - Widget build(BuildContext context) { - return Dismissible( - key: ArchSampleKeys.todoItem(todo.id), - onDismissed: (direction) { - //Delegate to HelperMethods.removeTodo to remove todo and show snackbar. - HelperMethods.removeTodo(todo); - }, - child: ListTile( - onTap: () { - Navigator.of(context).push( - MaterialPageRoute( - builder: (_) { - return DetailScreen(todo); - }, - ), - ); - }, - leading: Checkbox( - key: ArchSampleKeys.todoItemCheckbox(todo.id), - value: todo.complete, - onChanged: (complete) { - todo.complete = !todo.complete; - //mutate the state by calling updateTodo and notify observers (HomeScreen, StateBuilder) - todosServiceRM.setState((s) => s.updateTodo(todo)); - }, - ), - title: Text( - todo.task, - key: ArchSampleKeys.todoItemTask(todo.id), - style: Theme.of(context).textTheme.title, - ), - subtitle: Text( - todo.note, - key: ArchSampleKeys.todoItemNote(todo.id), - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: Theme.of(context).textTheme.subhead, - ), - ), - ); - } -} -``` -**The home screen** -**file:ui/pages/home_screen/stats_counter.dart** -```dart -class StatsCounter extends StatelessWidget { - //get the registered TodosService instance using Injector.get. - //because we do not need reactivity in this widget. - final todosService = Injector.get(); +>Domain and Service layer are the core portable part of your app. It does not depend on any concrete implementation of external service (data_source) and can be share a cross many UI frameworks. - StatsCounter() : super(key: ArchSampleKeys.statsCounter); - @override - Widget build(BuildContext context) { - return Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: EdgeInsets.only(bottom: 8.0), - child: Text( - ArchSampleLocalizations.of(context).completedTodos, - style: Theme.of(context).textTheme.title, - ), - ), - Padding( - padding: EdgeInsets.only(bottom: 24.0), - child: Text( - '${todosService.numCompleted}', - key: ArchSampleKeys.statsNumCompleted, - style: Theme.of(context).textTheme.subhead, - ), - ), - Padding( - padding: EdgeInsets.only(bottom: 8.0), - child: Text( - ArchSampleLocalizations.of(context).activeTodos, - style: Theme.of(context).textTheme.title, - ), - ), - Padding( - padding: EdgeInsets.only(bottom: 24.0), - child: Text( - '${todosService.numCompleted}', - key: ArchSampleKeys.statsNumActive, - style: Theme.of(context).textTheme.subhead, - ), - ) - ], - ), - ); - } -} -``` +# key concepts of states_rebuilder -The next screen is the add edit screen -**The add edit screen** -**file:ui/pages/add_edit_screen/add_edit_screen.dart** +1. With states_rebuilder you can achieve a clear separation between UI and business logic; +2. Your business logic is made up of pure dart classes without the need to refer to external packages or frameworks (NO extension, NO notification, NO annotation); ```dart -class AddEditPage extends StatefulWidget { - final Todo todo; - - AddEditPage({ - Key key, - this.todo, - }) : super(key: key ?? ArchSampleKeys.addTodoScreen); - - @override - _AddEditPageState createState() => _AddEditPageState(); -} - -class _AddEditPageState extends State { - static final GlobalKey formKey = GlobalKey(); - // Here we use a StatefulWidget to store local fields _task and _note - // In fact, with states_rebuilder, we refer to StatefulWidgets in two cases: - // 1. To caches UI related state of a widget, ex: the state of Taps, Selector, Checkbox, DropdownButton , ... - // 2. For local variable only used inside the widget - String _task; - String _note; - bool get isEditing => widget.todo != null; - - //get the reactive model of TodosService without subscription. - final todosServiceRM = Injector.getAsReactive(); - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text(isEditing - ? ArchSampleLocalizations.of(context).editTodo - : ArchSampleLocalizations.of(context).addTodo), - ), - body: Padding( - padding: EdgeInsets.all(16.0), - child: Form( - key: formKey, - autovalidate: false, - onWillPop: () { - return Future(() => true); - }, - child: ListView( - children: [ - TextFormField( - initialValue: widget.todo != null ? widget.todo.task : '', - key: ArchSampleKeys.taskField, - autofocus: isEditing ? false : true, - style: Theme.of(context).textTheme.headline, - decoration: InputDecoration( - hintText: ArchSampleLocalizations.of(context).newTodoHint), - validator: (val) => val.trim().isEmpty - ? ArchSampleLocalizations.of(context).emptyTodoError - : null, - onSaved: (value) => _task = value, - ), - TextFormField( - initialValue: widget.todo != null ? widget.todo.note : '', - key: ArchSampleKeys.noteField, - maxLines: 10, - style: Theme.of(context).textTheme.subhead, - decoration: InputDecoration( - hintText: ArchSampleLocalizations.of(context).notesHint, - ), - onSaved: (value) => _note = value, - ) - ], - ), - ), - ), - floatingActionButton: FloatingActionButton( - key: - isEditing ? ArchSampleKeys.saveTodoFab : ArchSampleKeys.saveNewTodo, - tooltip: isEditing - ? ArchSampleLocalizations.of(context).saveChanges - : ArchSampleLocalizations.of(context).addTodo, - child: Icon(isEditing ? Icons.check : Icons.add), - onPressed: () { - final form = formKey.currentState; - if (form.validate()) { - form.save(); - - if (isEditing) { - widget.todo - ..task = _task - ..note = _note; - //mutate the state by calling updateTodo and notify observers (HomeScreen) - todosServiceRM.setState((s) => s.updateTodo(widget.todo)); - } else { - //mutate the state by calling addTodo and notify observers (HomeScreen) - todosServiceRM.setState( - (s) => s.addTodo(Todo( - _task, - note: _note, - )), - ); - } - - Navigator.pop(context); - } - }, - ), - ); - } +class Foo { + //Vanilla dart class + //NO inheritance form external libraries + //NO notification + //No annotation } ``` -The last screen is the detail screen -**The detail screen** -**file:ui/pages/detail_screen/detail_screen.dart** - +3. You make a singleton of your logical class available to the widget tree by injecting it using the Injector widget. ```dart -class DetailScreen extends StatelessWidget { - DetailScreen(this.todo) : super(key: ArchSampleKeys.todoDetailsScreen); - final Todo todo; - - //get the reactive model of TodosService without subscription. - final todosServiceRM = Injector.getAsReactive(); - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text(ArchSampleLocalizations.of(context).todoDetails), - actions: [ - IconButton( - key: ArchSampleKeys.deleteTodoButton, - tooltip: ArchSampleLocalizations.of(context).deleteTodo, - icon: Icon(Icons.delete), - onPressed: () { - //mutate the state by calling deleteTodo and notify observers (HomeScreen) - todosServiceRM.setState((s) => s.deleteTodo(todo)); - Navigator.pop(context, todo); - //Delegate to HelperMethods.removeTodo method to remove todo and display snackbar - HelperMethods.removeTodo(todo); - }, - ) - ], - ), - body: Padding( - padding: EdgeInsets.all(16.0), - child: ListView( - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only(right: 8.0), - child: Checkbox( - value: todo.complete, - key: ArchSampleKeys.detailsTodoItemCheckbox, - onChanged: (complete) { - todo.complete = !todo.complete; - //mutate the state by calling updateTodo and notify observers (HomeScreen) - todosServiceRM.setState((s) => s.updateTodo(todo)); - }, - ), - ), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only( - top: 8.0, - bottom: 16.0, - ), - child: Text( - todo.task, - key: ArchSampleKeys.detailsTodoItemTask, - style: Theme.of(context).textTheme.headline, - ), - ), - Text( - todo.note, - key: ArchSampleKeys.detailsTodoItemNote, - style: Theme.of(context).textTheme.subhead, - ) - ], - ), - ), - ], - ), - ], - ), - ), - floatingActionButton: FloatingActionButton( - tooltip: ArchSampleLocalizations.of(context).editTodo, - child: Icon(Icons.edit), - key: ArchSampleKeys.editTodoFab, - onPressed: () { - Navigator.of(context).push( - MaterialPageRoute( - builder: (context) { - return AddEditPage( - key: ArchSampleKeys.editTodoScreen, - todo: todo, - ); - }, - ), - ); - }, - ), - ); - } -} +Injector( + inject : [Inject(()=>Foo())] + builder : (context) => MyChildWidget() +) ``` -Error handling center: - -**file:ui/exceptions/error_handler.dart** - +Injector is a StatefulWidget. It can be used any where in the widget tree. +4. From any child widget of the Injector widget, you can get the registered raw singleton using the static method `Injector.get()` method; ```dart -class ErrorHandler { - static String getErrorMessage(dynamic error) { - if (error is ValidationException) { - return error.message; - } - - if (error is PersistanceException) { - return error.message; - } - - throw (error); - } -} +final Foo foo = Injector.get(); ``` - -common folder - -**file:ui/common/enums.dart** - +5. To get the registered singleton wrapped with a reactive environment, you use the static method +`Injector.getAsReactive()` method: ```dart -enum AppTab { todos, stats } -enum ExtraAction { toggleAllComplete, clearCompleted } +final ReactiveModel foo = Injector.getAsReactive(); ``` -**file:ui/common/helper_methods.dart** +In fact, for each injected model, states_rebuilder registers two singletons: +- The raw singleton of the model +- The reactive singleton of the model which is the raw singleton wrapped with a reactive environment: +The reactive environment adds getters, fields, and methods to modify the state, track the state of the reactive environment and notify the widgets which are subscribed to it. +6. To subscribe a widget as observer, we use `StateBuilder` widget or define the context parameter in `Injector.getAsReactive(context:context)`. +7. The `setState` method is where actions that mutate the state and send notifications are defined. +What happens is that from the user interface, we use the `setState` method to mutate the state and notify subscribed widgets after the state mutation. In the `setState`, we can define a callback for all the side effects to be executed after the state change and just before rebuilding subscribed widgets using `onSetState`, `onData` and `onError` parameter(or `onRebuild` so that the code executes after the reconstruction). From inside `onSetState`, we can call another `setState` to mutate the state and notify the user interface with another call `onSetState` (`onRebuild`) and so on … -```dart -class HelperMethods { - //the removeTodo is used in many places in the app. It removes the provided todo and shows a snackBar - static void removeTodo(Todo todo) { - final todosServiceRM = Injector.getAsReactive(); - todosServiceRM.setState( - (s) => s.deleteTodo(todo), - onSetState: (context) { - Scaffold.of(context).showSnackBar( - SnackBar( - key: ArchSampleKeys.snackbar, - duration: Duration(seconds: 2), - content: Text( - ArchSampleLocalizations.of(context).todoDeleted(todo.task), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - action: SnackBarAction( - label: ArchSampleLocalizations.of(context).undo, - onPressed: () { - todosServiceRM.setState((s) => s.addTodo(todo)); - }, - ), - ), - ); - }, - ); - } -} -``` +For more information and tutorials on how states_rebuilder work please check out the [official documentation](https://github.com/GIfatahTH/states_rebuilder). \ No newline at end of file diff --git a/states_rebuilder/lib/app.dart b/states_rebuilder/lib/app.dart index a2586adf..83ea8fcb 100644 --- a/states_rebuilder/lib/app.dart +++ b/states_rebuilder/lib/app.dart @@ -1,19 +1,21 @@ import 'package:flutter/material.dart'; import 'package:states_rebuilder/states_rebuilder.dart'; import 'package:todos_app_core/todos_app_core.dart'; +import 'data_source/todo_repository.dart'; import 'localization.dart'; -import 'repository/todo_repository.dart'; import 'service/todos_service.dart'; import 'ui/pages/add_edit_screen.dart/add_edit_screen.dart'; import 'ui/pages/home_screen/home_screen.dart'; class StatesRebuilderApp extends StatelessWidget { - final TodosRepository repository; + final StatesBuilderTodosRepository repository; const StatesRebuilderApp({Key key, this.repository}) : super(key: key); @override Widget build(BuildContext context) { + //Injecting the TodoService globally before MaterialApp widget. + //It will be available throughout all the widget tree even after navigation. return Injector( inject: [Inject(() => TodosService(repository))], builder: (_) => MaterialApp( diff --git a/states_rebuilder/lib/repository/todo_repository.dart b/states_rebuilder/lib/data_source/todo_repository.dart similarity index 81% rename from states_rebuilder/lib/repository/todo_repository.dart rename to states_rebuilder/lib/data_source/todo_repository.dart index 775d0345..d215055e 100644 --- a/states_rebuilder/lib/repository/todo_repository.dart +++ b/states_rebuilder/lib/data_source/todo_repository.dart @@ -1,15 +1,14 @@ import 'package:todos_repository_core/src/todo_entity.dart'; -import 'package:todos_repository_core/src/todos_repository.dart'; +import 'package:todos_repository_core/src/todos_repository.dart' as core; import '../domain/entities/todo.dart'; import '../service/exceptions/persistance_exception.dart'; import '../service/interfaces/i_todo_repository.dart'; -class StatesRebuilderTodosRepository implements ITodosRepository { +class StatesBuilderTodosRepository implements ITodosRepository { + final core.TodosRepository _todosRepository; - TodosRepository _todosRepository; - - StatesRebuilderTodosRepository({TodosRepository todosRepository}) - : _todosRepository =todosRepository; + StatesBuilderTodosRepository({core.TodosRepository todosRepository}) + : _todosRepository = todosRepository; @override Future> loadTodos() async { diff --git a/states_rebuilder/lib/domain/entities/todo.dart b/states_rebuilder/lib/domain/entities/todo.dart index 791a2e67..c149058b 100644 --- a/states_rebuilder/lib/domain/entities/todo.dart +++ b/states_rebuilder/lib/domain/entities/todo.dart @@ -20,6 +20,7 @@ class Todo { complete = map['complete'] as bool; } + // toJson is called just before persistance. Map toJson() { _validation(); return { @@ -32,6 +33,7 @@ class Todo { void _validation() { if (id == null) { + // Custom defined error classes throw ValidationException('This todo has no ID!'); } if (task == null || task.isEmpty) { diff --git a/states_rebuilder/lib/main.dart b/states_rebuilder/lib/main.dart index c899ae87..63784241 100644 --- a/states_rebuilder/lib/main.dart +++ b/states_rebuilder/lib/main.dart @@ -8,18 +8,21 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; import 'app.dart'; -import 'repository/todo_repository.dart'; +import 'data_source/todo_repository.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); runApp( StatesRebuilderApp( - repository: StatesRebuilderTodosRepository( - todosRepository: KeyValueStorage( - 'states_rebuilder', - FlutterKeyValueStore(await SharedPreferences.getInstance()), - )), + repository: StatesBuilderTodosRepository( + todosRepository: LocalStorageRepository( + localStorage: KeyValueStorage( + 'states_rebuilder', + FlutterKeyValueStore(await SharedPreferences.getInstance()), + ), + ), + ), ), ); } diff --git a/states_rebuilder/lib/main_web.dart b/states_rebuilder/lib/main_web.dart index 67ad0673..97eae9a0 100644 --- a/states_rebuilder/lib/main_web.dart +++ b/states_rebuilder/lib/main_web.dart @@ -9,18 +9,20 @@ import 'package:key_value_store_web/key_value_store_web.dart'; import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; import 'app.dart'; -import 'repository/todo_repository.dart'; +import 'data_source/todo_repository.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); - runApp( StatesRebuilderApp( - repository: StatesRebuilderTodosRepository( - todosRepository: KeyValueStorage( - 'states_rebuilder', - WebKeyValueStore(window.localStorage), - )), + repository: StatesBuilderTodosRepository( + todosRepository: LocalStorageRepository( + localStorage: KeyValueStorage( + 'states_rebuilder', + WebKeyValueStore(window.localStorage), + ), + ), + ), ), ); } diff --git a/states_rebuilder/lib/service/common/enums.dart b/states_rebuilder/lib/service/common/enums.dart index a47beca1..d2d209fc 100644 --- a/states_rebuilder/lib/service/common/enums.dart +++ b/states_rebuilder/lib/service/common/enums.dart @@ -1 +1,3 @@ enum VisibilityFilter { all, active, completed } + +//NOTE that `AppTab` and `ExtraAction` are not used here. They will be declared in the UI layer. diff --git a/states_rebuilder/lib/service/todos_service.dart b/states_rebuilder/lib/service/todos_service.dart index 0aeaedca..49d80081 100644 --- a/states_rebuilder/lib/service/todos_service.dart +++ b/states_rebuilder/lib/service/todos_service.dart @@ -3,18 +3,21 @@ import 'package:states_rebuilder_sample/domain/entities/todo.dart'; import 'common/enums.dart'; import 'interfaces/i_todo_repository.dart'; +//`TodosService` is a pure dart class that can be easily tested (see test folder). + class TodosService { + //Constructor injection of the ITodoRepository abstract class. TodosService(ITodosRepository todoRepository) : _todoRepository = todoRepository; + //private fields final ITodosRepository _todoRepository; - List _todos = const []; - List get _completedTodos => _todos.where((t) => t.complete).toList(); - List get _activeTodos => _todos.where((t) => !t.complete).toList(); + //public field VisibilityFilter activeFilter = VisibilityFilter.all; + //getters List get todos { if (activeFilter == VisibilityFilter.active) { return _activeTodos; @@ -25,10 +28,13 @@ class TodosService { return _todos; } + List get _completedTodos => _todos.where((t) => t.complete).toList(); + List get _activeTodos => _todos.where((t) => !t.complete).toList(); int get numCompleted => _completedTodos.length; int get numActive => _activeTodos.length; bool get allComplete => _activeTodos.isEmpty; + //methods for CRUD void loadTodos() async { _todos = await _todoRepository.loadTodos(); } diff --git a/states_rebuilder/lib/ui/pages/detail_screen/detail_screen.dart b/states_rebuilder/lib/ui/pages/detail_screen/detail_screen.dart index 736db532..ea3f244b 100644 --- a/states_rebuilder/lib/ui/pages/detail_screen/detail_screen.dart +++ b/states_rebuilder/lib/ui/pages/detail_screen/detail_screen.dart @@ -13,7 +13,7 @@ import 'package:todos_app_core/todos_app_core.dart'; class DetailScreen extends StatelessWidget { DetailScreen(this.todo) : super(key: ArchSampleKeys.todoDetailsScreen); final Todo todo; - + //use Injector.get because DetailScreen need not be reactive final todosService = Injector.get(); @override Widget build(BuildContext context) { @@ -26,8 +26,13 @@ class DetailScreen extends StatelessWidget { tooltip: ArchSampleLocalizations.of(context).deleteTodo, icon: Icon(Icons.delete), onPressed: () { + //This is one particularity of states_rebuilder + //We have the ability to call a method form an injected model without notify observers + //This can be done by consuming the injected model using Injector.get and call the method we want. todosService.deleteTodo(todo); + //When navigating back to home page, rebuild is granted by flutter framework. Navigator.pop(context, todo); + //delegate to the static method HelperMethods.removeTodo to remove todo HelperMethods.removeTodo(todo); }, ) @@ -43,12 +48,14 @@ class DetailScreen extends StatelessWidget { Padding( padding: EdgeInsets.only(right: 8.0), child: StateBuilder( + //getting a new ReactiveModel of TodosService to optimize rebuild of widgets builder: (_, todosServiceRM) { return Checkbox( value: todo.complete, key: ArchSampleKeys.detailsTodoItemCheckbox, onChanged: (complete) { todo.complete = !todo.complete; + //only this checkBox will rebuild todosServiceRM.setState((s) => s.updateTodo(todo)); }, ); diff --git a/states_rebuilder/lib/ui/pages/home_screen/filter_button.dart b/states_rebuilder/lib/ui/pages/home_screen/filter_button.dart index 1a2cdf83..0687f5af 100644 --- a/states_rebuilder/lib/ui/pages/home_screen/filter_button.dart +++ b/states_rebuilder/lib/ui/pages/home_screen/filter_button.dart @@ -15,6 +15,7 @@ class FilterButton extends StatelessWidget { @override Widget build(BuildContext context) { + //context is used to register FilterButton as observer in todosServiceRM final todosServiceRM = Injector.getAsReactive(context: context); diff --git a/states_rebuilder/lib/ui/pages/home_screen/home_screen.dart b/states_rebuilder/lib/ui/pages/home_screen/home_screen.dart index 49e75e21..69655b82 100644 --- a/states_rebuilder/lib/ui/pages/home_screen/home_screen.dart +++ b/states_rebuilder/lib/ui/pages/home_screen/home_screen.dart @@ -34,6 +34,7 @@ class _HomeScreenState extends State { body: StateBuilder( models: [Injector.getAsReactive()], initState: (_, todosServiceRM) { + //update state and notify observer return todosServiceRM.setState((s) => s.loadTodos()); }, builder: (_, todosServiceRM) { @@ -52,6 +53,7 @@ class _HomeScreenState extends State { key: ArchSampleKeys.tabs, currentIndex: AppTab.values.indexOf(_activeTab), onTap: (index) { + //mutate the state of the private field _activeTab and use Flutter setState because setState(() => _activeTab = AppTab.values[index]); }, items: AppTab.values.map( diff --git a/states_rebuilder/lib/ui/pages/home_screen/stats_counter.dart b/states_rebuilder/lib/ui/pages/home_screen/stats_counter.dart index e7875276..1b134031 100644 --- a/states_rebuilder/lib/ui/pages/home_screen/stats_counter.dart +++ b/states_rebuilder/lib/ui/pages/home_screen/stats_counter.dart @@ -9,6 +9,7 @@ import 'package:states_rebuilder_sample/service/todos_service.dart'; import 'package:todos_app_core/todos_app_core.dart'; class StatsCounter extends StatelessWidget { + //use Injector.get, because this class need not to be reactive and its rebuild is ensured by its parent. final todosService = Injector.get(); StatsCounter() : super(key: ArchSampleKeys.statsCounter); diff --git a/states_rebuilder/lib/ui/pages/home_screen/todo_item.dart b/states_rebuilder/lib/ui/pages/home_screen/todo_item.dart index 5f018203..4091623d 100644 --- a/states_rebuilder/lib/ui/pages/home_screen/todo_item.dart +++ b/states_rebuilder/lib/ui/pages/home_screen/todo_item.dart @@ -26,6 +26,7 @@ class TodoItem extends StatelessWidget { return Dismissible( key: ArchSampleKeys.todoItem(todo.id), onDismissed: (direction) { + //delegate removing todo to the static method HelperMethods.removeTodo. HelperMethods.removeTodo(todo); }, child: ListTile( From abdd8bdec012c52506c21629adeb63450211ef62 Mon Sep 17 00:00:00 2001 From: MELLATI Fatah Date: Mon, 13 Jan 2020 21:47:14 +0100 Subject: [PATCH 54/77] add comments --- states_rebuilder/lib/ui/pages/home_screen/todo_list.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/states_rebuilder/lib/ui/pages/home_screen/todo_list.dart b/states_rebuilder/lib/ui/pages/home_screen/todo_list.dart index 00c5915d..449b1ef1 100644 --- a/states_rebuilder/lib/ui/pages/home_screen/todo_list.dart +++ b/states_rebuilder/lib/ui/pages/home_screen/todo_list.dart @@ -15,6 +15,7 @@ class TodoList extends StatelessWidget { final todosServiceRM = Injector.getAsReactive(); @override Widget build(BuildContext context) { + //use whenConnectionState method to go through all the possible status of the ReactiveModel return todosServiceRM.whenConnectionState( onIdle: () => Container(), onWaiting: () => Center( @@ -33,6 +34,7 @@ class TodoList extends StatelessWidget { ); }, onError: (error) { + //Delegate error handling to the static method ErrorHandler.getErrorMessage return Center(child: Text(ErrorHandler.getErrorMessage(error))); }, ); From 9a5c7e573a428629cf71463081f561570e46a8c5 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Tue, 14 Jan 2020 13:59:37 +0100 Subject: [PATCH 55/77] Add codemagic config and links to states_rebuilder --- README.md | 2 +- codemagic.yaml | 309 +++++++++++++++++++++++++++++++++++++++++++++++++ index.html | 9 +- 3 files changed, 315 insertions(+), 5 deletions(-) create mode 100644 codemagic.yaml diff --git a/README.md b/README.md index 51443c5b..fe2edd8f 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ a simple UI. - [Redux Example](redux) ([Web Demo](https://fas_redux.codemagic.app)) - Uses the [Redux](https://pub.dartlang.org/packages/redux) library to manage app state and update Widgets - ["Simple" BLoC Example](simple_bloc_flutter) ([Web Demo](https://fas_simple_bloc.codemagic.app)) - Similar to the BLoC pattern, but uses Functions for Inputs and Streams for Outputs. Results in far less code compared to standard BLoC. - [MVI Example](mvi_flutter) ([Web Demo](https://fas_mvi.codemagic.app)) - Uses the concepts from Cycle.JS and applies them to Flutter. +- [states_rebuilder Example](states_rebuilder) ([Web Demo](https://fas_states_rebuilder.codemagic.app)) - Uses the [states_rebuilder](https://pub.dev/packages/states_rebuilder) library to manage app state and update Widgets. - [built_redux Example](built_redux) - Uses the [built_redux](https://pub.dartlang.org/packages/built_redux) library to enforce immutability and manage app state - [scoped_model Example](scoped_model) - Uses the [scoped_model](https://pub.dartlang.org/packages/scoped_model) library to hold app state and notify Widgets of Updates - [Firestore Redux Example](firestore_redux) - Uses the [Redux](https://pub.dartlang.org/packages/redux) library to manage app state and update Widgets and @@ -46,7 +47,6 @@ a simple UI. - [MVU Example](mvu) - Uses the [dartea](https://pub.dartlang.org/packages/dartea) library to manage app state and update Widgets. - [MVC Example](mvc) - Uses the [MVC](https://pub.dartlang.org/packages/mvc_pattern) library to implement the traditional MVC design pattern. - [Frideos Example](frideos_library) - Uses the [Frideos](https://pub.dartlang.org/packages/frideos) library to manage app state and update widgets using streams. -- [states_rebuilder Example](states_rebuilder) - Uses the [states_rebuilder](https://pub.dev/packages/states_rebuilder) library to manage app state and update Widgets. ### Supporting Code diff --git a/codemagic.yaml b/codemagic.yaml new file mode 100644 index 00000000..45904129 --- /dev/null +++ b/codemagic.yaml @@ -0,0 +1,309 @@ +# Automatically generated on 2020-01-14 UTC from https://codemagic.io/app/5e193a8c48f5bc001d576a59/settings +# Note that this configuration is not an exact match to UI settings. Review and adjust as necessary. + +workflows: + mobx: + name: Mobx + environment: + flutter: beta + triggering: + events: + - push + branch_patterns: + - pattern: master + include: true + source: true + scripts: + - flutter emulators --launch apple_ios_simulator + - cd mobx && flutter packages pub get + - cd mobx && flutter config --enable-web + - cd mobx && flutter analyze + - cd mobx && flutter drive --target=test_driver/todo_app.dart + - cd mobx && flutter test + - | + # build web + cd mobx + flutter build web --release -t lib/main_web.dart + cd build/web + 7z a -r ../web.zip ./* + artifacts: + - mobx/build/web.zip + - mobx/flutter_drive.log + publishing: + email: + recipients: + - brian@brianegan.com + mvi: + name: mvi + environment: + flutter: beta + triggering: + events: + - push + branch_patterns: + - pattern: master + include: true + source: true + scripts: + - flutter emulators --launch apple_ios_simulator + - cd mvi_flutter && flutter packages pub get + - cd mvi_flutter && flutter config --enable-web + - cd mvi_flutter && flutter drive --target=test_driver/todo_app.dart + - cd mvi_flutter && flutter test + - | + # build web + cd mvi_flutter + flutter build web --release -t lib/main_web.dart + cd build/web + 7z a -r ../web.zip ./* + artifacts: + - mvi_flutter/build/web.zip + - mvi_flutter/flutter_drive.log + publishing: + email: + recipients: + - brian@brianegan.com + bloc_library: + name: bloc_library + environment: + flutter: beta + triggering: + events: + - push + branch_patterns: + - pattern: master + include: true + source: true + scripts: + - flutter emulators --launch apple_ios_simulator + - cd bloc_library && flutter packages pub get + - cd bloc_library && flutter config --enable-web + - cd bloc_library && flutter analyze + - cd bloc_library && flutter drive --target=test_driver/todo_app.dart + - cd bloc_library && flutter test + - | + # build web + cd bloc_library + flutter build web --release -t lib/main_web.dart + cd build/web + 7z a -r ../web.zip ./* + artifacts: + - bloc_library/build/web.zip + - bloc_library/flutter_drive.log + publishing: + email: + recipients: + - brian@brianegan.com + inherited_widget: + name: inherited_widget + environment: + flutter: beta + triggering: + events: + - push + branch_patterns: + - pattern: master + include: true + source: true + scripts: + - flutter emulators --launch apple_ios_simulator + - cd inherited_widget && flutter packages pub get + - cd inherited_widget && flutter config --enable-web + - cd inherited_widget && flutter analyze + - cd inherited_widget && flutter drive --target=test_driver/todo_app.dart + - cd inherited_widget && flutter test + - | + # build web + cd inherited_widget + flutter build web --release -t lib/main_web.dart + cd build/web + 7z a -r ../web.zip ./* + artifacts: + - inherited_widget/build/web.zip + - inherited_widget/flutter_drive.log + publishing: + email: + recipients: + - brian@brianegan.com + simple_bloc: + name: simple_bloc + environment: + flutter: beta + triggering: + events: + - push + branch_patterns: + - pattern: master + include: true + source: true + scripts: + - flutter emulators --launch apple_ios_simulator + - cd simple_bloc_flutter && flutter packages pub get + - cd simple_bloc_flutter && flutter config --enable-web + - cd simple_bloc_flutter && flutter drive --target=test_driver/todo_app.dart + - | + # build web + cd simple_bloc_flutter + flutter build web --release -t lib/main_web.dart + cd build/web + 7z a -r ../web.zip ./* + artifacts: + - simple_bloc_flutter/build/web.zip + - simple_bloc_flutter/flutter_drive.log + publishing: + email: + recipients: + - brian@brianegan.com + bloc_flutter: + name: bloc_flutter + environment: + flutter: beta + triggering: + events: + - push + branch_patterns: + - pattern: master + include: true + source: true + scripts: + - flutter emulators --launch apple_ios_simulator + - cd bloc_flutter && flutter packages pub get + - cd bloc_flutter && flutter config --enable-web + - cd bloc_flutter && flutter drive --target=test_driver/todo_app.dart + - | + # build web + cd bloc_flutter + flutter build web --release -t lib/main_web.dart + cd build/web + 7z a -r ../web.zip ./* + artifacts: + - bloc_flutter/build/web.zip + - bloc_flutter/flutter_drive.log + publishing: + email: + recipients: + - brian@brianegan.com + vanilla: + name: vanilla + environment: + flutter: beta + triggering: + events: + - push + branch_patterns: + - pattern: master + include: true + source: true + scripts: + - flutter emulators --launch apple_ios_simulator + - cd vanilla && flutter packages pub get + - cd vanilla && flutter config --enable-web + - cd vanilla && flutter analyze + - cd vanilla && flutter drive --target=test_driver/todo_app.dart + - cd vanilla && flutter test + - | + # build web + cd vanilla + flutter build web --release -t lib/main_web.dart + cd build/web + 7z a -r ../web.zip ./* + artifacts: + - vanilla/build/web.zip + - vanilla/flutter_drive.log + publishing: + email: + recipients: + - brian@brianegan.com + redux: + name: redux + environment: + flutter: beta + triggering: + events: + - push + branch_patterns: + - pattern: master + include: true + source: true + scripts: + - flutter emulators --launch apple_ios_simulator + - cd redux && flutter packages pub get + - cd redux && flutter config --enable-web + - cd redux && flutter analyze + - cd redux && flutter drive --target=test_driver/todo_app.dart + - cd redux && flutter test + - | + # build web + cd redux + flutter build web --release -t lib/main_web.dart + cd build/web + 7z a -r ../web.zip ./* + artifacts: + - redux/build/web.zip + - redux/flutter_drive.log + publishing: + email: + recipients: + - brian@brianegan.com + change_notifier_provider: + name: change_notifier_provider + environment: + flutter: beta + triggering: + events: + - push + branch_patterns: + - pattern: master + include: true + source: true + scripts: + - flutter emulators --launch apple_ios_simulator + - cd change_notifier_provider && flutter packages pub get + - cd change_notifier_provider && flutter config --enable-web + - cd change_notifier_provider && flutter analyze + - cd change_notifier_provider && flutter drive --target=test_driver/todo_app.dart + - cd change_notifier_provider && flutter test + - | + # build web + cd change_notifier_provider + flutter build web --release -t lib/main_web.dart + cd build/web + 7z a -r ../web.zip ./* + artifacts: + - change_notifier_provider/build/web.zip + - change_notifier_provider/flutter_drive.log + publishing: + email: + recipients: + - brian@brianegan.com + states_rebuilder: + name: states_rebuilder + environment: + flutter: beta + triggering: + events: + - push + branch_patterns: + - pattern: master + include: true + source: true + scripts: + - flutter emulators --launch apple_ios_simulator + - cd states_rebuilder && flutter packages pub get + - cd states_rebuilder && flutter config --enable-web + - cd states_rebuilder && flutter analyze + - cd states_rebuilder && flutter drive --target=test_driver/todo_app.dart + - cd states_rebuilder && flutter test + - | + # build web + cd states_rebuilder + flutter build web --release -t lib/main_web.dart + cd build/web + 7z a -r ../web.zip ./* + artifacts: + - states_rebuilder/build/web.zip + - states_rebuilder/flutter_drive.log + publishing: + email: + recipients: + - brian@brianegan.com diff --git a/index.html b/index.html index 2ce0d4b6..7c70d8bf 100644 --- a/index.html +++ b/index.html @@ -267,6 +267,11 @@

    Samples

    href="https://github.com/brianegan/flutter_architecture_samples/tree/master/mvi_flutter">MVI Web Demo +
  • + states_rebuilder + Web Demo +
  • built_redux @@ -294,10 +299,6 @@

    Samples

    href="https://github.com/brianegan/flutter_architecture_samples/tree/master/frideos_library">Frideos library
  • -
  • - states_rebuilder -
  • From c296132b340bd6b8b90605f71a7f5d50a7ecaddb Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Tue, 14 Jan 2020 14:29:41 +0100 Subject: [PATCH 56/77] Remove Codemagic yaml, didn't solve the problem --- codemagic.yaml | 309 ------------------------------------------------- 1 file changed, 309 deletions(-) delete mode 100644 codemagic.yaml diff --git a/codemagic.yaml b/codemagic.yaml deleted file mode 100644 index 45904129..00000000 --- a/codemagic.yaml +++ /dev/null @@ -1,309 +0,0 @@ -# Automatically generated on 2020-01-14 UTC from https://codemagic.io/app/5e193a8c48f5bc001d576a59/settings -# Note that this configuration is not an exact match to UI settings. Review and adjust as necessary. - -workflows: - mobx: - name: Mobx - environment: - flutter: beta - triggering: - events: - - push - branch_patterns: - - pattern: master - include: true - source: true - scripts: - - flutter emulators --launch apple_ios_simulator - - cd mobx && flutter packages pub get - - cd mobx && flutter config --enable-web - - cd mobx && flutter analyze - - cd mobx && flutter drive --target=test_driver/todo_app.dart - - cd mobx && flutter test - - | - # build web - cd mobx - flutter build web --release -t lib/main_web.dart - cd build/web - 7z a -r ../web.zip ./* - artifacts: - - mobx/build/web.zip - - mobx/flutter_drive.log - publishing: - email: - recipients: - - brian@brianegan.com - mvi: - name: mvi - environment: - flutter: beta - triggering: - events: - - push - branch_patterns: - - pattern: master - include: true - source: true - scripts: - - flutter emulators --launch apple_ios_simulator - - cd mvi_flutter && flutter packages pub get - - cd mvi_flutter && flutter config --enable-web - - cd mvi_flutter && flutter drive --target=test_driver/todo_app.dart - - cd mvi_flutter && flutter test - - | - # build web - cd mvi_flutter - flutter build web --release -t lib/main_web.dart - cd build/web - 7z a -r ../web.zip ./* - artifacts: - - mvi_flutter/build/web.zip - - mvi_flutter/flutter_drive.log - publishing: - email: - recipients: - - brian@brianegan.com - bloc_library: - name: bloc_library - environment: - flutter: beta - triggering: - events: - - push - branch_patterns: - - pattern: master - include: true - source: true - scripts: - - flutter emulators --launch apple_ios_simulator - - cd bloc_library && flutter packages pub get - - cd bloc_library && flutter config --enable-web - - cd bloc_library && flutter analyze - - cd bloc_library && flutter drive --target=test_driver/todo_app.dart - - cd bloc_library && flutter test - - | - # build web - cd bloc_library - flutter build web --release -t lib/main_web.dart - cd build/web - 7z a -r ../web.zip ./* - artifacts: - - bloc_library/build/web.zip - - bloc_library/flutter_drive.log - publishing: - email: - recipients: - - brian@brianegan.com - inherited_widget: - name: inherited_widget - environment: - flutter: beta - triggering: - events: - - push - branch_patterns: - - pattern: master - include: true - source: true - scripts: - - flutter emulators --launch apple_ios_simulator - - cd inherited_widget && flutter packages pub get - - cd inherited_widget && flutter config --enable-web - - cd inherited_widget && flutter analyze - - cd inherited_widget && flutter drive --target=test_driver/todo_app.dart - - cd inherited_widget && flutter test - - | - # build web - cd inherited_widget - flutter build web --release -t lib/main_web.dart - cd build/web - 7z a -r ../web.zip ./* - artifacts: - - inherited_widget/build/web.zip - - inherited_widget/flutter_drive.log - publishing: - email: - recipients: - - brian@brianegan.com - simple_bloc: - name: simple_bloc - environment: - flutter: beta - triggering: - events: - - push - branch_patterns: - - pattern: master - include: true - source: true - scripts: - - flutter emulators --launch apple_ios_simulator - - cd simple_bloc_flutter && flutter packages pub get - - cd simple_bloc_flutter && flutter config --enable-web - - cd simple_bloc_flutter && flutter drive --target=test_driver/todo_app.dart - - | - # build web - cd simple_bloc_flutter - flutter build web --release -t lib/main_web.dart - cd build/web - 7z a -r ../web.zip ./* - artifacts: - - simple_bloc_flutter/build/web.zip - - simple_bloc_flutter/flutter_drive.log - publishing: - email: - recipients: - - brian@brianegan.com - bloc_flutter: - name: bloc_flutter - environment: - flutter: beta - triggering: - events: - - push - branch_patterns: - - pattern: master - include: true - source: true - scripts: - - flutter emulators --launch apple_ios_simulator - - cd bloc_flutter && flutter packages pub get - - cd bloc_flutter && flutter config --enable-web - - cd bloc_flutter && flutter drive --target=test_driver/todo_app.dart - - | - # build web - cd bloc_flutter - flutter build web --release -t lib/main_web.dart - cd build/web - 7z a -r ../web.zip ./* - artifacts: - - bloc_flutter/build/web.zip - - bloc_flutter/flutter_drive.log - publishing: - email: - recipients: - - brian@brianegan.com - vanilla: - name: vanilla - environment: - flutter: beta - triggering: - events: - - push - branch_patterns: - - pattern: master - include: true - source: true - scripts: - - flutter emulators --launch apple_ios_simulator - - cd vanilla && flutter packages pub get - - cd vanilla && flutter config --enable-web - - cd vanilla && flutter analyze - - cd vanilla && flutter drive --target=test_driver/todo_app.dart - - cd vanilla && flutter test - - | - # build web - cd vanilla - flutter build web --release -t lib/main_web.dart - cd build/web - 7z a -r ../web.zip ./* - artifacts: - - vanilla/build/web.zip - - vanilla/flutter_drive.log - publishing: - email: - recipients: - - brian@brianegan.com - redux: - name: redux - environment: - flutter: beta - triggering: - events: - - push - branch_patterns: - - pattern: master - include: true - source: true - scripts: - - flutter emulators --launch apple_ios_simulator - - cd redux && flutter packages pub get - - cd redux && flutter config --enable-web - - cd redux && flutter analyze - - cd redux && flutter drive --target=test_driver/todo_app.dart - - cd redux && flutter test - - | - # build web - cd redux - flutter build web --release -t lib/main_web.dart - cd build/web - 7z a -r ../web.zip ./* - artifacts: - - redux/build/web.zip - - redux/flutter_drive.log - publishing: - email: - recipients: - - brian@brianegan.com - change_notifier_provider: - name: change_notifier_provider - environment: - flutter: beta - triggering: - events: - - push - branch_patterns: - - pattern: master - include: true - source: true - scripts: - - flutter emulators --launch apple_ios_simulator - - cd change_notifier_provider && flutter packages pub get - - cd change_notifier_provider && flutter config --enable-web - - cd change_notifier_provider && flutter analyze - - cd change_notifier_provider && flutter drive --target=test_driver/todo_app.dart - - cd change_notifier_provider && flutter test - - | - # build web - cd change_notifier_provider - flutter build web --release -t lib/main_web.dart - cd build/web - 7z a -r ../web.zip ./* - artifacts: - - change_notifier_provider/build/web.zip - - change_notifier_provider/flutter_drive.log - publishing: - email: - recipients: - - brian@brianegan.com - states_rebuilder: - name: states_rebuilder - environment: - flutter: beta - triggering: - events: - - push - branch_patterns: - - pattern: master - include: true - source: true - scripts: - - flutter emulators --launch apple_ios_simulator - - cd states_rebuilder && flutter packages pub get - - cd states_rebuilder && flutter config --enable-web - - cd states_rebuilder && flutter analyze - - cd states_rebuilder && flutter drive --target=test_driver/todo_app.dart - - cd states_rebuilder && flutter test - - | - # build web - cd states_rebuilder - flutter build web --release -t lib/main_web.dart - cd build/web - 7z a -r ../web.zip ./* - artifacts: - - states_rebuilder/build/web.zip - - states_rebuilder/flutter_drive.log - publishing: - email: - recipients: - - brian@brianegan.com From 139af99e02ca38108af03ae11d72969d06b11977 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Wed, 29 Jan 2020 12:16:27 +0100 Subject: [PATCH 57/77] Dark mode for the website --- index.html | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/index.html b/index.html index 7c70d8bf..93235215 100644 --- a/index.html +++ b/index.html @@ -158,6 +158,21 @@ margin-left: 10px; text-transform: uppercase; } + + @media (prefers-color-scheme: dark) { + body { + background: #1E272C; + color: #d9e5fa; + } + + .card { + background: #262f34; + } + + .site-subtitle { + color: #9fa6b3; + } + } From 2c1739e9536d1f102b1ff39942376497dca27f73 Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Mon, 10 Feb 2020 11:38:23 +0000 Subject: [PATCH 58/77] fork change_notifier_provider sample --- built_redux/.flutter-plugins-dependencies | 2 +- .../.flutter-plugins-dependencies | 2 +- firestore_redux/.flutter-plugins-dependencies | 2 +- freeze_provider_value_notifier/.gitignore | 70 +++ freeze_provider_value_notifier/.metadata | 10 + freeze_provider_value_notifier/README.md | 9 + .../android/.gitignore | 7 + .../android/app/build.gradle | 67 +++ .../android/app/src/debug/AndroidManifest.xml | 7 + .../android/app/src/main/AndroidManifest.xml | 30 + .../change_notifier_provider/MainActivity.kt | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1345 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 927 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 1908 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 2950 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 4067 bytes .../app/src/main/res/values/styles.xml | 8 + .../app/src/profile/AndroidManifest.xml | 7 + .../android/build.gradle | 31 ++ .../android/gradle.properties | 4 + .../gradle/wrapper/gradle-wrapper.properties | 6 + .../android/settings.gradle | 15 + freeze_provider_value_notifier/ios/.gitignore | 32 ++ .../ios/Flutter/AppFrameworkInfo.plist | 26 + .../ios/Flutter/Debug.xcconfig | 2 + .../ios/Flutter/Release.xcconfig | 2 + freeze_provider_value_notifier/ios/Podfile | 90 +++ .../ios/Runner.xcodeproj/project.pbxproj | 518 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/xcschemes/Runner.xcscheme | 91 +++ .../contents.xcworkspacedata | 7 + .../ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 116 ++++ .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 715 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1591 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 2506 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1068 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 2414 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 3810 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1582 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 3462 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 5543 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 0 -> 2798 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 5868 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 9605 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 3390 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 7082 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 0 -> 10960 bytes .../Icon-App-83.5x83.5@1x.png | Bin 0 -> 3834 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 8074 bytes .../Icon-App-83.5x83.5@3x.png | Bin 0 -> 12001 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 ++ .../ios/Runner/Base.lproj/Main.storyboard | 26 + .../ios/Runner/Info.plist | 45 ++ .../ios/Runner/Runner-Bridging-Header.h | 1 + .../lib/add_todo_screen.dart | 84 +++ freeze_provider_value_notifier/lib/app.dart | 42 ++ .../lib/details_screen.dart | 108 ++++ .../lib/edit_todo_screen.dart | 88 +++ .../lib/home/extra_actions_button.dart | 52 ++ .../lib/home/filter_button.dart | 78 +++ .../lib/home/home_screen.dart | 127 +++++ .../lib/home/stats_view.dart | 56 ++ .../lib/home/todo_list_view.dart | 72 +++ .../lib/localization.dart | 30 + freeze_provider_value_notifier/lib/main.dart | 22 + .../lib/main_web.dart | 23 + .../lib/models.dart | 61 +++ .../lib/todo_list_model.dart | 133 +++++ freeze_provider_value_notifier/line_count.md | 0 freeze_provider_value_notifier/pubspec.yaml | 34 ++ .../test/app_state_test.dart | 145 +++++ .../test/home_screen_test.dart | 132 +++++ .../test/mock_repository.dart | 21 + .../test_driver/todo_app.dart | 13 + .../test_driver/todo_app_test.dart | 9 + freeze_provider_value_notifier/web/index.html | 10 + frideos_library/.flutter-plugins-dependencies | 2 +- mvc/.flutter-plugins-dependencies | 2 +- mvu/.flutter-plugins-dependencies | 2 +- scoped_model/.flutter-plugins-dependencies | 2 +- todos_app_core/.flutter-plugins-dependencies | 2 +- 88 files changed, 2684 insertions(+), 8 deletions(-) create mode 100644 freeze_provider_value_notifier/.gitignore create mode 100644 freeze_provider_value_notifier/.metadata create mode 100644 freeze_provider_value_notifier/README.md create mode 100644 freeze_provider_value_notifier/android/.gitignore create mode 100644 freeze_provider_value_notifier/android/app/build.gradle create mode 100644 freeze_provider_value_notifier/android/app/src/debug/AndroidManifest.xml create mode 100644 freeze_provider_value_notifier/android/app/src/main/AndroidManifest.xml create mode 100644 freeze_provider_value_notifier/android/app/src/main/kotlin/com/example/change_notifier_provider/MainActivity.kt create mode 100644 freeze_provider_value_notifier/android/app/src/main/res/drawable/launch_background.xml create mode 100644 freeze_provider_value_notifier/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 freeze_provider_value_notifier/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 freeze_provider_value_notifier/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 freeze_provider_value_notifier/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 freeze_provider_value_notifier/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 freeze_provider_value_notifier/android/app/src/main/res/values/styles.xml create mode 100644 freeze_provider_value_notifier/android/app/src/profile/AndroidManifest.xml create mode 100644 freeze_provider_value_notifier/android/build.gradle create mode 100644 freeze_provider_value_notifier/android/gradle.properties create mode 100644 freeze_provider_value_notifier/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 freeze_provider_value_notifier/android/settings.gradle create mode 100644 freeze_provider_value_notifier/ios/.gitignore create mode 100644 freeze_provider_value_notifier/ios/Flutter/AppFrameworkInfo.plist create mode 100644 freeze_provider_value_notifier/ios/Flutter/Debug.xcconfig create mode 100644 freeze_provider_value_notifier/ios/Flutter/Release.xcconfig create mode 100644 freeze_provider_value_notifier/ios/Podfile create mode 100644 freeze_provider_value_notifier/ios/Runner.xcodeproj/project.pbxproj create mode 100644 freeze_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 freeze_provider_value_notifier/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 freeze_provider_value_notifier/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 freeze_provider_value_notifier/ios/Runner/AppDelegate.swift create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 freeze_provider_value_notifier/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 freeze_provider_value_notifier/ios/Runner/Base.lproj/Main.storyboard create mode 100644 freeze_provider_value_notifier/ios/Runner/Info.plist create mode 100644 freeze_provider_value_notifier/ios/Runner/Runner-Bridging-Header.h create mode 100644 freeze_provider_value_notifier/lib/add_todo_screen.dart create mode 100644 freeze_provider_value_notifier/lib/app.dart create mode 100644 freeze_provider_value_notifier/lib/details_screen.dart create mode 100644 freeze_provider_value_notifier/lib/edit_todo_screen.dart create mode 100644 freeze_provider_value_notifier/lib/home/extra_actions_button.dart create mode 100644 freeze_provider_value_notifier/lib/home/filter_button.dart create mode 100644 freeze_provider_value_notifier/lib/home/home_screen.dart create mode 100644 freeze_provider_value_notifier/lib/home/stats_view.dart create mode 100644 freeze_provider_value_notifier/lib/home/todo_list_view.dart create mode 100644 freeze_provider_value_notifier/lib/localization.dart create mode 100644 freeze_provider_value_notifier/lib/main.dart create mode 100644 freeze_provider_value_notifier/lib/main_web.dart create mode 100644 freeze_provider_value_notifier/lib/models.dart create mode 100644 freeze_provider_value_notifier/lib/todo_list_model.dart create mode 100644 freeze_provider_value_notifier/line_count.md create mode 100644 freeze_provider_value_notifier/pubspec.yaml create mode 100644 freeze_provider_value_notifier/test/app_state_test.dart create mode 100644 freeze_provider_value_notifier/test/home_screen_test.dart create mode 100644 freeze_provider_value_notifier/test/mock_repository.dart create mode 100644 freeze_provider_value_notifier/test_driver/todo_app.dart create mode 100644 freeze_provider_value_notifier/test_driver/todo_app_test.dart create mode 100644 freeze_provider_value_notifier/web/index.html diff --git a/built_redux/.flutter-plugins-dependencies b/built_redux/.flutter-plugins-dependencies index 17d9de06..51c6a6c7 100644 --- a/built_redux/.flutter-plugins-dependencies +++ b/built_redux/.flutter-plugins-dependencies @@ -1 +1 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"path_provider","dependencies":[]}]} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"android":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":[]}],"date_created":"2020-02-10 11:23:40.410802","version":"1.14.7-pre.38"} \ No newline at end of file diff --git a/firebase_flutter_repository/.flutter-plugins-dependencies b/firebase_flutter_repository/.flutter-plugins-dependencies index a56e35ff..e3b89dcd 100644 --- a/firebase_flutter_repository/.flutter-plugins-dependencies +++ b/firebase_flutter_repository/.flutter-plugins-dependencies @@ -1 +1 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core"]},{"name":"firebase_auth","dependencies":["firebase_core","firebase_auth_web"]},{"name":"firebase_auth_web","dependencies":[]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]}]} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"cloud_firestore","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.1+1/","dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.15.4/","dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.3+3/","dependencies":[]}],"android":[{"name":"cloud_firestore","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.1+1/","dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.15.4/","dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.3+3/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[{"name":"firebase_auth_web","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-0.1.2/","dependencies":[]},{"name":"firebase_core_web","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-0.1.1+2/","dependencies":[]}]},"dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core"]},{"name":"firebase_auth","dependencies":["firebase_core","firebase_auth_web"]},{"name":"firebase_auth_web","dependencies":[]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]}],"date_created":"2020-02-10 11:23:47.330621","version":"1.14.7-pre.38"} \ No newline at end of file diff --git a/firestore_redux/.flutter-plugins-dependencies b/firestore_redux/.flutter-plugins-dependencies index 135b8721..ba421a8f 100644 --- a/firestore_redux/.flutter-plugins-dependencies +++ b/firestore_redux/.flutter-plugins-dependencies @@ -1 +1 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core"]},{"name":"firebase_auth","dependencies":["firebase_core","firebase_auth_web"]},{"name":"firebase_auth_web","dependencies":[]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"path_provider","dependencies":[]}]} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"cloud_firestore","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.1+1/","dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.15.4/","dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.3+3/","dependencies":[]},{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"android":[{"name":"cloud_firestore","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.1+1/","dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.15.4/","dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.3+3/","dependencies":[]},{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[{"name":"firebase_auth_web","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-0.1.2/","dependencies":[]},{"name":"firebase_core_web","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-0.1.1+2/","dependencies":[]}]},"dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core"]},{"name":"firebase_auth","dependencies":["firebase_core","firebase_auth_web"]},{"name":"firebase_auth_web","dependencies":[]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"path_provider","dependencies":[]}],"date_created":"2020-02-10 11:23:57.149758","version":"1.14.7-pre.38"} \ No newline at end of file diff --git a/freeze_provider_value_notifier/.gitignore b/freeze_provider_value_notifier/.gitignore new file mode 100644 index 00000000..07488ba6 --- /dev/null +++ b/freeze_provider_value_notifier/.gitignore @@ -0,0 +1,70 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# Visual Studio Code related +.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.packages +.pub-cache/ +.pub/ +/build/ + +# Android related +**/android/**/gradle-wrapper.jar +**/android/.gradle +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages diff --git a/freeze_provider_value_notifier/.metadata b/freeze_provider_value_notifier/.metadata new file mode 100644 index 00000000..361e1e4c --- /dev/null +++ b/freeze_provider_value_notifier/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: 18cd7a3601bcffb36fdf2f679f763b5e827c2e8e + channel: beta + +project_type: app diff --git a/freeze_provider_value_notifier/README.md b/freeze_provider_value_notifier/README.md new file mode 100644 index 00000000..f95ae3e9 --- /dev/null +++ b/freeze_provider_value_notifier/README.md @@ -0,0 +1,9 @@ +This is an example of an alternate architecture of [ChangeNotifier]+[provider]. + +It replaces [ChangeNotifier] by [ValueNotifier], and uses [freezed] to help with +immutable objects. + +[changenotifier]: https://api.flutter.dev/flutter/foundation/ChangeNotifier-class.html +[valuenotifier]: https://api.flutter.dev/flutter/foundation/ValueNotifier-class.html +[provider]: https://github.com/rrousselgit/provider +[freezed]: https://github.com/rrousselgit/freezed diff --git a/freeze_provider_value_notifier/android/.gitignore b/freeze_provider_value_notifier/android/.gitignore new file mode 100644 index 00000000..bc2100d8 --- /dev/null +++ b/freeze_provider_value_notifier/android/.gitignore @@ -0,0 +1,7 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java diff --git a/freeze_provider_value_notifier/android/app/build.gradle b/freeze_provider_value_notifier/android/app/build.gradle new file mode 100644 index 00000000..84853055 --- /dev/null +++ b/freeze_provider_value_notifier/android/app/build.gradle @@ -0,0 +1,67 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion 28 + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + lintOptions { + disable 'InvalidPackage' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.change_notifier_provider" + minSdkVersion 16 + targetSdkVersion 28 + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test:runner:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' +} diff --git a/freeze_provider_value_notifier/android/app/src/debug/AndroidManifest.xml b/freeze_provider_value_notifier/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..a9a5b33e --- /dev/null +++ b/freeze_provider_value_notifier/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/freeze_provider_value_notifier/android/app/src/main/AndroidManifest.xml b/freeze_provider_value_notifier/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..afb0b62e --- /dev/null +++ b/freeze_provider_value_notifier/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + diff --git a/freeze_provider_value_notifier/android/app/src/main/kotlin/com/example/change_notifier_provider/MainActivity.kt b/freeze_provider_value_notifier/android/app/src/main/kotlin/com/example/change_notifier_provider/MainActivity.kt new file mode 100644 index 00000000..891c3153 --- /dev/null +++ b/freeze_provider_value_notifier/android/app/src/main/kotlin/com/example/change_notifier_provider/MainActivity.kt @@ -0,0 +1,12 @@ +package com.example.change_notifier_provider + +import androidx.annotation.NonNull; +import io.flutter.embedding.android.FlutterActivity +import io.flutter.embedding.engine.FlutterEngine +import io.flutter.plugins.GeneratedPluginRegistrant + +class MainActivity: FlutterActivity() { + override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { + GeneratedPluginRegistrant.registerWith(flutterEngine); + } +} diff --git a/freeze_provider_value_notifier/android/app/src/main/res/drawable/launch_background.xml b/freeze_provider_value_notifier/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000..304732f8 --- /dev/null +++ b/freeze_provider_value_notifier/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/freeze_provider_value_notifier/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/freeze_provider_value_notifier/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a3f285f9e5f45e0961f6e7c2d46032087e550a7f GIT binary patch literal 1345 zcmV-H1-|-;P)uTd_0!V%xTj^~RVz+qQkNle+bG&pJ+~-@fF1He>(R5VVes7IOD>*8pj zqheUWHU<|V7e)gem4GGsJ2+v4(LhI>IrhY(VKk7Fi2z<|iTM&34b&ar1j_BVBq$oF zT^5{XaPhSSL<7+saIV4Zza$tMh~~j%l#2}#2o2PNi5m@Wr%DhsPz$TzUdrtp34jJ_ znQ1?5aIsS|cnuV=f=vu2gk<0vD8TK`l#6|mL2IA@7ekLTU=2jMm@OHo2BH8yg9lB? zAT>}wfRiW}AIb-*2s!8_Z`J0aS1@qoHy_}lPQz#RkE4~2! z=(Z>XqZkO0{yAgr%jc0Yq~kU?n{xX%#oOwWjsPbUd6WU+HDJRj(Jz;3Pq)p5ODGd- zRpPkY*4@5D9@RitX39y?ua@Yk&>~x0XE2eZ_RJA;@u^#pK)8}JPmFl^&f?(|+~wXw zlx{1_o=Py400@z``6J9n3hk?`&=Zu2?MiW&7)&sg2ncJBf3{icIA1y&P$u@O?8x0O z8w6ANfUwMLs0l^6(Xzk}43I58|S(7_2STsgb3Bd;<* zSWm4;S)us6*-BXm&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPV zl> zWXCr#aj@#Fvz(Q*M}0@G_VI6yJOZd~Pq;2> zG2)cDYOmwaEd5xdfMri1N}~YDGjb-}H20OVqDYXKgR~o0O;}k+t{Ul{4}K_j9IRSv zxx3v|cI4{w)Uu@Ys(@Ztn-O+?{~M&L=c#`Z%N?oK8Ww*1pQL%Dy5z}!lGc^q%5iX( zB~2vNEl(~>T3hyWhlL+ome`jZ8I6QEPyDr|C8@qaq{OwQz}f%Uvg8*?P03TslUJAE zK;HNC-|6?0nwBS)Cl!sfCZpi#6&bP@T^i~6H5v9p>yj@bH8^;1uQ~>2b^5MaYqCxw zI(Sbyg!J61w0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjf DcgJkH literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/freeze_provider_value_notifier/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6f3ac6f7ca7ab1474c50255db0947a4f236568 GIT binary patch literal 927 zcmV;Q17Q4#P)D0gcVJI$m~tEjv=UM0#+Kd63T)IDVl(l zvY&{|q6jFO0HMLQ#b81S0Dyr|HVC0a6X*nBRzW5d1L+np_qFwC#87rFp==?-)R%y< zj}1(H>?1n?7#kA)tAlU}k(G^l;H@(IuS$Va5|bYvz0=YlGw+9MB+BA>!SR-IE8k(W zss)NAY>RFfF#X*6g#X0HZd2j2x#97B2oh{oi$Jl&`b$Sozqmf&KlTM5BC_J)-ZnBj zZgsP_v6)r@tiJZ$7xW!}mA*t7enFz_AUC}F-;d<*bJ(oT0w`fiKX>r>n|RJk``vY$`OxQ*%)P`Z0=`!sm4&|R=Oet|5ds3V>euZ%{TI`LDr?o5zeocvw?J`)O?{o8l!*psNt8|JhsSNR;46T0IM8_na3x~KezsqT zA1)v=Tdr^0D3gl99S1hI0M-S=rog)?z5}}8-E0I${?adS$(Wh&R(v76xwin`PYdu0 zbg#FpqHc-yTEGq6N5U1uCc~TY1qhFY5`Nu@Qolq$Te~WudyfS}=OJKd)eEj2I=&db zQoWbz*OVxUtbEH)$su9rG#CuOwSk+4xXJ=oEs^2_sj&J)NjyPGI}P`CaMH$ab=~d2G%a1mdZ8P~vz1 z6J=A4mv>~R@d~_|Kw~d$&#~%;&@YjbT37hD6KM4L9XW5tHJ9nu@^}YG~34p2iJAov!lV07GM*+YPcV?WX<0QCSHeyl2P0#=U002ovPDHLkV1k9w Bv-l9 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 literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/freeze_provider_value_notifier/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5614ac831d924f5e49e16a3d4391be8964fcdf3 GIT binary patch literal 4067 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 + + + diff --git a/freeze_provider_value_notifier/android/app/src/profile/AndroidManifest.xml b/freeze_provider_value_notifier/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000..a9a5b33e --- /dev/null +++ b/freeze_provider_value_notifier/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/freeze_provider_value_notifier/android/build.gradle b/freeze_provider_value_notifier/android/build.gradle new file mode 100644 index 00000000..3100ad2d --- /dev/null +++ b/freeze_provider_value_notifier/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.3.50' + repositories { + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:3.5.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/freeze_provider_value_notifier/android/gradle.properties b/freeze_provider_value_notifier/android/gradle.properties new file mode 100644 index 00000000..38c8d454 --- /dev/null +++ b/freeze_provider_value_notifier/android/gradle.properties @@ -0,0 +1,4 @@ +org.gradle.jvmargs=-Xmx1536M +android.enableR8=true +android.useAndroidX=true +android.enableJetifier=true diff --git a/freeze_provider_value_notifier/android/gradle/wrapper/gradle-wrapper.properties b/freeze_provider_value_notifier/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..296b146b --- /dev/null +++ b/freeze_provider_value_notifier/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Jun 23 08:50:38 CEST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip diff --git a/freeze_provider_value_notifier/android/settings.gradle b/freeze_provider_value_notifier/android/settings.gradle new file mode 100644 index 00000000..5a2f14fb --- /dev/null +++ b/freeze_provider_value_notifier/android/settings.gradle @@ -0,0 +1,15 @@ +include ':app' + +def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() + +def plugins = new Properties() +def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') +if (pluginsFile.exists()) { + pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } +} + +plugins.each { name, path -> + def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() + include ":$name" + project(":$name").projectDir = pluginDirectory +} diff --git a/freeze_provider_value_notifier/ios/.gitignore b/freeze_provider_value_notifier/ios/.gitignore new file mode 100644 index 00000000..e96ef602 --- /dev/null +++ b/freeze_provider_value_notifier/ios/.gitignore @@ -0,0 +1,32 @@ +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/freeze_provider_value_notifier/ios/Flutter/AppFrameworkInfo.plist b/freeze_provider_value_notifier/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000..6b4c0f78 --- /dev/null +++ b/freeze_provider_value_notifier/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 8.0 + + diff --git a/freeze_provider_value_notifier/ios/Flutter/Debug.xcconfig b/freeze_provider_value_notifier/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000..e8efba11 --- /dev/null +++ b/freeze_provider_value_notifier/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/freeze_provider_value_notifier/ios/Flutter/Release.xcconfig b/freeze_provider_value_notifier/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000..399e9340 --- /dev/null +++ b/freeze_provider_value_notifier/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/freeze_provider_value_notifier/ios/Podfile b/freeze_provider_value_notifier/ios/Podfile new file mode 100644 index 00000000..b30a428b --- /dev/null +++ b/freeze_provider_value_notifier/ios/Podfile @@ -0,0 +1,90 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '9.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def parse_KV_file(file, separator='=') + file_abs_path = File.expand_path(file) + if !File.exists? file_abs_path + return []; + end + generated_key_values = {} + skip_line_start_symbols = ["#", "/"] + File.foreach(file_abs_path) do |line| + next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } + plugin = line.split(pattern=separator) + if plugin.length == 2 + podname = plugin[0].strip() + path = plugin[1].strip() + podpath = File.expand_path("#{path}", file_abs_path) + generated_key_values[podname] = podpath + else + puts "Invalid plugin specification: #{line}" + end + end + generated_key_values +end + +target 'Runner' do + use_frameworks! + use_modular_headers! + + # Flutter Pod + + copied_flutter_dir = File.join(__dir__, 'Flutter') + copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') + copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') + unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) + # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet. + # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration. + # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist. + + generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') + unless File.exist?(generated_xcode_build_settings_path) + raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) + cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; + + unless File.exist?(copied_framework_path) + FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) + end + unless File.exist?(copied_podspec_path) + FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) + end + end + + # Keep pod path relative so it can be checked into Podfile.lock. + pod 'Flutter', :path => 'Flutter' + + # Plugin Pods + + # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock + # referring to absolute paths on developers' machines. + system('rm -rf .symlinks') + system('mkdir -p .symlinks/plugins') + plugin_pods = parse_KV_file('../.flutter-plugins') + plugin_pods.each do |name, path| + symlink = File.join('.symlinks', 'plugins', name) + File.symlink(path, symlink) + pod name, :path => File.join(symlink, 'ios') + end +end + +# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. +install! 'cocoapods', :disable_input_output_paths => true + +post_install do |installer| + installer.pods_project.targets.each do |target| + target.build_configurations.each do |config| + config.build_settings['ENABLE_BITCODE'] = 'NO' + end + end +end diff --git a/freeze_provider_value_notifier/ios/Runner.xcodeproj/project.pbxproj b/freeze_provider_value_notifier/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..a50c875c --- /dev/null +++ b/freeze_provider_value_notifier/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,518 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; + 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; + 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, + 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, + 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B80C3931E831B6300D905FE /* App.framework */, + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEBA1CF902C7004384FC /* Flutter.framework */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 97C146F11CF9000F007C117D /* Supporting Files */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + 97C146F11CF9000F007C117D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1020; + ORGANIZATIONNAME = "The Chromium Authors"; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.changeNotifierProvider; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.changeNotifierProvider; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.changeNotifierProvider; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/freeze_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/freeze_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/freeze_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/freeze_provider_value_notifier/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/freeze_provider_value_notifier/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..a28140cf --- /dev/null +++ b/freeze_provider_value_notifier/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/freeze_provider_value_notifier/ios/Runner.xcworkspace/contents.xcworkspacedata b/freeze_provider_value_notifier/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/freeze_provider_value_notifier/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/freeze_provider_value_notifier/ios/Runner/AppDelegate.swift b/freeze_provider_value_notifier/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000..70693e4a --- /dev/null +++ b/freeze_provider_value_notifier/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..d22f10b2 --- /dev/null +++ b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,116 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..980e5ad64bb0fd4a9c2c6506e9b811ffea9dd64b GIT binary patch literal 715 zcmV;+0yO=JP)5QXpJpN(w?YkRkYwc_j#m|(3>!PrLIwlTJ6&Ufo}SH`I1$#eR?RVOWIzMsU) zrK2WI$*4hFGG^Q^9@T@8zu5)!Yz6I>${V_+j`Ok!^L)v;38fNcW`cbs^X>&xhbk?f zvS`XCEg(wS59HzvL0zJ3#-=Tswu302VRN>z3)sQt+#O8gBeP#+>JsI%uI=(!2l6=C zdFI%h9c;z_@g>lFVht7cT-%~z-i?ZdJmoU8IkPWPB^k`Ff#(xjg!dpSwLVm8y$Z@~ zqGHj@W>6!4&#i3X;(Y3is=Eq_sMPsUsrRE%>p_jmL_k5`*hG^t2U&6%yTe|1|lg*UW~p>+@q!E^s3OEa=e6Ud^0-fp0g z&B!j%6y4G^MmBL1O_42jA+woHwxTJ#r4io)FE___=bK_XXo_uveG`pQHs>9%se`%% x4TYA}o~Ajur)^2@Z#O6Q@F3(a-Ow$UJqP2R#rz($lm7q!002ovPDHLkV1fcFS>pfz literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fd870289028b0d1ba6565d9f29fd42fab6bad5f8 GIT binary patch literal 1591 zcmV-72FUq|P)Ffwcl%S_9_!a48Hv5l6Yg}=#nG6Dbu zla|r7Yb`^I)3=8fNzyX31gi{#!9`fl5R44#X&qjkmK_)Y1VY=0(Q$itxzaMci~?7J zyKH1wcMh7|XLASHg%J|-qf@pXF{&*iD^$-ij0`JyIjqHchvApQ$T03AS7awf2>H=E zVoaL{qYTWnjvBB;p1}%aY1}c541*Qen)UNz#xx^D>)7gbh8TGWBf|hRzyCJ&b&jv; z?q3&e<7axnT(Y$hS>ykYW=?hIQ}~7#Y^@lV`Bx;aHCF{4bPleE-x&PP9*NU9?SY zl0CLylXe)H&){aXGcRRIWPSb@&S>s!or|_aBlZ8FP zV=ahX*88G;#zXBh+X`g1q>VF-4C5|rhyFP)t?X1u_xvxC)$SMVvtD`w4~z_(bj-oX za4o|cKD-zpU*!;ev<20?M;dTJ^JP9;w8MaBVeEme`4cNaiXR?Rv*-WOoSK_wEc2pc z-cOwi3S{=X1Mm9MT7(KGr|8k7U|zR_3oZl*bk_W}NrOHzyJh_`l^26BGOXp>TXEVu zJ10BOU&GnjzWP3*b16ifOF@&4MdhE2FVJHzy+WUu;gYJ19-f7f;h*_ZbaZ}UtK1Xm za>H)G1;cm&;DU?v!V53ZQ!l+tpPk*LuH~=>H3wVyQz%QP7niom-IFL{&bkws3(7B6 zB8po6>4YjMdFI8J=u0!}B=1?l9E|yY#fx-td38B?=O3{Gc1U%R7f}wNr1@>T z^;xf;(1*M^?6XM*M&^PZUgF7`^l^qI?pn#Go_dO&d+s?D(o!rI2_@(EkI5y=dFttd z6|w-V;0y!N=gm`Z6WshW8CqCGkt<71?HrJU=lV4C!WwV}1JUa(P@k_k-woy|o6B8U z(4S0`!;{Ax^;)bl42m!^3`q0`O6UFl5=r{}MYw_QG$|?nTy7;&P*D93dFF%x=0LR)ls9F1Yu%ejZZn!X}O|T+jETCCX&8^lBtgyR)Ok!Lu+j ztOL979@$MeqLu58$R3%5VXzCUVT)brjI*+q2&_fzg|P=_T#?EL1b+x;bbs0r*(Wx^ z$nd*OllQ^Xj1cnUL-EQrXRKOvMl0lCoFE2E)EO*kykCWpVe8!{^UAJxr6M~qLY6c6 zVB)yL6+fslctIn41|!2N!`5tX9`O4sA50u{FhXK}fDdI)uDOzj)2_rJNq896!Dlcs zjC=@Nvu<9IJermr7y%IK_+awrx+`_~H!f?qlZSa8Ja_V9{+g7*5v<@dSY_CnmEFA4 pojS_%e#4bI{@VvLN7oqv!0V&tCp*)&!{Pt{002ovPDHLkV1k)(4H5tV literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..75e84cd172d55b1b20971fb3142ff6876ecd45c2 GIT binary patch literal 2506 zcmV;*2{rbKP)Z*FU!m{%*@P8VRsLNIdO-bn8LBcq}8jNvvE!9=H589 zS1q{F% z25_7w7rzc6_W!D9OuwF9IP!hcRh72%UTx5Ve2G1JF&R7ItnWOsxG;yFhdp@D-v_7k z&fdOmnO#2ee(9>pVtq010kWwNld+dE83*wHn9tfxBT2o#zpv%fYznjAHBY*l!u|2m zSf4hSMNGyg$1xwm-`9dY9-PW*J`_Ic{nAyH#QK&>FZOFo43jar5Bt!M3$uIOIUl>v zb9b5X3#kSD-cQS%Eqv6xMP zE1Yp6YpT=?fig_Kh{=PPj6E)4GIp-ZS?ri68GBT|J*YdD^7L~SW~Sf$s_d;n?I9a6 z86O}SlW`cF=fmCqsn)n2%B|DQU3h+l{eDQ{AqgImvG6u_z#8VP?>ut&`^aBtAJJ25 zoAf%WFtdD7GVuJ{!xnPrg0dHT=P{^0c=^-k#J?H&4rDa;IKAL**R;Bg+qyI7Dl?6?0iCgVW32mf*?q1Sfz z=n}fHUmsBNpsPIOBJ3dV4(?VgItv@Fu4~cXjdeNJ4Q-=X zkTvW(53?5w_f601lYAaaEi%u8TyU>q(bA3&^YwMj`h}NX(m!eGVBcXuOvdhcvL<%! ze>SspqOvb!mSs*L%6rh56AHih;)|A_H@E4+{TDD9A2AP;%Z=;jb0;eMNOFOB*o`eL zkL(y1%$N88ldrF9p|It5P46;5*0JRRCYv=(#zJ-Hgl=74E4rxsvheoAymLMogSucY z<-wA%;3_Qqt>G;*$gX227ciKa_|rX8dLX}1blF`~_UegQ<_E&Pw(wC<7~tyqm@cY8;W|KtwlU@|6uqkmeb zH@Ax}D?b_e=>MVDRK+0{Qa zGY;R24>BfWFnyGF7!ufW!Q|`fW4>kK-q-7OZRfb`_vPm!8NIr@S9IC=?H&Eyp`=&P zL*9tV*omA~}ZeJWoy5HD~$=HdkNnt5A zV=2cVg&Qu0Dhp4(@~Zx7`-nY%PkLGJpP=mE>Zblof3o0x)7Z;>GuWdSyY~yq+njVF zYd0LDFg*Y2YdV&i)hGFMdBe;2{~qZ!dO)F8jg@FX&V%1x1y9 zZDCDUN(sv10C;;)A5}S!)_zo&&EmhbwEC8O`st_jLk~TqpM3I3ie6EAZEY=7*{A37 z@3|k7aoF{g#$;tTvvCj~X8hM!8zsS(y!F;w^}`Q8OhG>aOW&W(9o&}@lW}2o7i1r{ zkPmw(`^6AsF&SI_5^J|b;kxUt(+@oGKww!|U0uDRsQm86&8Zc6nB0ZQ*v$|oW5GR7 zNeD}o;V+juY+3o&_`wGslz(MIm4$phuleklvj3V{4u3x;8O;oh`a>Hk*|{ z*FAE+h3xweWDa|nj5&)z5khf!UgL;iGIRXWnM_9C7*F`zF^}D_R>XVBN(NM4_Nc;S z?6V$;hcC@P*}n}=1i8bDSr6nA{Jx=_VVZ=F3f?YGp6iMhm%|?7UV2u9_DTw{2qZ!K}_qW+HdAyG7cc*d6O|2^A=3T($S!#tom$9pNdZ9^Kv*c znLivji9I5iJb?>y@#}7ipAXTgT>i7E+$n=n@)sdGx%LeyTSyJ|A%X*8Zw`~Odp{;m zVKR2Vhb-L;N>BtLl32UN8@4LQ0Zhg|2dW zA%Z~$U>6B&k+WEkHSFAPXJhuAV83+vgVrB5C?J3(I=%6Y==6G?K@gqBu#N>;!=Z>` zGKPTr$*hCCT{;*P00F@JA6atqAGI?Zc?v}^8M}Gk_sd)5&GL4GazXG#e(b7EZI(u6 zHm|NtZp0!p8}aDO=2CQK!(M`250o_w;5bhXyML)RxoO_A5i{?*THYvcHK?QbFVbTr U2?md5F8}}l07*qoM6N<$g7bj+?EnA( literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..03ab8a84f141a4464654d46362eb539fffd7d067 GIT binary patch literal 1068 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 literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f47613ee46814496f40d58ae909b756976d765e5 GIT binary patch literal 3810 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..7f2230a978c8a2f82d02bf6ca32497c15669e48f GIT binary patch literal 1582 zcmV+}2GRM6P)oxL5Jl&M-bdt-nJLW7%*;tqD$LBxWM;P4BxYtABr|k+c6=+frM0{PRUMscPfyPc zN0@yoyQfc{?VNnEqH9uPrz*Op_Rn@r5@&*uVG9`URCG@6@%|KBtLUD5QNGCt01$L4 z`sPnmbWe?(?Vch@MfWs}3@f@|Q*dT^zM^MlM0Q{V5C~PhTFu#>nF0^-l4(m|mW>RX zor5y-Z0;btFhZh#)ymerTCt*cmW<56$gqN!!zLJK7=9c^hB1p=kewJI|_8U}V?~UIHV-=KJ^z*7+=yB7ENT#Y^8GUQCJV5!-&%@Df?W z2J2MA$b1Huqni0OkwZ6C(4R1wv+aqh5neuGS0GCx!whEGD#I4$k?TfnG?ZCIFJnRM zWH2wPM;%l>YF8jjGgX{nWEius6`IGLG`n0Rv(KA>r0IT9J?5mpalpv1PR%%s3?F9L zg!866?Nf+=-x!ezKGY9`!N zJE=fs|3C1qYv%)$+1@Er4F%JtJ4DT-hd}M2ZyeI-{4ty1cY2=k!pN{Gx7ot9y1PeK zJ}>x_hx?3uMD4VXYNx$AHB-v>4@}aRzy3}akJ{Alj)L#P$nb-%7;WzDTPpW;Jb&aH zT+ojP02iF1pMUSp|=@GNZLSznTN_75zTdq0xJJ;P39Q7eC#4JZ!t z1B0rdSlvfrx|%*Xc`4| ze)#zpx_M+?KQqkp0$B2KJWp0WyIk%$e+qYx*oT61Aq+5_^@1}f2k0l}?qQAUF)!f^ z|CC;{RBm&BpC0kbav^;e3;@nV{al#p=M{A-n-&BQ4NV*7o7jE%qNQ?$y?wgdoxpuA z0W0_q6h`KP3lRbhhkkH)*0daWa$tfNN2ql%O4F+wmdfRK_UL9;QoS{=;0%|5GcFh< z(6Ffd;0OvH&D-NMOV_v(hBs7>!N@RXNi;0+;Zoed10!15asvYclt?5f zpU)p#F1)ovmpPMaH$M)m41+j~OhON~gbs51LWJJy>?tYs%{SjrXJ@BgE*_8T5RG;|v?ojGSc-AUUX-H`Km3q>`Q;as11Kr~x7|=~p}0-w zIezzr zXq;LcY233w7Dk2viDpl3ui2d=Ns~JZmvDQTlJf6MTO>v;YL<6^99(`s?!kb&i55>j z&4CnoSf`0IEV;v%F)cYAimF)#Mutnk?lSMScylSy>R-{Cz00J?!^ki)-Qmv}N)862 zI4_~a2P5a%W%t7h--^ZsS6^(Fm-Hnou)+@;xht5XL^4T#1S0y+xDQPBA;YF%7v7QG zL`$%6vL&!eI(`_e!0Ivsx2ZGE%BBQhQ`BALVleaE}Uo$6^pIG0<|!$AOtJ;4Av=~FT%!boGo)-xh-5M$WDxq<#akCTQzOr z^&*1@O2HW$8CDrKW-IprzhCHxtk*C?qJM#NliMfSq8lS^kqu(xW!My)nao=}hYyKv zj>ry-00;&;qMIk%VjC}VS*<;~k>-ngt-P3jCRnivEBFjn88&9=cHY?@+f4I*tu40o gVn<^0BqIR$3#s8JH79+r6951J07*qoM6N<$f+ET2fdBvi literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..42315c6dc1260f60b9de72e58f1fd4789c1f488a GIT binary patch literal 3462 zcmV;14SDj3P)}00b^74z_|aGC)>rXiR;Q;~6~{lQNx80UE~{HruBZFC zC$mmZnEgR!$K0RfE%GLL8*n9L8$;bKW_7nh^Jg?2e-cS$_>*#-bxv9N`3Y+J^QcIL zb;R4^O5O@w4*xXFoAeG#i^pNnOqFY>&6?DJJQ???&d!gjyxgpOXq2}D_cvZWxazud zze!8K?r5lvlkA{L-qYvBZe&NmDUSc++kUCT0lmZl zstj>Q%5~3_-k&@VVK1D&5q3ZI_e!4wC)|8p zgzf#&pvtwVfG|}aFx$`HtbU%<^fMXx{EaaErSF%&Sm2!e_}%?yuO=RlwD>#&->PzL zd#Cp+%X|OjTUNjMZodM~T^|l-VY`2}o9s!!j&ur=^`khm;Ev-;qHrHv_!awK!m><) zWoBk(hA=ae;xL)QXl7fom}W*WVi=9kwOwv~o9C07aZS6E)j8kZYrT5)s;+T1r~zlr z`*_E>uip<2cSz6Nf^+{9Wz8+)UH~7f@)l}yIcgKu&E#WaGrPWW|IZ!hl>XA9c)rF6(7Atf z#h%l`H}I;87Nb@JKW1R~O7G*H=k|MFJJKa1z+xGJLxzbtoPMYVC#f3^n`d8EOTnXDA*u;mnxtm#qU*T3IER zngXn4|Hux^rfwfU^Un9w(4=JXHMX=|)BZ_-2fEhj6ja#|dsNX{G!+NXbp6Bo`1)91F3zxj z1_7=(=Oe)NLyA$tM3tYsbyzj1NAai+`@a8t^TBS}%SW^917!cI^F`+j7!QQvQRT56 zyX3F0?Xk}NxZhKchCb1z!##3xc0scKdSz^;@;t`8ks7E&1CJ^i;0rIjAXmQnj@0x0 z4Dh}WpF7$oJ*CCW!`oS$k$T7bA<>3IJ!%rvqXq=1T>tW$vgu$KcS7ub_zSH6+VOrF zDlcaq-jl=tuMVUTMkuzupY&u4y^m%Yt6~T@=E66-Ip8JcTy2;INU4s z70@$OA;6HkcD*7E2RhB>dKV47_dMhm?FE@zS$A|MqK>^qoi~!+* zT`x;>9Af>EKCM#?y?dZa_y5v0EQ@PvnTEF#hxhN^QSt9@&aVOXF|d9U#iNQDAUv{j zw|w?sC-t6wP_bTTySlH)N3+bn%4=)#$F7m&UG`5oZ&ZJzU!eXditj_K1_;}B?36F; zZx0^nNAW0tS$|hqa+t+3cd|!w z(92^x(*>yf?alqkqbJT?=qqgn$$bDH&Gt<%NaK2Vn@;3n)T8MLd*Gww8+k>SL-DAR zIzYJcjXkm{evkg&>ll%-58$KOYm+6}V(g>4qU`P5-#8~gJv^!C0cxQE?oJ&Z-1yo% zvh`$6e%?JQvny+vhxh#09Q(w}q6C13yZZO%EbJetd5?mi%Es8EN)`bs2im)&w37X= zyq3`!=1n+(+5v!Xe|&hZ0iGI?O{WSm`VAD1CS(y{cXzi84Gl@LSd_JlKHuu6l{<%~ zWfOD5DHMj#(7X2!d*TVud|-2+O3MWV_}p{PNpEkjXn3F@uCA_LPJPHK3xpi0+ysE`_4t40K40mYHKmWWu@x&9dZQC~K@9&o|JQy7vO&#L$+8O!# zzy$Nh3BK?2Jx z#D�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 literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8c552e237629bdd153144a309f497f1dab0e1fbc GIT binary patch literal 2798 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 AX#fBK literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..45537513df37c45e8074c7c131c61cec2eac66ec GIT binary patch literal 5868 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 literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6360ea17a408801185f000acaded313519da49b4 GIT binary patch literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! z*yu*-E@T3dqoJkwK+18}@#)AZuW^-g@it}woIK7hoXN264W(iQS{n~kPujP2(BPqp z4vWPKcLrM$1dq!PV~|?Km^AQrTt7{BRQ!;&S-?&G)GukB1Z}o<$lZ7azzE`uJ?)I} zSa!$A)?0d7yTobi1%WG$a4%jEm#H0Gyv5IoLst;(sPW{UNY76qbq?Mj+^z@2t3|TC zkcv4hn}hlpnANfhq43&&haH-ax=^e|q}m<%fDYDqrhm9~ljZjPI=;Kt+pEAlVEe#! z5$?PAj`3(j}J@o*Ldb$M&Wu9;~A*BTb|X2U9!pB5#bY){c&^=bQX;y)iH0v}%g>CTw5VxBM z>JI`-KmN)MGyN5nr0e-ESMVg!$=KGM=<{K%V@XCbG6#U6%Y(UfFxAZ{^a3ZCoocsaB2F zjvM*Jz87^}oY)?1`)l#NK||so!kw>T&J10@u#g_y?~mMDo=o88g7$Z0kQDh+q2=+o zcbBu0NlEkm$0g<1m-6_sZM{FJws_SpV+$BtI@w4rMrsDgW|fxOIRg6HQ1x{SLPsB* z_u`T&6MsC|C0=7OXR%`{Vvq@mAc65DNfFyWSDyQ}gTq$No&O|;O{Soh6e9PCQY8w6 zkEcXEzzNe!XJpAuq&K+5S9GJ=D*Vj!e}?QCTGXh5scN}ln(acaVJO2L5!*1K{hK>H z`2`y|yl7FTW_Umcd1qrq#u@34#E9l!QIN)z>nqWeH60N(tu$rpHs$C1o?E{o)u!GC zJ$!cUIIv-8!XcRh55M9F-Oz4DDRqnmAl+5?&G3P^jRx^^<)qrPqZ?vyi*-IzUzX3& zZg_aH0^w|`V80J@S@jVS8KmijI8YqlexP&HpX@xu^=tHOEh{l75xEe}(i9-7AkON$2h$#9~W>&Z| zs+@FaX)8S9k>`76apEjSaSKs;c*)SqZcLDv(=i)B&ZXyi)aT|qdw3q)!smUfF{gP_ z{&8kOUnPkXZ{lHFD>+lD9dt$#iDI3M{e47Sgn$Y$sQON>)4q5Tb}GLnf3P4+?07-N zWu{ARCj=>Ap+-VGK=wHY?FXfZ`UE%p-ktMgDUj2%Nlwe}B;zgdKEc!y9uG$k2Qa&R zOwv*(&F(NNj^}2z&XDh!-&s^k_w&y@>|0PsmAUzK50pA=l#~QbjTT(#OI70GU~-+F`-h_g>ZLOg)QzQ^AonZcL=x!{rPlz{yH!yt zVl`5eW*S)8QapS{Ma{9}DA)JCANhe1SFzY+V!8PjmkO!Ik!c|64U(ZfXDpdocN0tj zzzUSCyo+CyRdH@dO?cBP+mDvUIn9+LJ?2E$aeLPpCFP~^;+{R>akNJ(yL&-cau?}; z937zf5!AlnxL1>=g#}ccq>Y0Cx{Ba~3jyg3a(09UC>e@LT-~p*dxW5V0lRkJiw}Yh zrdqgy$E&VUC{!U^sDQRW^0FCyU7UnT{%oJ>bTR0a{ zN5P|>wG2$@2m^rrH+#$XU-z<%n(!rmPB-+5%oU`vbHIO~ zw8Yc;8StR1g`kQFM(G9ozZx|L<&qiDsSpjrE*<%N-8MorYEMGveBMYQV;r zw~jyg;J)JmdJR+VRDJI+;KXgRMnn_4^W#OF7kV@FR#9E137P$yi}C3Gf0c7XTfZo# zgn=%n>TX=~Um*R%$B5hYj5O1S>^aq^1XqJfOEvsc6yQ&M`cO+O#BF&HJrxNTMU*ZO zo5oFw0#Jj~{?8b804xL2&Up&<$Mx2Ii*>pYkBOH{HlN^WR2+2+@)GX&S2vYG_AB!$ ziuDqaq)279sPm2G;^Mj)t!-Q$ca9tW5>fj46(=vhb52$IV_FAWaA8`iJ4s1P&Sfms zL3%0s`*+EHLtC+-rXOCRGDHM`M2eLt&|0k&YPbo@7USX4Dh->xx=$WIrcLn7xph4X z>n%3)@8syRFW$rp1y=ydIP8?pN_-h6C9Oy_Z2xh3Vq_$2t@-+p@p8X0LFO>d5&ayM_bctm-tn!a>|4i zlK$aM&32~Ya#v37DhlC8c|EA&xBJgp-t{kJWwbJC!e^cv;zWPC$j*nNK+`!OefrLG zY4FTBmRy}D@KN*r0gea0Q+HgqToYD=S{7LG-xM2ZK>pl4md**3@Swj$QOY z=E=PQWGu0a@ z1kHp_#6smToZ?()7l!U!3JPh_ce9@vh`NYLs96tXx#|~Y^vzTw->4{SGT?xPmkax& zp+VW!soLdCZQKEI<4lYnL~P1FrziQy!?imtCPWnIIU=5iVYtR|sthe40O>MLgWVmm zA}>Zt>=E7e_V$qOvpL`6M0lPbQg(22@rWmHp_*H?jqI6`oL|54pG$Z=OgjA6ieKm! zNF$5;VG^b+>iytiCM9n<#Y|__ES^54|Ce=bslL8m`rF)6mLku@;tb$UgF=4epV6R| za7W!y!LlCHEEtVML%q));9yI5VR{+TFXr{$OkMx5%c90ARC1?nm5CIM>x+;dm6h>X z8?|HI?>;I<`XL*|f;2CU!zA46$V2R@?30}kaF+>Z=YI#rl-ZrzlYCj+Qt#a5JDYqd z0E)FU2_6FiCUsUBbI(`4? zmbVzBD{R`N6xs9GKuNh0j1}HI z%-*rgPAS^7L&#|>>adNu`66L$rJECPl56F4i&pFU-nwRMH$W7AvIvZ=d~ts(x8^#? z9``ALPi(Sj5ROcIwNifa#(NdGW~#}uLUctP%Ng*isWIm3`sLEb&AzT^7qlLfiKwyzxCCa<>18Emsh4W8t8+SiDHv%Y&&<7&=4% z@U0ggcnm@l0V%aw=TX^8A1V@2L8~p6Y4hE9veZ1Lw7tW?2@m5nqP)=7YGW;idUikD z>upK=6Pfn3j#TR$*ns&{&q7&VcE2j;;!#&uceob!7M6&|Kc6c#rw<+8!SOZb37f+X z=;*Rj+=CcQ%s=|k$1Cfvlfw5PS>tJg zB=m0r2RN8|=4z)B!QB~^0zZ_YMqrq%R@!pfk(^FN6#V` z$emvD@NGNbKyYj(I}H9|LJeU;JKm z^tqMurRb%;$8^^>zK^4}{mC7MY8d06%v1k0Q-JW=h+AVLXostIhc#I{xW~uJRrpj+jfI@RGzW2FtTs3tKNmjfc7RxYqWM0Xq~Q4IaIMn&aH z#3O!K&(W<7{$>yoQ3%8br2q#+Q!+O7@r@gouVnO`G97I^9BS6GK;K*jRd;Zbowjfa^Y?DWR3tWqFI7D9=?H3&rdD1~ z4PsnP-FTfg^$}{9axd3ITi^fNoOQs9Nxpb(EI2>SLja9WA?L#0DKz8w7<@%}cODG& zqAIK^#2-*jLcM%`;=b#?K4Zc`P704!qv}m>rfXOq&#cm};)wsP0Yg2gL2eeN;;|{B zC}ccYEQ@JDSHTI)N<)4^T48Cd$W@<_kFYQhWb8;+N`ggzY;<@AhJ+^tCG!L_BX?IRIsg<=mm<_@(M6>)-3oX(?hkIk`J(s zXsD!0mJV;JJdc`x?(cPeWtqA9vK=}rkhhv!IHNL<4@Eo=g_L_C^)5+5N<2`MXthZ1yKQa4W2p1zC5h}? zII!9xuIw%}+uh2Esh+le#P;vJ>TU?=nP3Zd+j|Bpq_+@^w>epDv7KRfPZ0YtO0-Lz z!BFlxx%Bd#DrYSK0(P~lV9C_}jD^YyG~KDEbXVWV-Sh_y8O*E5_EaGNJ8vMOR#YXF zUoBQ8iwR1JZpEd-S#z$^QU5LEjQRyH;iGpzKVXK-w^Rq+LIz?QVtMJICoLpW{kyL8 zHR%izGiCr*ngU7i#to}bG75LaYiF)Ry zRwE^3?!)f*Y_TgFHEyP@+NfMG+}JXCbrAJT#*p$Sb8An^AodHp0;FhcszZ_K-z| z?N|VnHUXw$Ci1|&$b@x#y7@_xT|)XAaDXUfDT#m$3l76E7EAo}1rXg|+N<1jOLdyt zxY#FhA=wyX19pHHLi`}&O@=ko^-IU3Gj9zfS{+l<`1@hMB^$xqwt(o_A^VbjyimG3 zvU6h!+R*$%TJ{`q>3WhVx+H>YsrmecRZ&u+!ay#A0exwrXlSC$3Ws#(d5xLd2dzig zF<|kN^=T|SIG>;I<26_?-)zpPcFvQ;KhZGinyfedn*m8M5Pc2lfR|e)7TjPE`l~Sp zX@S7*a1)9j8-$UZfw595MK2tLpke?+PADiCugEllm zD_)&QC|nwzR#$5hMFZy`;dRWiO+)~i!;%pAeLi)WD;Wve@QK_fhQZ{OXJ!nVhzIPC zc;DIUSTv8Qzx7AP#(ztI&Sgrs_a?(EN7MMAo}b4!4Qa`1D+tC@&6R!P@KpQYdj^#| z21!b~)+R#e@$`q=U{7=#G*|0yFV)lfs1%wgZ1s^T=P}Jv(W(;7Cs0l7fVj`kcA>B! zb+zkK)MpwoQNqQmXO&fX5g&?4%we4_p>Cgpm=d6pb~V%-Nv3Bibut&GFE;Ps%u-1O zQ~(ku84^p3y}lKC4$n((dT5(x>oC2?ctHH*Lb`=VHv;g<9$gY-*I^<%EEe&bs;4SwAQ#!^TsP(FryA67eNGv9^Z zG6q!~4>H~;X+*_<Gg#?J5XG#34*fxKnv8hNuewgndd*uJoPEX- zcj;1%1l1*Y(`FOwkNc)(A?7La;skDp?LCmKiT+5Ia>MEe-flAyZ{%*h{#>m1@VkeX z#k}h_dKR4HyiAg`J^N|EB_tvN+~B@}v!}utO*qngwHp0~`&N#oao!`vm=j*L@wW)T z9Hx+D@}tx(xasF4WCPqBD#207P@){vGCoL`14_}>mK$I63_6a@L(DN^7AlnL6A*AK|+$PVn$_DH|9fK9rEI^+|+t|J_Hpn{D9;8vLus zzw$Mf)-S?7r%wqpPMq@AvrI(}q}ga5DT2Q`-Jw(FzA;x`p&o+W0IT(N30OWwX=M;) zc{dmxkp51PqZI&ngntDDc@*`4XrA(50@WruK69cba;%Jb$fTR`M;cA#e&3UeK#w*2 zlG;-+(8Z7J;B>ujnjR+iW3w5)a>ix7$8#^sE5t0w14p#MTM|wF1keTW7_v+;J3M3L3A|q K)eG-g1^+*MxH5nM literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..152d5e12500b4809d4a5e1bae2d1fa52ebd2757b GIT binary patch literal 3390 zcmV-E4Z-q>P)|1QzpLn7 zyFaogR6Tj$`Fi#0wcd%1s%*aUwf<2~VcFVs$I9-_Ia0dEP`vJFX8^a}4^ihAoqFd>ecFbi@EOV=1w5*RP*i^~7Y{Mp!T{;Xs?1Ic6PvPbc# z7q`X_XEF6=Hq?4FyZ+qE$gZ-pLB)YtNnu6ay5r?j=6jZ27fUJX$E^`$IMnt2ek>DE z?|&}`#Y->=^|G_V>nodi<*T33yRz46E*s2KJLI49W##DXh-RDXLh?DXh?f zTtCii4@fh?Lt4vI&ENWXtV zy)27b@T-_#GBVh|+%X@FM+YaXH7ZCm6py+-cmRL@)B=K#_woNMZ`MyXbcW0~E?KFK zr|Z{JkVGzuN3Sty&3k)wo1R|C=r>yXg8E5TYW=C2dvj0KXoL9>#iRIYbd_*7u0IOS z9YM}eJnGCAGVeq69eRFoQOnnxZGA!eOI9lPbnTwpQ?*)<$59`-sO!DwP>Z@g=)V8F z7InSV-33V0bhE-+TDv`i(}94UUsfTwwA0!`b>tWk0Bo z5RV2SwJ09751^JasOLRTKdD9CUfJ~DcCJBR7@Z^=e_-tc!TYP+=rL$OBg`3UJ&H%+ z3>vpE>N`)r->%|DT{kf;nIs1mxWD294$+8ns9?{~gnB$0hW~!>xjWO(N}6>0m02=L z3@mhiW&hx!Acv^u0(GeC{pY#nF6w&!eW^hm?|t7tFaCGst$JW~UWb0Y*>Nd&f3@Mf zDTw17>W4FbJwCmD8;wWtD7F8nYS&})3uF-a-T)S{L~6py;Kq4#+^ zHsIUpy7ZNW3^}A47;md+;bLe)@s7&Ss0YsC`^g#VfiqvdzrV|ajXnIOPS#&WP_D!#XlNp|=F=4+;}e)`sFy0*iR!_!+&Kb2OOv_cj`jM&8k%S9a)@ zD|4xa_07Pz4&5KGqQ&D2P!m{b6c#*x^rYTWMsq)#Q9PO@zpLrey|dq^8rFw>qs$Yu zKd4RR?al}7XvAi7hTe6`2IlhGks`f=yFTPTibp-jJ1G9|^*wrIej&A>T(r^>C*rFyZaP$8}y=tLMJ>4%C8=c@NL|EsgzpY9W(aSQ!)6)9r(v_mcMq zwYj20hj7=aG6~2_!NH^Y$E7W9NP^r$9Up%#chUP>F6r6D#ni%*zifK2^%8Hb8Wjy~ zF(07NiN*#7A09lce^%CP>nl42@n{g#KHV{-7nYV%3u`*FsPAa*=N(|zp#AYm%$7u!qZ`686dFzdyQN5I6SQ85weSKp;{ZVJvu>F};ZK>)q ze_#=hTHlE#1_od5KcIhqp<(%fE)OaasA4Ej=FxUVgK-Cs$t1*Lw;A^Yu@Pg?!(@p`{PyAusWH$ z&V&U9-|pR~uRCAs_K;!F2zh&Zb(cOhKAmbgzb-4TWfmxK#NCRe>H)@L#ImUrGMAZue($JOP!PB z(|Wt?!9IADoeb`Nq5I?2)>`?%4`-rxpIv=m@Kn)x{r9FzdT4$j)vykXPU&sT8Y#XH zT?X&$7Pvom)fQ`#Fo9KGbzoIhReET6IMv^0eK9ntWe4^^eQ*|9??TWjGIjkHJOy>A z3GCd}1=i5ep!@s#BSuC>QVH$7fy>LY_gTcFc$8gGb`9Jg6vavWrL;+Zw{Kt8L4En< zm%6dBk+47y^F3{qe-Zss@3`JpZ)X#Ay+1HKnjQ33+v*22m=95l@u={x(uSbWzW(}a z{pqKl>JL8nKsPlt5t28w#Vr2<`+F1C6WwD$^KL_vN$w{QSnLB0m(XP-v_}1HOlW)d z?9m^7_@RF1op@{TCXVbUP$1d zW%3Kb{wS>7yLanHAAMB!_V#8S77Pv!t_bbYd`ADJbtHOky8*?c%%0so;q{=RM;nJC z@J20oQECisz5JIH658vpzpnfG`dB`d(7NUp^lw{+na7>c^|9xWTpzx_qS*TY8Utsy zl{bcm5*S+d3{!qkiP<{J`o%>+I{-KfQP<=zTm&ZTLR;?DkjYgUKB&qgpT?wZ3^2#iL%hd%k}- z>(E+ydUbx|pt(Ql_CqbrsAnEeJw9pPEcTyNJ6p!uwo4J0BBcT9`q*>1iw6Jjl$yG( z9-Y@TyrMsZ&XX8+X>gOFtL-sd;jqg!A zTPN-{MhkL?dIxAj1E8m&cwl8{hg&-7726;042-%yX}<7&3H$GCpSV}$bxf@N_kx#E zJZgRWWfYGlLTK_s^y}u%gT8&V#5$?xJ|q_3`iFy$j;eV8Z)3Gvswl z78sP0Z}R)**5q|gW$d7n{(*f+Ey_I{L;0EKB( zkTcX@kLR4)?C*QoW$vPa)S@BxL3THU{V)CC$2~K7`8_jJ@*w1)f$Zu*@mEl9;PeiC zFQGpBeuCLqb~h*=7%%dZooVo)AtMcqYSf2YHYlP*^KO(KQ#AW z1{H@j3CQo$cJpm=kJ;!$c*dPO_+&lbpz29*RR46T2Z*Yo|_ zANS7RYyNo8uHKpAUA=Q{=FiTQcfojk3*l3%cQNx$$*jf~%j~klPt7jb{;!q)5A+32 UptyngmjD0&07*qoM6N<$f{32#_W%F@ literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..310b0b8f4f1ed5dec5fe5480c3aaa1ad05efc440 GIT binary patch literal 7082 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 literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..40ac4ea7a9434539521c5b9e693c804e1ef8273f GIT binary patch literal 10960 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 literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f GIT binary patch literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..521c3e2a6269c88c8d6e6797b53448fe60b6c712 GIT binary patch literal 12001 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000..0bedcf2f --- /dev/null +++ b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +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. \ No newline at end of file diff --git a/freeze_provider_value_notifier/ios/Runner/Base.lproj/LaunchScreen.storyboard b/freeze_provider_value_notifier/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..f2e259c7 --- /dev/null +++ b/freeze_provider_value_notifier/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/freeze_provider_value_notifier/ios/Runner/Base.lproj/Main.storyboard b/freeze_provider_value_notifier/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000..f3c28516 --- /dev/null +++ b/freeze_provider_value_notifier/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/freeze_provider_value_notifier/ios/Runner/Info.plist b/freeze_provider_value_notifier/ios/Runner/Info.plist new file mode 100644 index 00000000..cbeedc31 --- /dev/null +++ b/freeze_provider_value_notifier/ios/Runner/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + change_notifier_provider + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/freeze_provider_value_notifier/ios/Runner/Runner-Bridging-Header.h b/freeze_provider_value_notifier/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000..7335fdf9 --- /dev/null +++ b/freeze_provider_value_notifier/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" \ No newline at end of file diff --git a/freeze_provider_value_notifier/lib/add_todo_screen.dart b/freeze_provider_value_notifier/lib/add_todo_screen.dart new file mode 100644 index 00000000..c620b4b7 --- /dev/null +++ b/freeze_provider_value_notifier/lib/add_todo_screen.dart @@ -0,0 +1,84 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +import 'models.dart'; +import 'todo_list_model.dart'; + +class AddTodoScreen extends StatefulWidget { + const AddTodoScreen() : super(key: ArchSampleKeys.addTodoScreen); + + @override + _AddTodoScreenState createState() => _AddTodoScreenState(); +} + +class _AddTodoScreenState extends State { + final _formKey = GlobalKey(); + final _titleEditingController = TextEditingController(); + final _notesEditingController = TextEditingController(); + + @override + void dispose() { + _titleEditingController.dispose(); + _notesEditingController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final localizations = ArchSampleLocalizations.of(context); + final textTheme = Theme.of(context).textTheme; + + return Scaffold( + appBar: AppBar( + title: Text(localizations.addTodo), + ), + body: Form( + key: _formKey, + autovalidate: false, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + TextFormField( + key: ArchSampleKeys.taskField, + controller: _titleEditingController, + decoration: InputDecoration( + hintText: localizations.newTodoHint, + ), + style: textTheme.headline5, + autofocus: true, + validator: (val) { + return val.trim().isEmpty + ? localizations.emptyTodoError + : null; + }, + ), + TextFormField( + key: ArchSampleKeys.noteField, + controller: _notesEditingController, + style: textTheme.subtitle1, + decoration: InputDecoration(hintText: localizations.notesHint), + maxLines: 10, + ) + ], + ), + ), + ), + floatingActionButton: FloatingActionButton( + key: ArchSampleKeys.saveNewTodo, + tooltip: localizations.addTodo, + onPressed: () { + if (_formKey.currentState.validate()) { + Provider.of(context, listen: false).addTodo(Todo( + _titleEditingController.text, + note: _notesEditingController.text, + )); + Navigator.pop(context); + } + }, + child: const Icon(Icons.add), + ), + ); + } +} diff --git a/freeze_provider_value_notifier/lib/app.dart b/freeze_provider_value_notifier/lib/app.dart new file mode 100644 index 00000000..64a1d6d2 --- /dev/null +++ b/freeze_provider_value_notifier/lib/app.dart @@ -0,0 +1,42 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:meta/meta.dart'; +import 'package:provider/provider.dart'; +import 'package:freeze_provider_value_notifier/add_todo_screen.dart'; +import 'package:freeze_provider_value_notifier/localization.dart'; +import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +import 'home/home_screen.dart'; + +class ProviderApp extends StatelessWidget { + final TodosRepository repository; + + ProviderApp({ + @required this.repository, + }); + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (_) => TodoListModel(repository: repository), + child: MaterialApp( + theme: ArchSampleTheme.theme, + localizationsDelegates: [ + ArchSampleLocalizationsDelegate(), + ProviderLocalizationsDelegate(), + ], + onGenerateTitle: (context) => + ProviderLocalizations.of(context).appTitle, + routes: { + ArchSampleRoutes.home: (context) => HomeScreen(), + ArchSampleRoutes.addTodo: (context) => AddTodoScreen(), + }, + ), + ); + } +} diff --git a/freeze_provider_value_notifier/lib/details_screen.dart b/freeze_provider_value_notifier/lib/details_screen.dart new file mode 100644 index 00000000..b9cda3d4 --- /dev/null +++ b/freeze_provider_value_notifier/lib/details_screen.dart @@ -0,0 +1,108 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +import 'edit_todo_screen.dart'; +import 'models.dart'; +import 'todo_list_model.dart'; + +class DetailsScreen extends StatelessWidget { + final String id; + final VoidCallback onRemove; + + const DetailsScreen({@required this.id, @required this.onRemove}) + : super(key: ArchSampleKeys.todoDetailsScreen); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(ArchSampleLocalizations.of(context).todoDetails), + actions: [ + IconButton( + key: ArchSampleKeys.deleteTodoButton, + tooltip: ArchSampleLocalizations.of(context).deleteTodo, + icon: const Icon(Icons.delete), + onPressed: onRemove, + ) + ], + ), + body: Selector( + selector: (context, model) => model.todoById(id), + shouldRebuild: (prev, next) => next != null, + builder: (context, todo, _) { + return Padding( + padding: const EdgeInsets.all(16.0), + child: ListView( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(right: 8.0), + child: Checkbox( + key: ArchSampleKeys.detailsTodoItemCheckbox, + value: todo.complete, + onChanged: (complete) { + Provider.of(context, listen: false) + .updateTodo(todo.copy(complete: !todo.complete)); + }, + ), + ), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only( + top: 8.0, + bottom: 16.0, + ), + child: Text( + todo.task, + key: ArchSampleKeys.detailsTodoItemTask, + style: Theme.of(context).textTheme.headline5, + ), + ), + Text( + todo.note, + key: ArchSampleKeys.detailsTodoItemNote, + style: Theme.of(context).textTheme.subtitle1, + ) + ], + ), + ), + ], + ), + ], + ), + ); + }, + ), + floatingActionButton: FloatingActionButton( + key: ArchSampleKeys.editTodoFab, + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => EditTodoScreen( + id: id, + onEdit: (task, note) { + final model = + Provider.of(context, listen: false); + final todo = model.todoById(id); + + model.updateTodo(todo.copy(task: task, note: note)); + + return Navigator.pop(context); + }, + ), + ), + ); + }, + child: const Icon(Icons.edit), + ), + ); + } +} diff --git a/freeze_provider_value_notifier/lib/edit_todo_screen.dart b/freeze_provider_value_notifier/lib/edit_todo_screen.dart new file mode 100644 index 00000000..31e8ee42 --- /dev/null +++ b/freeze_provider_value_notifier/lib/edit_todo_screen.dart @@ -0,0 +1,88 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class EditTodoScreen extends StatefulWidget { + final void Function(String task, String note) onEdit; + final String id; + + const EditTodoScreen({ + @required this.id, + @required this.onEdit, + }) : super(key: ArchSampleKeys.editTodoScreen); + + @override + _EditTodoScreenState createState() => _EditTodoScreenState(); +} + +class _EditTodoScreenState extends State { + final _formKey = GlobalKey(); + TextEditingController _taskController; + TextEditingController _noteController; + + @override + void initState() { + final todo = + Provider.of(context, listen: false).todoById(widget.id); + _taskController = TextEditingController(text: todo?.task); + _noteController = TextEditingController(text: todo?.note); + super.initState(); + } + + @override + void dispose() { + _taskController.dispose(); + _noteController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text(ArchSampleLocalizations.of(context).editTodo)), + body: Form( + key: _formKey, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + TextFormField( + controller: _taskController, + key: ArchSampleKeys.taskField, + style: Theme.of(context).textTheme.headline5, + decoration: InputDecoration( + hintText: ArchSampleLocalizations.of(context).newTodoHint, + ), + validator: (val) { + return val.trim().isEmpty + ? ArchSampleLocalizations.of(context).emptyTodoError + : null; + }, + ), + TextFormField( + controller: _noteController, + key: ArchSampleKeys.noteField, + decoration: InputDecoration( + hintText: ArchSampleLocalizations.of(context).notesHint, + ), + maxLines: 10, + ) + ], + ), + ), + ), + floatingActionButton: FloatingActionButton( + key: ArchSampleKeys.saveTodoFab, + tooltip: ArchSampleLocalizations.of(context).saveChanges, + onPressed: () { + if (_formKey.currentState.validate()) { + _formKey.currentState.save(); + widget.onEdit(_taskController.text, _noteController.text); + } + }, + child: const Icon(Icons.check), + ), + ); + } +} diff --git a/freeze_provider_value_notifier/lib/home/extra_actions_button.dart b/freeze_provider_value_notifier/lib/home/extra_actions_button.dart new file mode 100644 index 00000000..81ac1b9f --- /dev/null +++ b/freeze_provider_value_notifier/lib/home/extra_actions_button.dart @@ -0,0 +1,52 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +import '../todo_list_model.dart'; + +class ExtraActionsButton extends StatelessWidget { + const ExtraActionsButton({ + Key key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + final model = Provider.of(context); + + return PopupMenuButton( + key: ArchSampleKeys.extraActionsButton, + onSelected: (action) { + switch (action) { + case ExtraAction.toggleAllComplete: + model.toggleAll(); + break; + case ExtraAction.clearCompleted: + model.clearCompleted(); + break; + } + }, + itemBuilder: (BuildContext context) { + return >[ + PopupMenuItem( + key: ArchSampleKeys.toggleAll, + value: ExtraAction.toggleAllComplete, + child: Text(model.hasActiveTodos + ? ArchSampleLocalizations.of(context).markAllComplete + : ArchSampleLocalizations.of(context).markAllIncomplete), + ), + PopupMenuItem( + key: ArchSampleKeys.clearCompleted, + value: ExtraAction.clearCompleted, + child: Text(ArchSampleLocalizations.of(context).clearCompleted), + ), + ]; + }, + ); + } +} + +enum ExtraAction { toggleAllComplete, clearCompleted } diff --git a/freeze_provider_value_notifier/lib/home/filter_button.dart b/freeze_provider_value_notifier/lib/home/filter_button.dart new file mode 100644 index 00000000..642188bd --- /dev/null +++ b/freeze_provider_value_notifier/lib/home/filter_button.dart @@ -0,0 +1,78 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class FilterButton extends StatelessWidget { + final bool isActive; + + const FilterButton({this.isActive, Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return IgnorePointer( + ignoring: !isActive, + child: AnimatedOpacity( + opacity: isActive ? 1.0 : 0.0, + duration: const Duration(milliseconds: 150), + child: Consumer( + builder: (context, model, _) { + return PopupMenuButton( + key: ArchSampleKeys.filterButton, + tooltip: ArchSampleLocalizations.of(context).filterTodos, + initialValue: model.filter, + onSelected: (filter) => model.filter = filter, + itemBuilder: (BuildContext context) => _items(context, model), + icon: const Icon(Icons.filter_list), + ); + }, + ), + ), + ); + } + + List> _items( + BuildContext context, TodoListModel store) { + final activeStyle = Theme.of(context) + .textTheme + .bodyText2 + .copyWith(color: Theme.of(context).accentColor); + final defaultStyle = Theme.of(context).textTheme.bodyText2; + + return [ + PopupMenuItem( + key: ArchSampleKeys.allFilter, + value: VisibilityFilter.all, + child: Text( + ArchSampleLocalizations.of(context).showAll, + style: + store.filter == VisibilityFilter.all ? activeStyle : defaultStyle, + ), + ), + PopupMenuItem( + key: ArchSampleKeys.activeFilter, + value: VisibilityFilter.active, + child: Text( + ArchSampleLocalizations.of(context).showActive, + style: store.filter == VisibilityFilter.active + ? activeStyle + : defaultStyle, + ), + ), + PopupMenuItem( + key: ArchSampleKeys.completedFilter, + value: VisibilityFilter.completed, + child: Text( + ArchSampleLocalizations.of(context).showCompleted, + style: store.filter == VisibilityFilter.completed + ? activeStyle + : defaultStyle, + ), + ), + ]; + } +} diff --git a/freeze_provider_value_notifier/lib/home/home_screen.dart b/freeze_provider_value_notifier/lib/home/home_screen.dart new file mode 100644 index 00000000..b3967e3a --- /dev/null +++ b/freeze_provider_value_notifier/lib/home/home_screen.dart @@ -0,0 +1,127 @@ +import 'package:flutter/material.dart' hide Action; +import 'package:provider/provider.dart'; +import 'package:freeze_provider_value_notifier/home/stats_view.dart'; +import 'package:freeze_provider_value_notifier/home/todo_list_view.dart'; +import 'package:freeze_provider_value_notifier/localization.dart'; +import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +import '../models.dart'; +import 'extra_actions_button.dart'; +import 'filter_button.dart'; + +class HomeScreen extends StatefulWidget { + const HomeScreen(); + + @override + _HomeScreenState createState() => _HomeScreenState(); +} + +class _HomeScreenState extends State { + // Because the state of the tabs is only a concern to the HomeScreen Widget, + // it is stored as local state rather than in the TodoListModel. + final _tab = ValueNotifier(_HomeScreenTab.todos); + + @override + void dispose() { + _tab.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(ProviderLocalizations.of(context).appTitle), + actions: [ + ValueListenableBuilder<_HomeScreenTab>( + valueListenable: _tab, + builder: (_, tab, __) => FilterButton( + isActive: tab == _HomeScreenTab.todos, + ), + ), + const ExtraActionsButton(), + ], + ), + floatingActionButton: FloatingActionButton( + key: ArchSampleKeys.addTodoFab, + onPressed: () => Navigator.pushNamed(context, ArchSampleRoutes.addTodo), + tooltip: ArchSampleLocalizations.of(context).addTodo, + child: const Icon(Icons.add), + ), + body: Selector( + selector: (context, model) => model.isLoading, + builder: (context, isLoading, _) { + if (isLoading) { + return Center( + child: CircularProgressIndicator( + key: ArchSampleKeys.todosLoading, + ), + ); + } + + return ValueListenableBuilder<_HomeScreenTab>( + valueListenable: _tab, + builder: (context, tab, _) { + switch (tab) { + case _HomeScreenTab.stats: + return const StatsView(); + case _HomeScreenTab.todos: + default: + return TodoListView( + onRemove: (context, todo) { + Provider.of(context, listen: false) + .removeTodo(todo); + _showUndoSnackbar(context, todo); + }, + ); + } + }, + ); + }, + ), + bottomNavigationBar: ValueListenableBuilder<_HomeScreenTab>( + valueListenable: _tab, + builder: (context, tab, _) { + return BottomNavigationBar( + key: ArchSampleKeys.tabs, + currentIndex: _HomeScreenTab.values.indexOf(tab), + onTap: (int index) => _tab.value = _HomeScreenTab.values[index], + items: [ + BottomNavigationBarItem( + icon: Icon(Icons.list, key: ArchSampleKeys.todoTab), + title: Text(ArchSampleLocalizations.of(context).todos), + ), + BottomNavigationBarItem( + icon: Icon(Icons.show_chart, key: ArchSampleKeys.statsTab), + title: Text(ArchSampleLocalizations.of(context).stats), + ), + ], + ); + }, + ), + ); + } + + void _showUndoSnackbar(BuildContext context, Todo todo) { + Scaffold.of(context).showSnackBar( + SnackBar( + key: ArchSampleKeys.snackbar, + duration: const Duration(seconds: 2), + content: Text( + ArchSampleLocalizations.of(context).todoDeleted(todo.task), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + action: SnackBarAction( + key: ArchSampleKeys.snackbarAction(todo.id), + label: ArchSampleLocalizations.of(context).undo, + onPressed: () => + Provider.of(context, listen: false).addTodo(todo), + ), + ), + ); + } +} + +enum _HomeScreenTab { todos, stats } diff --git a/freeze_provider_value_notifier/lib/home/stats_view.dart b/freeze_provider_value_notifier/lib/home/stats_view.dart new file mode 100644 index 00000000..4ec8929a --- /dev/null +++ b/freeze_provider_value_notifier/lib/home/stats_view.dart @@ -0,0 +1,56 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +class StatsView extends StatelessWidget { + const StatsView(); + + @override + Widget build(BuildContext context) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: Text( + ArchSampleLocalizations.of(context).completedTodos, + style: Theme.of(context).textTheme.headline6, + ), + ), + Padding( + padding: const EdgeInsets.only(bottom: 24.0), + child: Selector( + selector: (_, model) => model.numCompleted, + builder: (context, numCompleted, _) => Text( + '$numCompleted', + key: ArchSampleKeys.statsNumCompleted, + style: Theme.of(context).textTheme.subtitle1, + ), + ), + ), + Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: Text( + ArchSampleLocalizations.of(context).activeTodos, + style: Theme.of(context).textTheme.headline6, + ), + ), + Padding( + padding: const EdgeInsets.only(bottom: 24.0), + child: Selector( + selector: (_, model) => model.numActive, + builder: (context, numActive, _) => Text( + '$numActive', + key: ArchSampleKeys.statsNumActive, + style: Theme.of(context).textTheme.subtitle1, + ), + ), + ) + ], + ), + ); + } +} diff --git a/freeze_provider_value_notifier/lib/home/todo_list_view.dart b/freeze_provider_value_notifier/lib/home/todo_list_view.dart new file mode 100644 index 00000000..905cefb4 --- /dev/null +++ b/freeze_provider_value_notifier/lib/home/todo_list_view.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; + +import '../details_screen.dart'; +import '../models.dart'; + +class TodoListView extends StatelessWidget { + final void Function(BuildContext context, Todo todo) onRemove; + + TodoListView({Key key, @required this.onRemove}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Selector>( + selector: (_, model) => model.filteredTodos, + builder: (context, todos, _) { + return ListView.builder( + key: ArchSampleKeys.todoList, + itemCount: todos.length, + itemBuilder: (context, index) { + final todo = todos[index]; + + return Dismissible( + key: ArchSampleKeys.todoItem(todo.id), + onDismissed: (_) => onRemove(context, todo), + child: ListTile( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (_) { + return DetailsScreen( + id: todo?.id, + onRemove: () { + Navigator.pop(context); + onRemove(context, todo); + }, + ); + }, + ), + ); + }, + leading: Checkbox( + key: ArchSampleKeys.todoItemCheckbox(todo.id), + value: todo.complete, + onChanged: (complete) { + Provider.of(context, listen: false) + .updateTodo(todo.copy(complete: complete)); + }, + ), + title: Text( + todo.task, + key: ArchSampleKeys.todoItemTask(todo.id), + style: Theme.of(context).textTheme.headline6, + ), + subtitle: Text( + todo.note, + key: ArchSampleKeys.todoItemNote(todo.id), + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: Theme.of(context).textTheme.subtitle1, + ), + ), + ); + }, + ); + }, + ); + } +} diff --git a/freeze_provider_value_notifier/lib/localization.dart b/freeze_provider_value_notifier/lib/localization.dart new file mode 100644 index 00000000..9ca0b67d --- /dev/null +++ b/freeze_provider_value_notifier/lib/localization.dart @@ -0,0 +1,30 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; + +import 'package:flutter/material.dart'; + +class ProviderLocalizations { + static ProviderLocalizations of(BuildContext context) { + return Localizations.of( + context, ProviderLocalizations); + } + + String get appTitle => 'Provider Example'; +} + +class ProviderLocalizationsDelegate + extends LocalizationsDelegate { + @override + Future load(Locale locale) => + Future(() => ProviderLocalizations()); + + @override + bool shouldReload(ProviderLocalizationsDelegate old) => false; + + @override + bool isSupported(Locale locale) => + locale.languageCode.toLowerCase().contains('en'); +} diff --git a/freeze_provider_value_notifier/lib/main.dart b/freeze_provider_value_notifier/lib/main.dart new file mode 100644 index 00000000..f569a454 --- /dev/null +++ b/freeze_provider_value_notifier/lib/main.dart @@ -0,0 +1,22 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:freeze_provider_value_notifier/app.dart'; +import 'package:flutter/material.dart'; +import 'package:key_value_store_flutter/key_value_store_flutter.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; + +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + + runApp(ProviderApp( + repository: LocalStorageRepository( + localStorage: KeyValueStorage( + 'change_notifier_provider_todos', + FlutterKeyValueStore(await SharedPreferences.getInstance()), + ), + ), + )); +} diff --git a/freeze_provider_value_notifier/lib/main_web.dart b/freeze_provider_value_notifier/lib/main_web.dart new file mode 100644 index 00000000..d1ed358b --- /dev/null +++ b/freeze_provider_value_notifier/lib/main_web.dart @@ -0,0 +1,23 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:html'; + +import 'package:freeze_provider_value_notifier/app.dart'; +import 'package:flutter/material.dart'; +import 'package:key_value_store_web/key_value_store_web.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; + +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + + runApp(ProviderApp( + repository: LocalStorageRepository( + localStorage: KeyValueStorage( + 'change_notifier_provider', + WebKeyValueStore(window.localStorage), + ), + ), + )); +} diff --git a/freeze_provider_value_notifier/lib/models.dart b/freeze_provider_value_notifier/lib/models.dart new file mode 100644 index 00000000..699321cb --- /dev/null +++ b/freeze_provider_value_notifier/lib/models.dart @@ -0,0 +1,61 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +enum AppTab { todos, stats } + +enum ExtraAction { toggleAllComplete, clearCompleted } + +class Todo { + final bool complete; + final String id; + final String note; + final String task; + + Todo(this.task, {this.complete = false, this.note = '', String id}) + : id = id ?? Uuid().generateV4(); + + @override + int get hashCode => + complete.hashCode ^ task.hashCode ^ note.hashCode ^ id.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is Todo && + runtimeType == other.runtimeType && + complete == other.complete && + task == other.task && + note == other.note && + id == other.id; + + @override + String toString() { + return 'Todo{complete: $complete, task: $task, note: $note, id: $id}'; + } + + TodoEntity toEntity() { + return TodoEntity(task, id, note, complete); + } + + static Todo fromEntity(TodoEntity entity) { + return Todo( + entity.task, + complete: entity.complete ?? false, + note: entity.note, + id: entity.id, + ); + } + + Todo copy({String task, bool complete, String note, String id}) { + return Todo( + task ?? this.task, + complete: complete ?? this.complete, + note: note ?? this.note, + id: id ?? this.id, + ); + } +} diff --git a/freeze_provider_value_notifier/lib/todo_list_model.dart b/freeze_provider_value_notifier/lib/todo_list_model.dart new file mode 100644 index 00000000..a69c78a2 --- /dev/null +++ b/freeze_provider_value_notifier/lib/todo_list_model.dart @@ -0,0 +1,133 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; +import 'dart:collection'; + +import 'package:flutter/widgets.dart'; +import 'package:meta/meta.dart'; +import 'package:freeze_provider_value_notifier/models.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +enum VisibilityFilter { all, active, completed } + +class TodoListModel extends ChangeNotifier { + final TodosRepository repository; + + VisibilityFilter _filter; + + VisibilityFilter get filter => _filter; + + set filter(VisibilityFilter filter) { + _filter = filter; + notifyListeners(); + } + + List _todos; + + UnmodifiableListView get todos => UnmodifiableListView(_todos); + + bool _isLoading = false; + + bool get isLoading => _isLoading; + + TodoListModel({ + @required this.repository, + VisibilityFilter filter, + List todos, + }) : _todos = todos ?? [], + _filter = filter ?? VisibilityFilter.all; + + @override + void addListener(VoidCallback listener) { + super.addListener(listener); + // update data for every subscriber, especially for the first one + loadTodos(); + } + + /// Loads remote data + /// + /// Call this initially and when the user manually refreshes + Future loadTodos() { + _isLoading = true; + notifyListeners(); + + return repository.loadTodos().then((loadedTodos) { + _todos.addAll(loadedTodos.map(Todo.fromEntity)); + _isLoading = false; + notifyListeners(); + }).catchError((err) { + _isLoading = false; + notifyListeners(); + }); + } + + List get filteredTodos { + return _todos.where((todo) { + switch (filter) { + case VisibilityFilter.active: + return !todo.complete; + case VisibilityFilter.completed: + return todo.complete; + case VisibilityFilter.all: + default: + return true; + } + }).toList(); + } + + void clearCompleted() { + _todos.removeWhere((todo) => todo.complete); + notifyListeners(); + _uploadItems(); + } + + void toggleAll() { + var allComplete = todos.every((todo) => todo.complete); + _todos = _todos.map((todo) => todo.copy(complete: !allComplete)).toList(); + notifyListeners(); + _uploadItems(); + } + + /// updates a [Todo] by replacing the item with the same id by the parameter [todo] + void updateTodo(Todo todo) { + assert(todo != null); + assert(todo.id != null); + var oldTodo = _todos.firstWhere((it) => it.id == todo.id); + var replaceIndex = _todos.indexOf(oldTodo); + _todos.replaceRange(replaceIndex, replaceIndex + 1, [todo]); + notifyListeners(); + _uploadItems(); + } + + void removeTodo(Todo todo) { + _todos.removeWhere((it) => it.id == todo.id); + notifyListeners(); + _uploadItems(); + } + + void addTodo(Todo todo) { + _todos.add(todo); + notifyListeners(); + _uploadItems(); + } + + void _uploadItems() { + repository.saveTodos(_todos.map((it) => it.toEntity()).toList()); + } + + Todo todoById(String id) { + return _todos.firstWhere((it) => it.id == id, orElse: () => null); + } + + int get numCompleted => + todos.where((Todo todo) => todo.complete).toList().length; + + bool get hasCompleted => numCompleted > 0; + + int get numActive => + todos.where((Todo todo) => !todo.complete).toList().length; + + bool get hasActiveTodos => numActive > 0; +} diff --git a/freeze_provider_value_notifier/line_count.md b/freeze_provider_value_notifier/line_count.md new file mode 100644 index 00000000..e69de29b diff --git a/freeze_provider_value_notifier/pubspec.yaml b/freeze_provider_value_notifier/pubspec.yaml new file mode 100644 index 00000000..19754a09 --- /dev/null +++ b/freeze_provider_value_notifier/pubspec.yaml @@ -0,0 +1,34 @@ +name: freeze_provider_value_notifier +description: A new Flutter project. + +version: 1.0.0+1 + +environment: + sdk: ">=2.6.0 <3.0.0" + +dependencies: + provider: ^4.0.1 + todos_repository_local_storage: + path: ../todos_repository_local_storage + todos_app_core: + path: ../todos_app_core + flutter: + sdk: flutter + key_value_store_flutter: + key_value_store_web: + shared_preferences: + +dev_dependencies: + freezed: + build_runner: + mockito: + test: + flutter_test: + sdk: flutter + flutter_driver: + sdk: flutter + integration_tests: + path: ../integration_tests + +flutter: + uses-material-design: true diff --git a/freeze_provider_value_notifier/test/app_state_test.dart b/freeze_provider_value_notifier/test/app_state_test.dart new file mode 100644 index 00000000..b16c99a8 --- /dev/null +++ b/freeze_provider_value_notifier/test/app_state_test.dart @@ -0,0 +1,145 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'package:freeze_provider_value_notifier/models.dart'; +import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:test/test.dart'; + +import 'mock_repository.dart'; + +void main() { + group('TodoListModel', () { + test('should check if there are completed todos', () async { + final model = TodoListModel( + repository: MockRepository(), + todos: [Todo('a'), Todo('b'), Todo('c', complete: true)], + ); + + expect(model.numCompleted, 1); + expect(model.hasCompleted, isTrue); + }); + + test('should calculate the number of active todos', () async { + final model = TodoListModel( + repository: MockRepository(), + todos: [Todo('a'), Todo('b'), Todo('c', complete: true)], + ); + + expect(model.hasActiveTodos, isTrue); + expect(model.numActive, 2); + }); + + test('should return all todos if the VisibilityFilter is all', () async { + final todos = [Todo('a'), Todo('b'), Todo('c', complete: true)]; + final model = TodoListModel( + filter: VisibilityFilter.all, + repository: MockRepository(), + todos: todos, + ); + + expect(model.filteredTodos, todos); + }); + + test('should return active todos if the VisibilityFilter is active', + () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final model = TodoListModel( + filter: VisibilityFilter.active, + repository: MockRepository(), + todos: [todo1, todo2, todo3], + ); + + expect(model.filteredTodos, [todo1, todo2]); + }); + + test('should return completed todos if the VisibilityFilter is completed', + () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final model = TodoListModel( + filter: VisibilityFilter.completed, + repository: MockRepository(), + todos: [todo1, todo2, todo3], + ); + + expect(model.filteredTodos, [todo3]); + }); + + test('should clear the completed todos', () async { + final repository = MockRepository(); + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final model = TodoListModel( + repository: repository, + todos: [todo1, todo2, todo3], + ); + + model.clearCompleted(); + + expect(model.todos, [todo1, todo2]); + expect(repository.saveCount, 1); + }); + + test('toggle all as complete or incomplete', () async { + final repository = MockRepository(); + final model = TodoListModel( + repository: repository, + todos: [Todo('a'), Todo('b'), Todo('c', complete: true)], + ); + + // Toggle all complete + model.toggleAll(); + expect(model.todos.every((t) => t.complete), isTrue); + expect(repository.saveCount, 1); + + // Toggle all incomplete + model.toggleAll(); + expect(model.todos.every((t) => !t.complete), isTrue); + expect(repository.saveCount, 2); + }); + + test('should add a todo', () async { + final repository = MockRepository(); + final todo = Todo('A'); + final model = TodoListModel(repository: repository); + + model.addTodo(todo); + + expect(model.todos, [todo]); + expect(repository.saveCount, 1); + }); + + test('should remove a todo', () async { + final repository = MockRepository(); + final todo = Todo('A'); + final model = TodoListModel(repository: repository, todos: [todo]); + + model.removeTodo(todo); + + expect(model.todos, []); + expect(repository.saveCount, 1); + }); + + test('should update a todo', () async { + final repository = MockRepository(); + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final update = todo2.copy(complete: true); + final model = TodoListModel( + repository: repository, + todos: [todo1, todo2, todo3], + ); + + model.updateTodo(update); + + expect(model.todos, [todo1, update, todo3]); + expect(repository.saveCount, 1); + }); + }); +} diff --git a/freeze_provider_value_notifier/test/home_screen_test.dart b/freeze_provider_value_notifier/test/home_screen_test.dart new file mode 100644 index 00000000..ac8c3257 --- /dev/null +++ b/freeze_provider_value_notifier/test/home_screen_test.dart @@ -0,0 +1,132 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:provider/provider.dart'; +import 'package:freeze_provider_value_notifier/home/home_screen.dart'; +import 'package:freeze_provider_value_notifier/localization.dart'; +import 'package:freeze_provider_value_notifier/models.dart'; +import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:todos_app_core/todos_app_core.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +import 'mock_repository.dart'; + +/// Demonstrates how to test Widgets +void main() { + group('HomeScreen', () { + final todoListFinder = find.byKey(ArchSampleKeys.todoList); + final todoItem1Finder = find.byKey(ArchSampleKeys.todoItem('1')); + final todoItem2Finder = find.byKey(ArchSampleKeys.todoItem('2')); + final todoItem3Finder = find.byKey(ArchSampleKeys.todoItem('3')); + + testWidgets('should render loading indicator at first', (tester) async { + await tester.pumpWidget(_TestWidget()); + await tester.pump(Duration.zero); + + expect(find.byKey(ArchSampleKeys.todosLoading), findsOneWidget); + }); + + testWidgets('should display a list after loading todos', (tester) async { + final handle = tester.ensureSemantics(); + await tester.pumpWidget(_TestWidget()); + await tester.pumpAndSettle(); + + final checkbox1 = find.descendant( + of: find.byKey(ArchSampleKeys.todoItemCheckbox('1')), + matching: find.byType(Focus), + ); + final checkbox2 = find.descendant( + of: find.byKey(ArchSampleKeys.todoItemCheckbox('2')), + matching: find.byType(Focus), + ); + final checkbox3 = find.descendant( + of: find.byKey(ArchSampleKeys.todoItemCheckbox('3')), + matching: find.byType(Focus), + ); + + expect(todoListFinder, findsOneWidget); + expect(todoItem1Finder, findsOneWidget); + expect(find.text('T1'), findsOneWidget); + expect(find.text('N1'), findsOneWidget); + expect(tester.getSemantics(checkbox1), isChecked(false)); + expect(todoItem2Finder, findsOneWidget); + expect(find.text('T2'), findsOneWidget); + expect(tester.getSemantics(checkbox2), isChecked(false)); + expect(todoItem3Finder, findsOneWidget); + expect(find.text('T3'), findsOneWidget); + expect(tester.getSemantics(checkbox3), isChecked(true)); + + handle.dispose(); + }); + + testWidgets('should remove todos using a dismissible', (tester) async { + await tester.pumpWidget(_TestWidget()); + await tester.pumpAndSettle(); + await tester.drag(todoItem1Finder, Offset(-1000, 0)); + await tester.pumpAndSettle(Duration(seconds: 5)); + + expect(todoItem1Finder, findsNothing); + expect(todoItem2Finder, findsOneWidget); + expect(todoItem3Finder, findsOneWidget); + }); + + testWidgets('should display stats when switching tabs', (tester) async { + await tester.pumpWidget(_TestWidget()); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(ArchSampleKeys.statsTab)); + await tester.pump(); + + expect(find.byKey(ArchSampleKeys.statsNumActive), findsOneWidget); + expect(find.byKey(ArchSampleKeys.statsNumActive), findsOneWidget); + }); + }); +} + +class _TestWidget extends StatelessWidget { + final Widget child; + final TodosRepository repository; + final List todos; + + const _TestWidget({ + Key key, + this.child, + this.repository, + this.todos = const [], + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (_) => TodoListModel( + repository: MockRepository([]), + todos: defaultTodos(), + ), + child: MaterialApp( + localizationsDelegates: [ + ProviderLocalizationsDelegate(), + ArchSampleLocalizationsDelegate(), + ], + home: child ?? const HomeScreen(), + ), + ); + } +} + +List defaultTodos() { + return [ + Todo('T1', id: '1', note: 'N1'), + Todo('T2', id: '2'), + Todo('T3', id: '3', complete: true), + ]; +} + +Matcher isChecked(bool isChecked) { + return matchesSemantics( + isChecked: isChecked, + hasCheckedState: true, + hasEnabledState: true, + isEnabled: true, + isFocusable: true, + hasTapAction: true, + ); +} diff --git a/freeze_provider_value_notifier/test/mock_repository.dart b/freeze_provider_value_notifier/test/mock_repository.dart new file mode 100644 index 00000000..a85f86fe --- /dev/null +++ b/freeze_provider_value_notifier/test/mock_repository.dart @@ -0,0 +1,21 @@ +// Provides a Mock repository that can be used for testing in place of the real +// thing. +import 'package:freeze_provider_value_notifier/models.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +class MockRepository extends TodosRepository { + List entities; + int saveCount = 0; + + MockRepository([List todos = const []]) + : entities = todos.map((it) => it.toEntity()).toList(); + + @override + Future> loadTodos() async => entities; + + @override + Future saveTodos(List todos) async { + saveCount++; + entities = todos; + } +} diff --git a/freeze_provider_value_notifier/test_driver/todo_app.dart b/freeze_provider_value_notifier/test_driver/todo_app.dart new file mode 100644 index 00000000..a47e964b --- /dev/null +++ b/freeze_provider_value_notifier/test_driver/todo_app.dart @@ -0,0 +1,13 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +// This line imports the extension +import 'package:flutter_driver/driver_extension.dart'; +import 'package:freeze_provider_value_notifier/main.dart' as app; + +void main() { + enableFlutterDriverExtension(); + + app.main(); +} diff --git a/freeze_provider_value_notifier/test_driver/todo_app_test.dart b/freeze_provider_value_notifier/test_driver/todo_app_test.dart new file mode 100644 index 00000000..fa00c88c --- /dev/null +++ b/freeze_provider_value_notifier/test_driver/todo_app_test.dart @@ -0,0 +1,9 @@ +// _copyright 2018 _the _flutter _architecture _sample _authors. _all rights reserved. +// _use of this source code is governed by the _m_i_t license that can be found +// in the _l_i_c_e_n_s_e file. + +import 'package:integration_tests/integration_tests.dart' as integration_tests; + +void main() { + integration_tests.main(); +} diff --git a/freeze_provider_value_notifier/web/index.html b/freeze_provider_value_notifier/web/index.html new file mode 100644 index 00000000..47bbc93b --- /dev/null +++ b/freeze_provider_value_notifier/web/index.html @@ -0,0 +1,10 @@ + + + + + change_notifier_provider + + + + + diff --git a/frideos_library/.flutter-plugins-dependencies b/frideos_library/.flutter-plugins-dependencies index 17d9de06..4ded62f8 100644 --- a/frideos_library/.flutter-plugins-dependencies +++ b/frideos_library/.flutter-plugins-dependencies @@ -1 +1 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"path_provider","dependencies":[]}]} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"android":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":[]}],"date_created":"2020-02-10 11:24:01.218565","version":"1.14.7-pre.38"} \ No newline at end of file diff --git a/mvc/.flutter-plugins-dependencies b/mvc/.flutter-plugins-dependencies index 17d9de06..b728d6fd 100644 --- a/mvc/.flutter-plugins-dependencies +++ b/mvc/.flutter-plugins-dependencies @@ -1 +1 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"path_provider","dependencies":[]}]} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"android":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":[]}],"date_created":"2020-02-10 11:24:16.829310","version":"1.14.7-pre.38"} \ No newline at end of file diff --git a/mvu/.flutter-plugins-dependencies b/mvu/.flutter-plugins-dependencies index 17d9de06..30693179 100644 --- a/mvu/.flutter-plugins-dependencies +++ b/mvu/.flutter-plugins-dependencies @@ -1 +1 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"path_provider","dependencies":[]}]} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"android":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":[]}],"date_created":"2020-02-10 11:24:26.886816","version":"1.14.7-pre.38"} \ No newline at end of file diff --git a/scoped_model/.flutter-plugins-dependencies b/scoped_model/.flutter-plugins-dependencies index 17d9de06..d4d3c8cc 100644 --- a/scoped_model/.flutter-plugins-dependencies +++ b/scoped_model/.flutter-plugins-dependencies @@ -1 +1 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"path_provider","dependencies":[]}]} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"android":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":[]}],"date_created":"2020-02-10 11:24:35.748663","version":"1.14.7-pre.38"} \ No newline at end of file diff --git a/todos_app_core/.flutter-plugins-dependencies b/todos_app_core/.flutter-plugins-dependencies index 17d9de06..8885f09e 100644 --- a/todos_app_core/.flutter-plugins-dependencies +++ b/todos_app_core/.flutter-plugins-dependencies @@ -1 +1 @@ -{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"path_provider","dependencies":[]}]} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"android":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":[]}],"date_created":"2020-02-10 11:24:47.749791","version":"1.14.7-pre.38"} \ No newline at end of file From 3ec82328c25b93f8bef97807a79daf137eb48c6a Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Mon, 10 Feb 2020 14:53:29 +0000 Subject: [PATCH 59/77] make it work --- .../lib/add_todo_screen.dart | 2 +- freeze_provider_value_notifier/lib/app.dart | 9 +- .../lib/details_screen.dart | 16 +- .../lib/edit_todo_screen.dart | 7 +- .../lib/home/extra_actions_button.dart | 6 +- .../lib/home/filter_button.dart | 6 +- .../lib/home/home_screen.dart | 10 +- .../lib/home/stats_view.dart | 4 +- .../lib/home/todo_list_view.dart | 5 +- .../lib/todo_list_model.dart | 291 ++++++++++++------ .../lib/todo_list_model.freezed.dart | 87 ++++++ .../lib/value_notifier_provider.dart | 30 ++ freeze_provider_value_notifier/pubspec.yaml | 2 +- .../test/app_state_test.dart | 83 ++--- .../test/home_screen_test.dart | 24 +- 15 files changed, 400 insertions(+), 182 deletions(-) create mode 100644 freeze_provider_value_notifier/lib/todo_list_model.freezed.dart create mode 100644 freeze_provider_value_notifier/lib/value_notifier_provider.dart diff --git a/freeze_provider_value_notifier/lib/add_todo_screen.dart b/freeze_provider_value_notifier/lib/add_todo_screen.dart index c620b4b7..3962aa7b 100644 --- a/freeze_provider_value_notifier/lib/add_todo_screen.dart +++ b/freeze_provider_value_notifier/lib/add_todo_screen.dart @@ -70,7 +70,7 @@ class _AddTodoScreenState extends State { tooltip: localizations.addTodo, onPressed: () { if (_formKey.currentState.validate()) { - Provider.of(context, listen: false).addTodo(Todo( + context.read().addTodo(Todo( _titleEditingController.text, note: _notesEditingController.text, )); diff --git a/freeze_provider_value_notifier/lib/app.dart b/freeze_provider_value_notifier/lib/app.dart index 64a1d6d2..ec03b049 100644 --- a/freeze_provider_value_notifier/lib/app.dart +++ b/freeze_provider_value_notifier/lib/app.dart @@ -3,8 +3,8 @@ // in the LICENSE file. import 'package:flutter/material.dart'; +import 'package:freeze_provider_value_notifier/value_notifier_provider.dart'; import 'package:meta/meta.dart'; -import 'package:provider/provider.dart'; import 'package:freeze_provider_value_notifier/add_todo_screen.dart'; import 'package:freeze_provider_value_notifier/localization.dart'; import 'package:freeze_provider_value_notifier/todo_list_model.dart'; @@ -22,16 +22,15 @@ class ProviderApp extends StatelessWidget { @override Widget build(BuildContext context) { - return ChangeNotifierProvider( - create: (_) => TodoListModel(repository: repository), + return ValueNotifierProvider( + create: (_) => TodoListController(todosRepository: repository), child: MaterialApp( theme: ArchSampleTheme.theme, localizationsDelegates: [ ArchSampleLocalizationsDelegate(), ProviderLocalizationsDelegate(), ], - onGenerateTitle: (context) => - ProviderLocalizations.of(context).appTitle, + onGenerateTitle: (context) => ProviderLocalizations.of(context).appTitle, routes: { ArchSampleRoutes.home: (context) => HomeScreen(), ArchSampleRoutes.addTodo: (context) => AddTodoScreen(), diff --git a/freeze_provider_value_notifier/lib/details_screen.dart b/freeze_provider_value_notifier/lib/details_screen.dart index b9cda3d4..507e3322 100644 --- a/freeze_provider_value_notifier/lib/details_screen.dart +++ b/freeze_provider_value_notifier/lib/details_screen.dart @@ -11,8 +11,7 @@ class DetailsScreen extends StatelessWidget { final String id; final VoidCallback onRemove; - const DetailsScreen({@required this.id, @required this.onRemove}) - : super(key: ArchSampleKeys.todoDetailsScreen); + const DetailsScreen({@required this.id, @required this.onRemove}) : super(key: ArchSampleKeys.todoDetailsScreen); @override Widget build(BuildContext context) { @@ -28,7 +27,7 @@ class DetailsScreen extends StatelessWidget { ) ], ), - body: Selector( + body: Selector( selector: (context, model) => model.todoById(id), shouldRebuild: (prev, next) => next != null, builder: (context, todo, _) { @@ -45,8 +44,7 @@ class DetailsScreen extends StatelessWidget { key: ArchSampleKeys.detailsTodoItemCheckbox, value: todo.complete, onChanged: (complete) { - Provider.of(context, listen: false) - .updateTodo(todo.copy(complete: !todo.complete)); + context.read().updateTodo(todo.copy(complete: !todo.complete)); }, ), ), @@ -89,11 +87,9 @@ class DetailsScreen extends StatelessWidget { builder: (context) => EditTodoScreen( id: id, onEdit: (task, note) { - final model = - Provider.of(context, listen: false); - final todo = model.todoById(id); - - model.updateTodo(todo.copy(task: task, note: note)); + context + .read() + .updateTodo(context.read().todoById(id)?.copy(task: task, note: note)); return Navigator.pop(context); }, diff --git a/freeze_provider_value_notifier/lib/edit_todo_screen.dart b/freeze_provider_value_notifier/lib/edit_todo_screen.dart index 31e8ee42..d0c6e87e 100644 --- a/freeze_provider_value_notifier/lib/edit_todo_screen.dart +++ b/freeze_provider_value_notifier/lib/edit_todo_screen.dart @@ -23,8 +23,7 @@ class _EditTodoScreenState extends State { @override void initState() { - final todo = - Provider.of(context, listen: false).todoById(widget.id); + final todo = context.read().todoById(widget.id); _taskController = TextEditingController(text: todo?.task); _noteController = TextEditingController(text: todo?.note); super.initState(); @@ -55,9 +54,7 @@ class _EditTodoScreenState extends State { hintText: ArchSampleLocalizations.of(context).newTodoHint, ), validator: (val) { - return val.trim().isEmpty - ? ArchSampleLocalizations.of(context).emptyTodoError - : null; + return val.trim().isEmpty ? ArchSampleLocalizations.of(context).emptyTodoError : null; }, ), TextFormField( diff --git a/freeze_provider_value_notifier/lib/home/extra_actions_button.dart b/freeze_provider_value_notifier/lib/home/extra_actions_button.dart index 81ac1b9f..5975c7f0 100644 --- a/freeze_provider_value_notifier/lib/home/extra_actions_button.dart +++ b/freeze_provider_value_notifier/lib/home/extra_actions_button.dart @@ -15,17 +15,17 @@ class ExtraActionsButton extends StatelessWidget { @override Widget build(BuildContext context) { - final model = Provider.of(context); + final model = Provider.of(context); return PopupMenuButton( key: ArchSampleKeys.extraActionsButton, onSelected: (action) { switch (action) { case ExtraAction.toggleAllComplete: - model.toggleAll(); + context.read().toggleAll(); break; case ExtraAction.clearCompleted: - model.clearCompleted(); + context.read().clearCompleted(); break; } }, diff --git a/freeze_provider_value_notifier/lib/home/filter_button.dart b/freeze_provider_value_notifier/lib/home/filter_button.dart index 642188bd..46461b16 100644 --- a/freeze_provider_value_notifier/lib/home/filter_button.dart +++ b/freeze_provider_value_notifier/lib/home/filter_button.dart @@ -19,13 +19,13 @@ class FilterButton extends StatelessWidget { child: AnimatedOpacity( opacity: isActive ? 1.0 : 0.0, duration: const Duration(milliseconds: 150), - child: Consumer( + child: Consumer( builder: (context, model, _) { return PopupMenuButton( key: ArchSampleKeys.filterButton, tooltip: ArchSampleLocalizations.of(context).filterTodos, initialValue: model.filter, - onSelected: (filter) => model.filter = filter, + onSelected: (filter) => context.read().filter = filter, itemBuilder: (BuildContext context) => _items(context, model), icon: const Icon(Icons.filter_list), ); @@ -36,7 +36,7 @@ class FilterButton extends StatelessWidget { } List> _items( - BuildContext context, TodoListModel store) { + BuildContext context, TodoList store) { final activeStyle = Theme.of(context) .textTheme .bodyText2 diff --git a/freeze_provider_value_notifier/lib/home/home_screen.dart b/freeze_provider_value_notifier/lib/home/home_screen.dart index b3967e3a..3be30c0d 100644 --- a/freeze_provider_value_notifier/lib/home/home_screen.dart +++ b/freeze_provider_value_notifier/lib/home/home_screen.dart @@ -49,8 +49,8 @@ class _HomeScreenState extends State { tooltip: ArchSampleLocalizations.of(context).addTodo, child: const Icon(Icons.add), ), - body: Selector( - selector: (context, model) => model.isLoading, + body: Selector( + selector: (context, model) => model.loading, builder: (context, isLoading, _) { if (isLoading) { return Center( @@ -70,8 +70,7 @@ class _HomeScreenState extends State { default: return TodoListView( onRemove: (context, todo) { - Provider.of(context, listen: false) - .removeTodo(todo); + context.read().removeTodoWithId(todo.id); _showUndoSnackbar(context, todo); }, ); @@ -116,8 +115,7 @@ class _HomeScreenState extends State { action: SnackBarAction( key: ArchSampleKeys.snackbarAction(todo.id), label: ArchSampleLocalizations.of(context).undo, - onPressed: () => - Provider.of(context, listen: false).addTodo(todo), + onPressed: () => context.read().addTodo(todo), ), ), ); diff --git a/freeze_provider_value_notifier/lib/home/stats_view.dart b/freeze_provider_value_notifier/lib/home/stats_view.dart index 4ec8929a..dcf0caa9 100644 --- a/freeze_provider_value_notifier/lib/home/stats_view.dart +++ b/freeze_provider_value_notifier/lib/home/stats_view.dart @@ -22,7 +22,7 @@ class StatsView extends StatelessWidget { ), Padding( padding: const EdgeInsets.only(bottom: 24.0), - child: Selector( + child: Selector( selector: (_, model) => model.numCompleted, builder: (context, numCompleted, _) => Text( '$numCompleted', @@ -40,7 +40,7 @@ class StatsView extends StatelessWidget { ), Padding( padding: const EdgeInsets.only(bottom: 24.0), - child: Selector( + child: Selector( selector: (_, model) => model.numActive, builder: (context, numActive, _) => Text( '$numActive', diff --git a/freeze_provider_value_notifier/lib/home/todo_list_view.dart b/freeze_provider_value_notifier/lib/home/todo_list_view.dart index 905cefb4..a33d719b 100644 --- a/freeze_provider_value_notifier/lib/home/todo_list_view.dart +++ b/freeze_provider_value_notifier/lib/home/todo_list_view.dart @@ -13,7 +13,7 @@ class TodoListView extends StatelessWidget { @override Widget build(BuildContext context) { - return Selector>( + return Selector>( selector: (_, model) => model.filteredTodos, builder: (context, todos, _) { return ListView.builder( @@ -46,8 +46,7 @@ class TodoListView extends StatelessWidget { key: ArchSampleKeys.todoItemCheckbox(todo.id), value: todo.complete, onChanged: (complete) { - Provider.of(context, listen: false) - .updateTodo(todo.copy(complete: complete)); + context.read().updateTodo(todo.copy(complete: complete)); }, ), title: Text( diff --git a/freeze_provider_value_notifier/lib/todo_list_model.dart b/freeze_provider_value_notifier/lib/todo_list_model.dart index a69c78a2..a0a57b02 100644 --- a/freeze_provider_value_notifier/lib/todo_list_model.dart +++ b/freeze_provider_value_notifier/lib/todo_list_model.dart @@ -2,69 +2,28 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'dart:async'; -import 'dart:collection'; - import 'package:flutter/widgets.dart'; -import 'package:meta/meta.dart'; +import 'package:flutter/foundation.dart'; +import 'package:collection/collection.dart'; import 'package:freeze_provider_value_notifier/models.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -enum VisibilityFilter { all, active, completed } - -class TodoListModel extends ChangeNotifier { - final TodosRepository repository; - - VisibilityFilter _filter; - - VisibilityFilter get filter => _filter; - - set filter(VisibilityFilter filter) { - _filter = filter; - notifyListeners(); - } - - List _todos; - - UnmodifiableListView get todos => UnmodifiableListView(_todos); - - bool _isLoading = false; +part 'todo_list_model.freezed.dart'; - bool get isLoading => _isLoading; - - TodoListModel({ - @required this.repository, - VisibilityFilter filter, - List todos, - }) : _todos = todos ?? [], - _filter = filter ?? VisibilityFilter.all; - - @override - void addListener(VoidCallback listener) { - super.addListener(listener); - // update data for every subscriber, especially for the first one - loadTodos(); - } +enum VisibilityFilter { all, active, completed } - /// Loads remote data - /// - /// Call this initially and when the user manually refreshes - Future loadTodos() { - _isLoading = true; - notifyListeners(); - - return repository.loadTodos().then((loadedTodos) { - _todos.addAll(loadedTodos.map(Todo.fromEntity)); - _isLoading = false; - notifyListeners(); - }).catchError((err) { - _isLoading = false; - notifyListeners(); - }); - } +@immutable +abstract class TodoList with _$TodoList { + factory TodoList( + List todos, { + @required VisibilityFilter filter, + @required bool loading, + }) = TodoListState; +} +extension TodoListStateExtensions on TodoList { List get filteredTodos { - return _todos.where((todo) { + return todos.where((todo) { switch (filter) { case VisibilityFilter.active: return !todo.complete; @@ -77,57 +36,203 @@ class TodoListModel extends ChangeNotifier { }).toList(); } - void clearCompleted() { - _todos.removeWhere((todo) => todo.complete); - notifyListeners(); - _uploadItems(); - } + int get numCompleted => todos.where((Todo todo) => todo.complete).toList().length; - void toggleAll() { - var allComplete = todos.every((todo) => todo.complete); - _todos = _todos.map((todo) => todo.copy(complete: !allComplete)).toList(); - notifyListeners(); - _uploadItems(); + bool get hasCompleted => numCompleted > 0; + + int get numActive => todos.where((Todo todo) => !todo.complete).toList().length; + + bool get hasActiveTodos => numActive > 0; + + Todo todoById(String id) => todos.firstWhere((it) => it.id == id, orElse: () => null); +} + +class TodoListController extends ValueNotifier { + TodoListController({ + VisibilityFilter filter = VisibilityFilter.all, + @required this.todosRepository, + List todos = const [], + }) : assert(todosRepository != null), + super(TodoList(todos, filter: filter, loading: false)) { + _loadTodos(); } - /// updates a [Todo] by replacing the item with the same id by the parameter [todo] - void updateTodo(Todo todo) { - assert(todo != null); - assert(todo.id != null); - var oldTodo = _todos.firstWhere((it) => it.id == todo.id); - var replaceIndex = _todos.indexOf(oldTodo); - _todos.replaceRange(replaceIndex, replaceIndex + 1, [todo]); - notifyListeners(); - _uploadItems(); + final TodosRepository todosRepository; + + set filter(VisibilityFilter filter) => setState(value.copyWith(filter: filter)); + + void setState(TodoList state) { + if (!const DeepCollectionEquality().equals(state.todos, value.todos)) { + todosRepository.saveTodos(state.todos.map((it) => it.toEntity()).toList()); + } + value = state; } - void removeTodo(Todo todo) { - _todos.removeWhere((it) => it.id == todo.id); - notifyListeners(); - _uploadItems(); + Future _loadTodos() async { + setState(value.copyWith(loading: true)); + + try { + final todos = await todosRepository.loadTodos(); + setState(value.copyWith(todos: todos.map(Todo.fromEntity).toList(), loading: false)); + } catch (_) { + setState(value.copyWith(loading: false)); + } } void addTodo(Todo todo) { - _todos.add(todo); - notifyListeners(); - _uploadItems(); + setState( + value.copyWith(todos: [...value.todos, todo]), + ); } - void _uploadItems() { - repository.saveTodos(_todos.map((it) => it.toEntity()).toList()); + void updateTodo(Todo updatedTodo) { + setState( + value.copyWith(todos: [ + for (final todo in value.todos) if (todo.id == updatedTodo.id) updatedTodo else todo, + ]), + ); } - Todo todoById(String id) { - return _todos.firstWhere((it) => it.id == id, orElse: () => null); + void removeTodoWithId(String id) { + setState( + value.copyWith(todos: [ + for (final todo in value.todos) if (todo.id != id) todo, + ]), + ); } - int get numCompleted => - todos.where((Todo todo) => todo.complete).toList().length; - - bool get hasCompleted => numCompleted > 0; - - int get numActive => - todos.where((Todo todo) => !todo.complete).toList().length; + void toggleAll() { + final allComplete = value.todos.every((todo) => todo.complete); + setState( + value.copyWith(todos: [ + for (final todo in value.todos) todo.copy(complete: !allComplete), + ]), + ); + } - bool get hasActiveTodos => numActive > 0; + void clearCompleted() { + setState( + value.copyWith( + todos: value.todos.where((todo) => !todo.complete).toList(), + ), + ); + } } + +// class _TodoListModel extends ChangeNotifier { +// final TodosRepository repository; + +// VisibilityFilter _filter; + +// VisibilityFilter get filter => _filter; + +// set filter(VisibilityFilter filter) { +// _filter = filter; +// notifyListeners(); +// } + +// List _todos; + +// UnmodifiableListView get todos => UnmodifiableListView(_todos); + +// bool _isLoading = false; + +// bool get isLoading => _isLoading; + +// _TodoListModel({ +// @required this.repository, +// VisibilityFilter filter, +// List todos, +// }) : _todos = todos ?? [], +// _filter = filter ?? VisibilityFilter.all; + +// @override +// void addListener(VoidCallback listener) { +// super.addListener(listener); +// // update data for every subscriber, especially for the first one +// loadTodos(); +// } + +// /// Loads remote data +// /// +// /// Call this initially and when the user manually refreshes +// Future loadTodos() { +// _isLoading = true; +// notifyListeners(); + +// return repository.loadTodos().then((loadedTodos) { +// _todos.addAll(loadedTodos.map(Todo.fromEntity)); +// _isLoading = false; +// notifyListeners(); +// }).catchError((err) { +// _isLoading = false; +// notifyListeners(); +// }); +// } + +// List get filteredTodos { +// return _todos.where((todo) { +// switch (filter) { +// case VisibilityFilter.active: +// return !todo.complete; +// case VisibilityFilter.completed: +// return todo.complete; +// case VisibilityFilter.all: +// default: +// return true; +// } +// }).toList(); +// } + +// void clearCompleted() { +// _todos.removeWhere((todo) => todo.complete); +// notifyListeners(); +// _uploadItems(); +// } + +// void toggleAll() { +// var allComplete = todos.every((todo) => todo.complete); +// _todos = _todos.map((todo) => todo.copy(complete: !allComplete)).toList(); +// notifyListeners(); +// _uploadItems(); +// } + +// /// updates a [Todo] by replacing the item with the same id by the parameter [todo] +// void updateTodo(Todo todo) { +// assert(todo != null); +// assert(todo.id != null); +// var oldTodo = _todos.firstWhere((it) => it.id == todo.id); +// var replaceIndex = _todos.indexOf(oldTodo); +// _todos.replaceRange(replaceIndex, replaceIndex + 1, [todo]); +// notifyListeners(); +// _uploadItems(); +// } + +// void removeTodo(Todo todo) { +// _todos.removeWhere((it) => it.id == todo.id); +// notifyListeners(); +// _uploadItems(); +// } + +// void addTodo(Todo todo) { +// _todos.add(todo); +// notifyListeners(); +// _uploadItems(); +// } + +// void _uploadItems() { +// repository.saveTodos(_todos.map((it) => it.toEntity()).toList()); +// } + +// Todo todoById(String id) { +// return _todos.firstWhere((it) => it.id == id, orElse: () => null); +// } + +// int get numCompleted => todos.where((Todo todo) => todo.complete).toList().length; + +// bool get hasCompleted => numCompleted > 0; + +// int get numActive => todos.where((Todo todo) => !todo.complete).toList().length; + +// bool get hasActiveTodos => numActive > 0; +// } diff --git a/freeze_provider_value_notifier/lib/todo_list_model.freezed.dart b/freeze_provider_value_notifier/lib/todo_list_model.freezed.dart new file mode 100644 index 00000000..e62b75ca --- /dev/null +++ b/freeze_provider_value_notifier/lib/todo_list_model.freezed.dart @@ -0,0 +1,87 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'todo_list_model.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +abstract class _$TodoList { + List get todos; + VisibilityFilter get filter; + bool get loading; + + TodoList copyWith({List todos, VisibilityFilter filter, bool loading}); +} + +class _$TodoListState with DiagnosticableTreeMixin implements TodoListState { + const _$TodoListState(this.todos, + {@required this.filter, @required this.loading}); + + @override + final List todos; + @override + final VisibilityFilter filter; + @override + final bool loading; + + @override + String toString({DiagnosticLevel minLevel = DiagnosticLevel.debug}) { + return 'TodoList(todos: $todos, filter: $filter, loading: $loading)'; + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('type', 'TodoList')) + ..add(DiagnosticsProperty('todos', todos)) + ..add(DiagnosticsProperty('filter', filter)) + ..add(DiagnosticsProperty('loading', loading)); + } + + @override + bool operator ==(dynamic other) { + return other is TodoListState && + (identical(other.todos, todos) || other.todos == todos) && + (identical(other.filter, filter) || other.filter == filter) && + (identical(other.loading, loading) || other.loading == loading); + } + + @override + int get hashCode => + runtimeType.hashCode ^ + todos.hashCode ^ + filter.hashCode ^ + loading.hashCode; + + @override + _$TodoListState copyWith({ + Object todos = immutable, + Object filter = immutable, + Object loading = immutable, + }) { + return _$TodoListState( + todos == immutable ? this.todos : todos as List, + filter: filter == immutable ? this.filter : filter as VisibilityFilter, + loading: loading == immutable ? this.loading : loading as bool, + ); + } +} + +abstract class TodoListState implements TodoList { + const factory TodoListState(List todos, + {@required VisibilityFilter filter, + @required bool loading}) = _$TodoListState; + + @override + List get todos; + @override + VisibilityFilter get filter; + @override + bool get loading; + + @override + TodoListState copyWith( + {List todos, VisibilityFilter filter, bool loading}); +} diff --git a/freeze_provider_value_notifier/lib/value_notifier_provider.dart b/freeze_provider_value_notifier/lib/value_notifier_provider.dart new file mode 100644 index 00000000..e06f8759 --- /dev/null +++ b/freeze_provider_value_notifier/lib/value_notifier_provider.dart @@ -0,0 +1,30 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/src/widgets/framework.dart'; +import 'package:provider/provider.dart'; +import 'package:provider/single_child_widget.dart'; + +// Don't bother about understand this – you can just copy-paste it in your app. +// It may get merged into `provider` at some point. + +class ValueNotifierProvider, Value> extends SingleChildStatelessWidget { + ValueNotifierProvider({@required this.create, Widget child}) : super(child: child); + + final Create create; + + @override + Widget buildWithChild(BuildContext context, Widget child) { + return InheritedProvider( + create: create, + child: DeferredInheritedProvider( + create: (context) => context.read(), + startListening: (context, setState, controller, _) { + setState(controller.value); + final listener = () => setState(controller.value); + controller.addListener(listener); + return () => controller.removeListener(listener); + }, + child: child, + ), + ); + } +} diff --git a/freeze_provider_value_notifier/pubspec.yaml b/freeze_provider_value_notifier/pubspec.yaml index 19754a09..35318a29 100644 --- a/freeze_provider_value_notifier/pubspec.yaml +++ b/freeze_provider_value_notifier/pubspec.yaml @@ -7,7 +7,7 @@ environment: sdk: ">=2.6.0 <3.0.0" dependencies: - provider: ^4.0.1 + provider: ^4.1.0-dev todos_repository_local_storage: path: ../todos_repository_local_storage todos_app_core: diff --git a/freeze_provider_value_notifier/test/app_state_test.dart b/freeze_provider_value_notifier/test/app_state_test.dart index b16c99a8..0b62bb06 100644 --- a/freeze_provider_value_notifier/test/app_state_test.dart +++ b/freeze_provider_value_notifier/test/app_state_test.dart @@ -11,62 +11,60 @@ import 'mock_repository.dart'; void main() { group('TodoListModel', () { test('should check if there are completed todos', () async { - final model = TodoListModel( - repository: MockRepository(), + final model = TodoListController( + todosRepository: MockRepository(), todos: [Todo('a'), Todo('b'), Todo('c', complete: true)], ); - expect(model.numCompleted, 1); - expect(model.hasCompleted, isTrue); + expect(model.value.numCompleted, 1); + expect(model.value.hasCompleted, isTrue); }); test('should calculate the number of active todos', () async { - final model = TodoListModel( - repository: MockRepository(), + final model = TodoListController( + todosRepository: MockRepository(), todos: [Todo('a'), Todo('b'), Todo('c', complete: true)], ); - expect(model.hasActiveTodos, isTrue); - expect(model.numActive, 2); + expect(model.value.hasActiveTodos, isTrue); + expect(model.value.numActive, 2); }); test('should return all todos if the VisibilityFilter is all', () async { final todos = [Todo('a'), Todo('b'), Todo('c', complete: true)]; - final model = TodoListModel( + final model = TodoListController( filter: VisibilityFilter.all, - repository: MockRepository(), + todosRepository: MockRepository(), todos: todos, ); - expect(model.filteredTodos, todos); + expect(model.value.filteredTodos, todos); }); - test('should return active todos if the VisibilityFilter is active', - () async { + test('should return active todos if the VisibilityFilter is active', () async { final todo1 = Todo('a'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); - final model = TodoListModel( + final model = TodoListController( filter: VisibilityFilter.active, - repository: MockRepository(), + todosRepository: MockRepository(), todos: [todo1, todo2, todo3], ); - expect(model.filteredTodos, [todo1, todo2]); + expect(model.value.filteredTodos, [todo1, todo2]); }); - test('should return completed todos if the VisibilityFilter is completed', - () async { + test('should return completed todos if the VisibilityFilter is completed', () async { final todo1 = Todo('a'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); - final model = TodoListModel( + final model = TodoListController( filter: VisibilityFilter.completed, - repository: MockRepository(), + todosRepository: MockRepository(), todos: [todo1, todo2, todo3], ); - expect(model.filteredTodos, [todo3]); + expect(model.value.filteredTodos, [todo3]); }); test('should clear the completed todos', () async { @@ -74,54 +72,64 @@ void main() { final todo1 = Todo('a'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); - final model = TodoListModel( - repository: repository, + final model = TodoListController( + todosRepository: repository, todos: [todo1, todo2, todo3], ); model.clearCompleted(); - expect(model.todos, [todo1, todo2]); + expect( + model.value.todos, + [todo1, todo2], + ); expect(repository.saveCount, 1); }); test('toggle all as complete or incomplete', () async { final repository = MockRepository(); - final model = TodoListModel( - repository: repository, + final model = TodoListController( + todosRepository: repository, todos: [Todo('a'), Todo('b'), Todo('c', complete: true)], ); // Toggle all complete model.toggleAll(); - expect(model.todos.every((t) => t.complete), isTrue); + expect(model.value.todos.every((t) => t.complete), isTrue); expect(repository.saveCount, 1); // Toggle all incomplete model.toggleAll(); - expect(model.todos.every((t) => !t.complete), isTrue); + expect(model.value.todos.every((t) => !t.complete), isTrue); expect(repository.saveCount, 2); }); test('should add a todo', () async { final repository = MockRepository(); final todo = Todo('A'); - final model = TodoListModel(repository: repository); + final model = TodoListController(todosRepository: repository); model.addTodo(todo); - expect(model.todos, [todo]); + expect( + model.value.todos, + [todo], + ); + expect(repository.saveCount, 1); }); test('should remove a todo', () async { final repository = MockRepository(); final todo = Todo('A'); - final model = TodoListModel(repository: repository, todos: [todo]); + final model = TodoListController(todosRepository: repository, todos: [todo]); - model.removeTodo(todo); + model.removeTodoWithId(todo.id); - expect(model.todos, []); + expect( + model.value.todos, + [], + ); expect(repository.saveCount, 1); }); @@ -131,14 +139,17 @@ void main() { final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); final update = todo2.copy(complete: true); - final model = TodoListModel( - repository: repository, + final model = TodoListController( + todosRepository: repository, todos: [todo1, todo2, todo3], ); model.updateTodo(update); - expect(model.todos, [todo1, update, todo3]); + expect( + model.value.todos, + [todo1, update, todo3], + ); expect(repository.saveCount, 1); }); }); diff --git a/freeze_provider_value_notifier/test/home_screen_test.dart b/freeze_provider_value_notifier/test/home_screen_test.dart index ac8c3257..06494f3d 100644 --- a/freeze_provider_value_notifier/test/home_screen_test.dart +++ b/freeze_provider_value_notifier/test/home_screen_test.dart @@ -1,7 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:provider/provider.dart'; +import 'package:freeze_provider_value_notifier/value_notifier_provider.dart'; import 'package:freeze_provider_value_notifier/home/home_screen.dart'; import 'package:freeze_provider_value_notifier/localization.dart'; import 'package:freeze_provider_value_notifier/models.dart'; @@ -85,21 +85,19 @@ void main() { class _TestWidget extends StatelessWidget { final Widget child; final TodosRepository repository; - final List todos; const _TestWidget({ Key key, this.child, this.repository, - this.todos = const [], }) : super(key: key); @override Widget build(BuildContext context) { - return ChangeNotifierProvider( - create: (_) => TodoListModel( - repository: MockRepository([]), - todos: defaultTodos(), + return ValueNotifierProvider( + create: (_) => TodoListController( + todosRepository: MockRepository(defaultTodos), + todos: defaultTodos, ), child: MaterialApp( localizationsDelegates: [ @@ -112,13 +110,11 @@ class _TestWidget extends StatelessWidget { } } -List defaultTodos() { - return [ - Todo('T1', id: '1', note: 'N1'), - Todo('T2', id: '2'), - Todo('T3', id: '3', complete: true), - ]; -} +final List defaultTodos = [ + Todo('T1', id: '1', note: 'N1'), + Todo('T2', id: '2'), + Todo('T3', id: '3', complete: true), +]; Matcher isChecked(bool isChecked) { return matchesSemantics( From 9e0f18e362ad28968ed56ff0008a6e0e244f3b12 Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Mon, 10 Feb 2020 15:05:06 +0000 Subject: [PATCH 60/77] fix typo (freeze vs freezed) --- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 1345 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 927 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 1908 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 2950 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 4067 -> 0 bytes .../app/src/main/res/values/styles.xml | 8 -- .../ios/Flutter/Debug.xcconfig | 2 - .../ios/Flutter/Release.xcconfig | 2 - freeze_provider_value_notifier/ios/Podfile | 90 ------------------ .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 715 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1591 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 2506 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1068 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 2414 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 3810 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1582 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 3462 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 5543 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@1x.png | Bin 2798 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 5868 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 9605 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 3390 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 7082 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@3x.png | Bin 10960 -> 0 bytes .../Icon-App-83.5x83.5@1x.png | Bin 3834 -> 0 bytes .../Icon-App-83.5x83.5@2x.png | Bin 8074 -> 0 bytes .../Icon-App-83.5x83.5@3x.png | Bin 12001 -> 0 bytes .../ios/Runner/Runner-Bridging-Header.h | 1 - .../.gitignore | 0 .../.metadata | 0 .../README.md | 0 .../android/.gitignore | 0 .../android/app/build.gradle | 2 +- .../android/app/src/debug/AndroidManifest.xml | 2 +- .../android/app/src/main/AndroidManifest.xml | 21 +++- .../MainActivity.kt | 2 +- .../main/res/drawable/launch_background.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values/styles.xml | 18 ++++ .../app/src/profile/AndroidManifest.xml | 2 +- .../android/build.gradle | 0 .../android/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.properties | 0 .../android/settings.gradle | 0 .../ios/.gitignore | 0 .../ios/Flutter/AppFrameworkInfo.plist | 0 .../ios/Flutter/Debug.xcconfig | 1 + .../ios/Flutter/Release.xcconfig | 1 + .../ios/Runner.xcodeproj/project.pbxproj | 10 +- .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++ .../xcshareddata/WorkspaceSettings.xcsettings | 8 ++ .../xcshareddata/xcschemes/Runner.xcscheme | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++ .../xcshareddata/WorkspaceSettings.xcsettings | 8 ++ .../ios/Runner/AppDelegate.swift | 0 .../AppIcon.appiconset/Contents.json | 6 ++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 564 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1588 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1025 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1716 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 1920 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 1895 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 3831 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 1888 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 3294 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 3612 bytes .../LaunchImage.imageset/Contents.json | 0 .../LaunchImage.imageset/LaunchImage.png | Bin .../LaunchImage.imageset/LaunchImage@2x.png | Bin .../LaunchImage.imageset/LaunchImage@3x.png | Bin .../LaunchImage.imageset/README.md | 0 .../Runner/Base.lproj/LaunchScreen.storyboard | 0 .../ios/Runner/Base.lproj/Main.storyboard | 0 .../ios/Runner/Info.plist | 2 +- .../ios/Runner/Runner-Bridging-Header.h | 1 + .../lib/add_todo_screen.dart | 0 .../lib/app.dart | 8 +- .../lib/details_screen.dart | 2 +- .../lib/edit_todo_screen.dart | 2 +- .../lib/home/extra_actions_button.dart | 0 .../lib/home/filter_button.dart | 2 +- .../lib/home/home_screen.dart | 8 +- .../lib/home/stats_view.dart | 2 +- .../lib/home/todo_list_view.dart | 2 +- .../lib/localization.dart | 0 .../lib/main.dart | 2 +- .../lib/main_web.dart | 2 +- .../lib/models.dart | 0 .../lib/todo_list_model.dart | 2 +- .../lib/todo_list_model.freezed.dart | 0 .../lib/value_notifier_provider.dart | 0 .../line_count.md | 0 .../pubspec.yaml | 2 +- .../test/app_state_test.dart | 4 +- .../test/home_screen_test.dart | 10 +- .../test/mock_repository.dart | 2 +- .../test_driver/todo_app.dart | 2 +- .../test_driver/todo_app_test.dart | 0 .../web/index.html | 0 110 files changed, 114 insertions(+), 141 deletions(-) delete mode 100644 freeze_provider_value_notifier/android/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 freeze_provider_value_notifier/android/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 freeze_provider_value_notifier/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 freeze_provider_value_notifier/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 freeze_provider_value_notifier/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 freeze_provider_value_notifier/android/app/src/main/res/values/styles.xml delete mode 100644 freeze_provider_value_notifier/ios/Flutter/Debug.xcconfig delete mode 100644 freeze_provider_value_notifier/ios/Flutter/Release.xcconfig delete mode 100644 freeze_provider_value_notifier/ios/Podfile delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png delete mode 100644 freeze_provider_value_notifier/ios/Runner/Runner-Bridging-Header.h rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/.gitignore (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/.metadata (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/README.md (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/android/.gitignore (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/android/app/build.gradle (96%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/android/app/src/debug/AndroidManifest.xml (83%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/android/app/src/main/AndroidManifest.xml (55%) rename {freeze_provider_value_notifier/android/app/src/main/kotlin/com/example/change_notifier_provider => freezed_provider_value_notifier/android/app/src/main/kotlin/com/example/freeze_provider_value_notifier}/MainActivity.kt (88%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/android/app/src/main/res/drawable/launch_background.xml (100%) create mode 100644 freezed_provider_value_notifier/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 freezed_provider_value_notifier/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 freezed_provider_value_notifier/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 freezed_provider_value_notifier/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 freezed_provider_value_notifier/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 freezed_provider_value_notifier/android/app/src/main/res/values/styles.xml rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/android/app/src/profile/AndroidManifest.xml (83%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/android/build.gradle (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/android/gradle.properties (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/android/gradle/wrapper/gradle-wrapper.properties (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/android/settings.gradle (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/.gitignore (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Flutter/AppFrameworkInfo.plist (100%) create mode 100644 freezed_provider_value_notifier/ios/Flutter/Debug.xcconfig create mode 100644 freezed_provider_value_notifier/ios/Flutter/Release.xcconfig rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner.xcodeproj/project.pbxproj (98%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) create mode 100644 freezed_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 freezed_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner.xcworkspace/contents.xcworkspacedata (100%) create mode 100644 freezed_provider_value_notifier/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 freezed_provider_value_notifier/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner/AppDelegate.swift (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (94%) create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner/Base.lproj/LaunchScreen.storyboard (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner/Base.lproj/Main.storyboard (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/ios/Runner/Info.plist (96%) create mode 100644 freezed_provider_value_notifier/ios/Runner/Runner-Bridging-Header.h rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/add_todo_screen.dart (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/app.dart (80%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/details_screen.dart (98%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/edit_todo_screen.dart (97%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/home/extra_actions_button.dart (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/home/filter_button.dart (97%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/home/home_screen.dart (93%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/home/stats_view.dart (96%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/home/todo_list_view.dart (97%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/localization.dart (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/main.dart (92%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/main_web.dart (91%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/models.dart (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/todo_list_model.dart (99%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/todo_list_model.freezed.dart (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/lib/value_notifier_provider.dart (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/line_count.md (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/pubspec.yaml (93%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/test/app_state_test.dart (97%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/test/home_screen_test.dart (92%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/test/mock_repository.dart (89%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/test_driver/todo_app.dart (83%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/test_driver/todo_app_test.dart (100%) rename {freeze_provider_value_notifier => freezed_provider_value_notifier}/web/index.html (100%) diff --git a/freeze_provider_value_notifier/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/freeze_provider_value_notifier/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index a3f285f9e5f45e0961f6e7c2d46032087e550a7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1345 zcmV-H1-|-;P)uTd_0!V%xTj^~RVz+qQkNle+bG&pJ+~-@fF1He>(R5VVes7IOD>*8pj zqheUWHU<|V7e)gem4GGsJ2+v4(LhI>IrhY(VKk7Fi2z<|iTM&34b&ar1j_BVBq$oF zT^5{XaPhSSL<7+saIV4Zza$tMh~~j%l#2}#2o2PNi5m@Wr%DhsPz$TzUdrtp34jJ_ znQ1?5aIsS|cnuV=f=vu2gk<0vD8TK`l#6|mL2IA@7ekLTU=2jMm@OHo2BH8yg9lB? zAT>}wfRiW}AIb-*2s!8_Z`J0aS1@qoHy_}lPQz#RkE4~2! z=(Z>XqZkO0{yAgr%jc0Yq~kU?n{xX%#oOwWjsPbUd6WU+HDJRj(Jz;3Pq)p5ODGd- zRpPkY*4@5D9@RitX39y?ua@Yk&>~x0XE2eZ_RJA;@u^#pK)8}JPmFl^&f?(|+~wXw zlx{1_o=Py400@z``6J9n3hk?`&=Zu2?MiW&7)&sg2ncJBf3{icIA1y&P$u@O?8x0O z8w6ANfUwMLs0l^6(Xzk}43I58|S(7_2STsgb3Bd;<* zSWm4;S)us6*-BXm&%LSz^u*u)!V9a@q5kF^RULUIcH~tB2yfW%%<|*|I9T;JWvlPV zl> zWXCr#aj@#Fvz(Q*M}0@G_VI6yJOZd~Pq;2> zG2)cDYOmwaEd5xdfMri1N}~YDGjb-}H20OVqDYXKgR~o0O;}k+t{Ul{4}K_j9IRSv zxx3v|cI4{w)Uu@Ys(@Ztn-O+?{~M&L=c#`Z%N?oK8Ww*1pQL%Dy5z}!lGc^q%5iX( zB~2vNEl(~>T3hyWhlL+ome`jZ8I6QEPyDr|C8@qaq{OwQz}f%Uvg8*?P03TslUJAE zK;HNC-|6?0nwBS)Cl!sfCZpi#6&bP@T^i~6H5v9p>yj@bH8^;1uQ~>2b^5MaYqCxw zI(Sbyg!J61w0sKSBRWSTC9ZsWMG8C4>k1tm9i9IG=%)ZpcS>ov00000NkvXXu0mjf DcgJkH diff --git a/freeze_provider_value_notifier/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/freeze_provider_value_notifier/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 5e6f3ac6f7ca7ab1474c50255db0947a4f236568..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 927 zcmV;Q17Q4#P)D0gcVJI$m~tEjv=UM0#+Kd63T)IDVl(l zvY&{|q6jFO0HMLQ#b81S0Dyr|HVC0a6X*nBRzW5d1L+np_qFwC#87rFp==?-)R%y< zj}1(H>?1n?7#kA)tAlU}k(G^l;H@(IuS$Va5|bYvz0=YlGw+9MB+BA>!SR-IE8k(W zss)NAY>RFfF#X*6g#X0HZd2j2x#97B2oh{oi$Jl&`b$Sozqmf&KlTM5BC_J)-ZnBj zZgsP_v6)r@tiJZ$7xW!}mA*t7enFz_AUC}F-;d<*bJ(oT0w`fiKX>r>n|RJk``vY$`OxQ*%)P`Z0=`!sm4&|R=Oet|5ds3V>euZ%{TI`LDr?o5zeocvw?J`)O?{o8l!*psNt8|JhsSNR;46T0IM8_na3x~KezsqT zA1)v=Tdr^0D3gl99S1hI0M-S=rog)?z5}}8-E0I${?adS$(Wh&R(v76xwin`PYdu0 zbg#FpqHc-yTEGq6N5U1uCc~TY1qhFY5`Nu@Qolq$Te~WudyfS}=OJKd)eEj2I=&db zQoWbz*OVxUtbEH)$su9rG#CuOwSk+4xXJ=oEs^2_sj&J)NjyPGI}P`CaMH$ab=~d2G%a1mdZ8P~vz1 z6J=A4mv>~R@d~_|Kw~d$&#~%;&@YjbT37hD6KM4L9XW5tHJ9nu@^}YG~34p2iJAov!lV07GM*+YPcV?WX<0QCSHeyl2P0#=U002ovPDHLkV1k9w Bv-l9 zt9+wUT%OBq!KVV0gzw^#a9nQ>J{6$U0gLtOaJS>_2tE~{1bjEQ5NG}^A@HdH+2MOL zg@UI7WGnz+QdurvEPN_JhFS*@t7AR8LV-^ONZsiGbjL*VK&bGk00}ksD)iC0Jby}o zPX&ZJ^K0QjOf>CM;Zp%2)XW<03EbnC$pN1V5Lq*7yw79Xsgesm6(FKgT@CTrcCN|^ zp9&D#^Q*Wi*mmmWhED|unfY$-EZk}~C;^`e=xFAx8~5QlHDzE=xA70{w)S3^(C@qbYhJ{1t0`Ts&+gmFx5_<{t)=9zLL z8UEW>U=YsyGbG>(5)hqN2r&lZ7yL_yNP|C}<%Z&Jr-BrG!2>2?7>`v}hb8~hKpL|t@i0{la7 zJlnls_aN=S=h8_owm9?u(XkD$h`#VP1q4P#*UeuK4R`q1@AX9C<4YV}wfDJ@F1`Z+ z{F6}ACC@w}Orr(-6v%5L3!l34wK}=AS3rc7EjBpKLc3f`F!B%uo~lj4JOieC%10@Ns;@ z|5jAi8w*`PA;jv9d8&kJ)xMVz{uRPAf2$&ar4#{y=%R2Z|C&#+T*u8#241vE+6J8bXXIQb7)-ZWhBd?XW1oB$sw`gqGBAdnv!4-VXMpofg7+YiKi3Zz7$ ziSLi+Dc)b@63`^!XrFv@AIWWp^{yto&Gh2;zsaiXF60!@bXKtU+_GmtDA(fu6v)LD z5MFG>Cz@d;ARwW%TfTX)nCo~CpbLgt-;z!=`5l+4hZ{u%1fmNz&R}|05PUcEzysD# znoTsrQb6FacDake{8GE8+iP$?E_O!=x19@;63y@x;FnMryV;o7+P^*P5X4ne|j0Sw+KgSQB^^L%uTOBcprbYzt z3v=V}gGENX`D+oCXlg~kQ~Q61B)b!)oU0|-c6Q00Xlg;g@SiORzY>y81jb|n68J-2 z*!=`kY4A+$S1|HWNi+DCWAfP=^#r&**`M`Xvhxk8Ew+lZwCY`B*X>7eBi6-{^xlvlEP$e)M zcL4M0Hel9nLFfixGIAj%V*?}{Ju3))aJ<1waMo)x(UfmJFlLBuHLEuRler0)^!30j z&4Re}97wd3ih|!P;WSF9td}Lx#07VJlom^j1ZFL^nq}F*ELj80qD<(qJR8Q@93jEK zEx`@RmH%lg(Ig?kKl>Md0?hj>fO&Tr^je++-;5|F?>$&Q!dF7xo=eAASo7 zZ(XblzeH2b8e=IvK}-OSaVMP4Nc^Z=6B1r8sW=}+D^Lj*M~Ry7#~!b+QtBim*qx29 zSslMp+HJKX>xE(^;U`!xd`BsFxF(dzFTu_>CfFR?C|%(aj>~xZZA>V-xQ9lb&SqY`b5{t`eoJ@-rEn2iXW&ICk*P-_82Zx0K0000YSJ3@tr0O=@`9dH+} zcfJZG9s;D3B>o6L$A?)MYCHr;4|vW&AG|?$LJK?ui1Q>{rC(!3{ft(42oTSBZ0<*K z!Ca>$9s>DFiAGovse_BSinPoc*7$)r{RM68Y_4R5J$mLX8}ua z2oO(Oby3P-5f1@k9S%S^7Ddgh;vql`NBNYTD1FW{9szn5s-I?AWyL}?Sxc;u@j@|6<5JE0>$&Fy6O?CpJsNykw>B_}#R z;(X+}l45l}6;Maq0uVOy4|imL*pIlho3ijza=7OC7uR_3m_a^n2)HwD4M=H@$Sm_f zV&lowi|{kNyS$(8Y0GI#cDQ~Qln(I%5Om2jUyR7gi#9r*N%imx9C^w(U-O)vcvkvV z&^pB{K%RCr!jw0{um^-^rAOq>=NgYF9hd(Ig4!`Y0Fu{4uJDZ9MC0Lc55#H9!TFk} zNPgor=$+#mAf;W$Q|lKEQ`fRJ4#8>b66Yh&Zu#deRp}r<0JW@(7U_QEu}V*?^(na! zZq+}RZ$qlqNqz&8i?AlMZhvPy(dM44=BMOB(rnIc@;z)-J1P)Bo+51SR{0}Hdcu=n zlhV}wl$`o&9%*ApZde2g$W!{r-7zTVP^2F4B-xy+IX~mUY0J4PWE~a^K+V@dzI-6( zi#s_kO?1J(+8oXo%l=i=Spd|GXkX8qf_peDO>{*(|1fMtofSZy-C6F@9+@BX;sy_H zZ?W@t8M>m*6d=!mV?{Sp?nA8OnPP=|@qq21;VbIw0aBW!t0{i~t9YI}55L6DKgoMV zJ<;y|qoy6HA|QD>tB*8o8^qkSB})Bqr&7avMLpH-`mN@jsVX4Pbapu+JMT$$N)ztK z5Klc-)VTqqAaaIh=0BtP$m4JhXXR6J0UQt>3wlMJeLzZU4A0D)q}>6bYXVE3lJm0_ zs!~zs1dv>SZR(PlH#_vD3Fi#fJ|)LgMV%W!EzOj>EMy~(=t}3mG$DPaYDJwpKyoEN zBR5;kVxRnPED5b<>RZam}pmiLOf{L_})RH9h` z)I1Uu-kn|G_ZBtvEcC{a=P2(L^#r?n3RhPdSOL`Bj^Fu~`2n9#m+j7nalKHZo0a%*y{$r+94ANL+AU*@RnqaY_u6sb(q7RhA=u>sP z7e#k5Sy9(BAgq_c(Bjh&S5m9A(f_TZiaG)Eu651c2E&h>X~olu=;T>Qu<(S(mCtlV zU5|jeZ~h2k+rhaRkpmI^#C}oKDs9m9uK=)wM)=!%Agp^AqPFaSxKc}}cv{-16Lz){ z;i5lG@4-{wbj{(c-wMLocR+aKE$F%VL$C0(w2{XdL?jOP&Koxaur!(`SpyFA5V~P@%W-6nNuy`#93*G=>-bxto@jv~VwmL;r zW`*%JAs&fD=Q*w`>Z~GCrmLl%DN0CR2g1TNAk1F{LfUc=W-oz(1-pUbC!WH>opMmx)=uS+@}hjwj^ zzXCD)PlgmvDbbr_Y1oMHQOhxiJ#e z!r1B`13l;YRF@U?5bnSwS+5T-vy7rA#}uMU zE)d0+TCc^Qa6C>=j73C+mESWBsMOjx@|4)0o)puFD!ylQ!7Pn9Sxz5Twu@zz8K%J*x8r<{6UKMU)9 zp~N%nNKG;Iy6(=2D!x;Hn~tZ;N2Q81)*Z{Ydo9Z4s4P+%bo%`cZFD zIz<%U38L7N8Y#NU(TjSCa+@uF#qRcqu%dn?rmn6B^$x|$k*H!<3nKj4gYz>1BB@s> wz9Ra1*x{O5x{g7iP$(1%g+ifFC=_GlfBd#Up;Q@lA^-pY07*qoM6N<$f*w(RrvLx| diff --git a/freeze_provider_value_notifier/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/freeze_provider_value_notifier/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index d5614ac831d924f5e49e16a3d4391be8964fcdf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4067 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 - - - diff --git a/freeze_provider_value_notifier/ios/Flutter/Debug.xcconfig b/freeze_provider_value_notifier/ios/Flutter/Debug.xcconfig deleted file mode 100644 index e8efba11..00000000 --- a/freeze_provider_value_notifier/ios/Flutter/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "Generated.xcconfig" diff --git a/freeze_provider_value_notifier/ios/Flutter/Release.xcconfig b/freeze_provider_value_notifier/ios/Flutter/Release.xcconfig deleted file mode 100644 index 399e9340..00000000 --- a/freeze_provider_value_notifier/ios/Flutter/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "Generated.xcconfig" diff --git a/freeze_provider_value_notifier/ios/Podfile b/freeze_provider_value_notifier/ios/Podfile deleted file mode 100644 index b30a428b..00000000 --- a/freeze_provider_value_notifier/ios/Podfile +++ /dev/null @@ -1,90 +0,0 @@ -# Uncomment this line to define a global platform for your project -# platform :ios, '9.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def parse_KV_file(file, separator='=') - file_abs_path = File.expand_path(file) - if !File.exists? file_abs_path - return []; - end - generated_key_values = {} - skip_line_start_symbols = ["#", "/"] - File.foreach(file_abs_path) do |line| - next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } - plugin = line.split(pattern=separator) - if plugin.length == 2 - podname = plugin[0].strip() - path = plugin[1].strip() - podpath = File.expand_path("#{path}", file_abs_path) - generated_key_values[podname] = podpath - else - puts "Invalid plugin specification: #{line}" - end - end - generated_key_values -end - -target 'Runner' do - use_frameworks! - use_modular_headers! - - # Flutter Pod - - copied_flutter_dir = File.join(__dir__, 'Flutter') - copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') - copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') - unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) - # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet. - # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration. - # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist. - - generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') - unless File.exist?(generated_xcode_build_settings_path) - raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) - cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; - - unless File.exist?(copied_framework_path) - FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) - end - unless File.exist?(copied_podspec_path) - FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) - end - end - - # Keep pod path relative so it can be checked into Podfile.lock. - pod 'Flutter', :path => 'Flutter' - - # Plugin Pods - - # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock - # referring to absolute paths on developers' machines. - system('rm -rf .symlinks') - system('mkdir -p .symlinks/plugins') - plugin_pods = parse_KV_file('../.flutter-plugins') - plugin_pods.each do |name, path| - symlink = File.join('.symlinks', 'plugins', name) - File.symlink(path, symlink) - pod name, :path => File.join(symlink, 'ios') - end -end - -# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. -install! 'cocoapods', :disable_input_output_paths => true - -post_install do |installer| - installer.pods_project.targets.each do |target| - target.build_configurations.each do |config| - config.build_settings['ENABLE_BITCODE'] = 'NO' - end - end -end diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png deleted file mode 100644 index 980e5ad64bb0fd4a9c2c6506e9b811ffea9dd64b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 715 zcmV;+0yO=JP)5QXpJpN(w?YkRkYwc_j#m|(3>!PrLIwlTJ6&Ufo}SH`I1$#eR?RVOWIzMsU) zrK2WI$*4hFGG^Q^9@T@8zu5)!Yz6I>${V_+j`Ok!^L)v;38fNcW`cbs^X>&xhbk?f zvS`XCEg(wS59HzvL0zJ3#-=Tswu302VRN>z3)sQt+#O8gBeP#+>JsI%uI=(!2l6=C zdFI%h9c;z_@g>lFVht7cT-%~z-i?ZdJmoU8IkPWPB^k`Ff#(xjg!dpSwLVm8y$Z@~ zqGHj@W>6!4&#i3X;(Y3is=Eq_sMPsUsrRE%>p_jmL_k5`*hG^t2U&6%yTe|1|lg*UW~p>+@q!E^s3OEa=e6Ud^0-fp0g z&B!j%6y4G^MmBL1O_42jA+woHwxTJ#r4io)FE___=bK_XXo_uveG`pQHs>9%se`%% x4TYA}o~Ajur)^2@Z#O6Q@F3(a-Ow$UJqP2R#rz($lm7q!002ovPDHLkV1fcFS>pfz diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png deleted file mode 100644 index fd870289028b0d1ba6565d9f29fd42fab6bad5f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1591 zcmV-72FUq|P)Ffwcl%S_9_!a48Hv5l6Yg}=#nG6Dbu zla|r7Yb`^I)3=8fNzyX31gi{#!9`fl5R44#X&qjkmK_)Y1VY=0(Q$itxzaMci~?7J zyKH1wcMh7|XLASHg%J|-qf@pXF{&*iD^$-ij0`JyIjqHchvApQ$T03AS7awf2>H=E zVoaL{qYTWnjvBB;p1}%aY1}c541*Qen)UNz#xx^D>)7gbh8TGWBf|hRzyCJ&b&jv; z?q3&e<7axnT(Y$hS>ykYW=?hIQ}~7#Y^@lV`Bx;aHCF{4bPleE-x&PP9*NU9?SY zl0CLylXe)H&){aXGcRRIWPSb@&S>s!or|_aBlZ8FP zV=ahX*88G;#zXBh+X`g1q>VF-4C5|rhyFP)t?X1u_xvxC)$SMVvtD`w4~z_(bj-oX za4o|cKD-zpU*!;ev<20?M;dTJ^JP9;w8MaBVeEme`4cNaiXR?Rv*-WOoSK_wEc2pc z-cOwi3S{=X1Mm9MT7(KGr|8k7U|zR_3oZl*bk_W}NrOHzyJh_`l^26BGOXp>TXEVu zJ10BOU&GnjzWP3*b16ifOF@&4MdhE2FVJHzy+WUu;gYJ19-f7f;h*_ZbaZ}UtK1Xm za>H)G1;cm&;DU?v!V53ZQ!l+tpPk*LuH~=>H3wVyQz%QP7niom-IFL{&bkws3(7B6 zB8po6>4YjMdFI8J=u0!}B=1?l9E|yY#fx-td38B?=O3{Gc1U%R7f}wNr1@>T z^;xf;(1*M^?6XM*M&^PZUgF7`^l^qI?pn#Go_dO&d+s?D(o!rI2_@(EkI5y=dFttd z6|w-V;0y!N=gm`Z6WshW8CqCGkt<71?HrJU=lV4C!WwV}1JUa(P@k_k-woy|o6B8U z(4S0`!;{Ax^;)bl42m!^3`q0`O6UFl5=r{}MYw_QG$|?nTy7;&P*D93dFF%x=0LR)ls9F1Yu%ejZZn!X}O|T+jETCCX&8^lBtgyR)Ok!Lu+j ztOL979@$MeqLu58$R3%5VXzCUVT)brjI*+q2&_fzg|P=_T#?EL1b+x;bbs0r*(Wx^ z$nd*OllQ^Xj1cnUL-EQrXRKOvMl0lCoFE2E)EO*kykCWpVe8!{^UAJxr6M~qLY6c6 zVB)yL6+fslctIn41|!2N!`5tX9`O4sA50u{FhXK}fDdI)uDOzj)2_rJNq896!Dlcs zjC=@Nvu<9IJermr7y%IK_+awrx+`_~H!f?qlZSa8Ja_V9{+g7*5v<@dSY_CnmEFA4 pojS_%e#4bI{@VvLN7oqv!0V&tCp*)&!{Pt{002ovPDHLkV1k)(4H5tV diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index 75e84cd172d55b1b20971fb3142ff6876ecd45c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2506 zcmV;*2{rbKP)Z*FU!m{%*@P8VRsLNIdO-bn8LBcq}8jNvvE!9=H589 zS1q{F% z25_7w7rzc6_W!D9OuwF9IP!hcRh72%UTx5Ve2G1JF&R7ItnWOsxG;yFhdp@D-v_7k z&fdOmnO#2ee(9>pVtq010kWwNld+dE83*wHn9tfxBT2o#zpv%fYznjAHBY*l!u|2m zSf4hSMNGyg$1xwm-`9dY9-PW*J`_Ic{nAyH#QK&>FZOFo43jar5Bt!M3$uIOIUl>v zb9b5X3#kSD-cQS%Eqv6xMP zE1Yp6YpT=?fig_Kh{=PPj6E)4GIp-ZS?ri68GBT|J*YdD^7L~SW~Sf$s_d;n?I9a6 z86O}SlW`cF=fmCqsn)n2%B|DQU3h+l{eDQ{AqgImvG6u_z#8VP?>ut&`^aBtAJJ25 zoAf%WFtdD7GVuJ{!xnPrg0dHT=P{^0c=^-k#J?H&4rDa;IKAL**R;Bg+qyI7Dl?6?0iCgVW32mf*?q1Sfz z=n}fHUmsBNpsPIOBJ3dV4(?VgItv@Fu4~cXjdeNJ4Q-=X zkTvW(53?5w_f601lYAaaEi%u8TyU>q(bA3&^YwMj`h}NX(m!eGVBcXuOvdhcvL<%! ze>SspqOvb!mSs*L%6rh56AHih;)|A_H@E4+{TDD9A2AP;%Z=;jb0;eMNOFOB*o`eL zkL(y1%$N88ldrF9p|It5P46;5*0JRRCYv=(#zJ-Hgl=74E4rxsvheoAymLMogSucY z<-wA%;3_Qqt>G;*$gX227ciKa_|rX8dLX}1blF`~_UegQ<_E&Pw(wC<7~tyqm@cY8;W|KtwlU@|6uqkmeb zH@Ax}D?b_e=>MVDRK+0{Qa zGY;R24>BfWFnyGF7!ufW!Q|`fW4>kK-q-7OZRfb`_vPm!8NIr@S9IC=?H&Eyp`=&P zL*9tV*omA~}ZeJWoy5HD~$=HdkNnt5A zV=2cVg&Qu0Dhp4(@~Zx7`-nY%PkLGJpP=mE>Zblof3o0x)7Z;>GuWdSyY~yq+njVF zYd0LDFg*Y2YdV&i)hGFMdBe;2{~qZ!dO)F8jg@FX&V%1x1y9 zZDCDUN(sv10C;;)A5}S!)_zo&&EmhbwEC8O`st_jLk~TqpM3I3ie6EAZEY=7*{A37 z@3|k7aoF{g#$;tTvvCj~X8hM!8zsS(y!F;w^}`Q8OhG>aOW&W(9o&}@lW}2o7i1r{ zkPmw(`^6AsF&SI_5^J|b;kxUt(+@oGKww!|U0uDRsQm86&8Zc6nB0ZQ*v$|oW5GR7 zNeD}o;V+juY+3o&_`wGslz(MIm4$phuleklvj3V{4u3x;8O;oh`a>Hk*|{ z*FAE+h3xweWDa|nj5&)z5khf!UgL;iGIRXWnM_9C7*F`zF^}D_R>XVBN(NM4_Nc;S z?6V$;hcC@P*}n}=1i8bDSr6nA{Jx=_VVZ=F3f?YGp6iMhm%|?7UV2u9_DTw{2qZ!K}_qW+HdAyG7cc*d6O|2^A=3T($S!#tom$9pNdZ9^Kv*c znLivji9I5iJb?>y@#}7ipAXTgT>i7E+$n=n@)sdGx%LeyTSyJ|A%X*8Zw`~Odp{;m zVKR2Vhb-L;N>BtLl32UN8@4LQ0Zhg|2dW zA%Z~$U>6B&k+WEkHSFAPXJhuAV83+vgVrB5C?J3(I=%6Y==6G?K@gqBu#N>;!=Z>` zGKPTr$*hCCT{;*P00F@JA6atqAGI?Zc?v}^8M}Gk_sd)5&GL4GazXG#e(b7EZI(u6 zHm|NtZp0!p8}aDO=2CQK!(M`250o_w;5bhXyML)RxoO_A5i{?*THYvcHK?QbFVbTr U2?md5F8}}l07*qoM6N<$g7bj+?EnA( diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png deleted file mode 100644 index 03ab8a84f141a4464654d46362eb539fffd7d067..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1068 zcmV+{1k?M8P)eFxfFw`eszE*1VZKxuv6X zwN+Es?jA2G?-={Ew0+ztZ67ns+Q+E$?=gapO^5uxW8A>K^6uFZ;e1z5Oq^BGG4Xg= z=Y&<(F+ogur?L%an0H{sxU!yc7x&SlN-Mf%9xv~jk_RV=?M9hqfL*rDBwJ-RK##zy zk^g!{&$Lz1Jxxx^*?RV#Gv52M2YsTlZ|>9bo*4oaY^HaX4KQPKX1mifOV2JxVH>$y z**o{CsO+CJD*NUMRP@a$+nLSGYd-b<2S$pDhlf-)O!=h?vnH0lp57Z8` zqzvkZS7>N+kMw7uRDHh$%Tl>mJz^s>+X2sf%1&Cw12ngr*ZWkd^S-Da^;6B54Kn*U zoHuDuFlVB}wbZ#UYQ}?9Jr)3j{A}j{)k*X3&N-X&WwQ}Vnnm(@GrM`Y8z7q?EK4U0 z()sDv-{|%BUaG^AV^%vEQU=#A#Au_q?^!syoug*^8y#7S15;rIN`Lv~7kcOKE^3-I z^ci87eaA|Yvik>~h25K3s>A-Iy{~^OYNsPqHys6p%%$MtzdET^7UOrFM}iqL4-Y*H ze_h`rzRT9LsGEtAVm8L5iqHRSr?V%5R67&JoL-2m)4|b^XW_S*9lnQel=Up?=Mu!! z&Bj%!&ewnZMHfy5>AmDO9eEVu_YYIs_MN#n;0)_omd+xhP>3@MgvKRGagLi+U6Pbm_Kpb)6yVzEegg~LO7D6)lbj)N>+S(9a}fH=d?$>LZn zrpk2E=``&W3Un6=<$j~wccVd>v2Tk;-#Rt=Hvn;lK_HcJEyaKPQXuKr2OG+q+4`<% z4sM!FflYEjE^SgUojIxS34aPRwWIdgj?8nEqE9p%+o7i57X1&hcvThN8%S%jZ8m4N z7qWEQ5KW=oPn$zKbSfqjX}Tq_hD=R{D?Ec8@NAn}!n>b}b7I+&mT=Z;4)0NOc$e6& zXgi=qne#5&Yu`ejz-x`=A8(1~s3npmww>8F%@Jigvpx1X^Sm{deO&Onn&_<7ME>!% zSix$E<>W9A@CUGMIKz5Yb2i{T+$dPMj~?NC=VXc{tqJqf*0^c3#Z9v{ULYMgW9!*< m-j?{s#GTfZ`6=$|J^unddhQb0Cw0#N0000oW>oh3TRvgw{P=1#Z!?x zn}<4_r7Pm;=Y`DtGT(NS>r;5D@nGKZ`u{t6qW0CJC+ZrH9j{FtJ6^YX^mwhD|Xp)~1f0tZURa<(;bkKYgRc>_+H9{>i38M^DyQ+j3%uW;lVN7JG5` zC`W9@WE=_hdgs?y>zggc2O&#AZ|^NfPt`r;F9xjD;{e@@m18#JAY*W6xOe%^lXJ|^ zJK6B0cCZ*1LO|a6jstn88fuT7Y7j*a;!MV5>?eHx&7G$m^3K;Euo%dO2hR-Nns=(P z_NbN&;V33!IE~3TBL4Ha*M0A^UEE(;L&!Vb^i*a*qo~Q)N3Q*PAtqxlx`v$`_kQhU zF-q`5{@J!e$IdiKo&_tq8GB((9ngr$*xl1kcKeS*n z-jy#mbnp5e?P&7OxBQ=8?&T~d;|%$jjN{FN@SkY1Gw(-jgEG6evFkkTX!6gszM6mj zx+r-#jB}33*quQ>hsoG?AG4zG|6Ny7Hn+EBabr^p=^FmeeD3pJTCtm* zBCVK=UHrwFyHE2U>mL<9TGY3nTyVav(G*;0O>uE<+OV5*uE(11fwk9C6Lh5LuJ0+h z(3Y}A+gI~1wn-!|U_Y#R_j}e0F1BMghn_FA`J=HJwL{US2JkFemb$Dd)2=4WbDDS-|^?02V`n(BUeX? z=A3T|uXf9RQGm&qY%j%R?C$+W+psLy$4B^3)N`NZTGqDcwI0s`*fq>POvbrkmUljU zzbh>(n_IG%&(h|m=Y5`{MYX*FnsGp_{W@bs*RW?lIsW=@`o?5qYkMypDe9l^*c8?E zW*0PLMK}EZKI|JTrjY;SK%oR9ul&UK$D3`+HR(G73ad?1g0d`il% zb@M&-zVgz@w8Z^PuW!f~+mbo&Fh%wKvKw0T{rBIOr#?CV05~+Cy0yaW;F4 zD*FBZzuGP(oQ=SPttm;atj8{Sd3H(4o89+e@B8&_Sc}@wJgnGFIGZWz z!aI=F`U{q|n9}QZ0a|c2M=ABvRlm*=hp!~dS1k*)1`B{%K4KcuF4gEgdZfW93E8GA4#tvYOE2lCDZF^X1K zS4(>`Epb07XP`O-)5EJHN3d-{_x| z(ssRfOwl*sos7vi7g|(@c4Q!{gS_Kkg_M2s%{S$_=bn=nUwlzUMn)*O=dzRQoAQO; z2`#DjsmYl4U^3?IID^gDly%&YaK^I!)rH#s`c?ef-~J{~J@pi&LYbVL3@tmdwjux5 zGr^tvN@?(ZHASHllW~S$UZ~3!ee%gC<B5QU1~ zX{_w2Y-cJhiS7woY&yz(FYX?NS!yzN_i9IDzeq7C7v&i2(A%wtZ;Xc))IZD3!zoF) zGqTKJH;3Lw4qu4>iV4){>)bQB_%NseBWBpy?7_%X!F6pUm<^Le$~Lj|Cz+V%E1b~oW}%) zdF+KXx5ypVf9b#BmI^IO4!@5ac77gv_k(uSq9!r4P@NdeY{roo#9=I8Cu7b=o9ExZ zfJ5hNH;d7d=8ojjA>B|pv>=#_ZwBG_`5#W+%Y5x-FH(QJk zLMV5St{kiyUHQMN^vbJMBdd*7>E%>adUe%)EdY8UCS#@2X6$DFdEJBE{VRHRO5dVy g(zodwEoL|V4a+}H#QmXIKmY&$07*qoM6N<$g7_o&$^ZZW diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png deleted file mode 100644 index f47613ee46814496f40d58ae909b756976d765e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3810 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 Y0j*fAbhL&TLI3~&07*qoM6N<$g0e}{=l}o! diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png deleted file mode 100644 index 7f2230a978c8a2f82d02bf6ca32497c15669e48f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1582 zcmV+}2GRM6P)oxL5Jl&M-bdt-nJLW7%*;tqD$LBxWM;P4BxYtABr|k+c6=+frM0{PRUMscPfyPc zN0@yoyQfc{?VNnEqH9uPrz*Op_Rn@r5@&*uVG9`URCG@6@%|KBtLUD5QNGCt01$L4 z`sPnmbWe?(?Vch@MfWs}3@f@|Q*dT^zM^MlM0Q{V5C~PhTFu#>nF0^-l4(m|mW>RX zor5y-Z0;btFhZh#)ymerTCt*cmW<56$gqN!!zLJK7=9c^hB1p=kewJI|_8U}V?~UIHV-=KJ^z*7+=yB7ENT#Y^8GUQCJV5!-&%@Df?W z2J2MA$b1Huqni0OkwZ6C(4R1wv+aqh5neuGS0GCx!whEGD#I4$k?TfnG?ZCIFJnRM zWH2wPM;%l>YF8jjGgX{nWEius6`IGLG`n0Rv(KA>r0IT9J?5mpalpv1PR%%s3?F9L zg!866?Nf+=-x!ezKGY9`!N zJE=fs|3C1qYv%)$+1@Er4F%JtJ4DT-hd}M2ZyeI-{4ty1cY2=k!pN{Gx7ot9y1PeK zJ}>x_hx?3uMD4VXYNx$AHB-v>4@}aRzy3}akJ{Alj)L#P$nb-%7;WzDTPpW;Jb&aH zT+ojP02iF1pMUSp|=@GNZLSznTN_75zTdq0xJJ;P39Q7eC#4JZ!t z1B0rdSlvfrx|%*Xc`4| ze)#zpx_M+?KQqkp0$B2KJWp0WyIk%$e+qYx*oT61Aq+5_^@1}f2k0l}?qQAUF)!f^ z|CC;{RBm&BpC0kbav^;e3;@nV{al#p=M{A-n-&BQ4NV*7o7jE%qNQ?$y?wgdoxpuA z0W0_q6h`KP3lRbhhkkH)*0daWa$tfNN2ql%O4F+wmdfRK_UL9;QoS{=;0%|5GcFh< z(6Ffd;0OvH&D-NMOV_v(hBs7>!N@RXNi;0+;Zoed10!15asvYclt?5f zpU)p#F1)ovmpPMaH$M)m41+j~OhON~gbs51LWJJy>?tYs%{SjrXJ@BgE*_8T5RG;|v?ojGSc-AUUX-H`Km3q>`Q;as11Kr~x7|=~p}0-w zIezzr zXq;LcY233w7Dk2viDpl3ui2d=Ns~JZmvDQTlJf6MTO>v;YL<6^99(`s?!kb&i55>j z&4CnoSf`0IEV;v%F)cYAimF)#Mutnk?lSMScylSy>R-{Cz00J?!^ki)-Qmv}N)862 zI4_~a2P5a%W%t7h--^ZsS6^(Fm-Hnou)+@;xht5XL^4T#1S0y+xDQPBA;YF%7v7QG zL`$%6vL&!eI(`_e!0Ivsx2ZGE%BBQhQ`BALVleaE}Uo$6^pIG0<|!$AOtJ;4Av=~FT%!boGo)-xh-5M$WDxq<#akCTQzOr z^&*1@O2HW$8CDrKW-IprzhCHxtk*C?qJM#NliMfSq8lS^kqu(xW!My)nao=}hYyKv zj>ry-00;&;qMIk%VjC}VS*<;~k>-ngt-P3jCRnivEBFjn88&9=cHY?@+f4I*tu40o gVn<^0BqIR$3#s8JH79+r6951J07*qoM6N<$f+ET2fdBvi diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index 42315c6dc1260f60b9de72e58f1fd4789c1f488a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3462 zcmV;14SDj3P)}00b^74z_|aGC)>rXiR;Q;~6~{lQNx80UE~{HruBZFC zC$mmZnEgR!$K0RfE%GLL8*n9L8$;bKW_7nh^Jg?2e-cS$_>*#-bxv9N`3Y+J^QcIL zb;R4^O5O@w4*xXFoAeG#i^pNnOqFY>&6?DJJQ???&d!gjyxgpOXq2}D_cvZWxazud zze!8K?r5lvlkA{L-qYvBZe&NmDUSc++kUCT0lmZl zstj>Q%5~3_-k&@VVK1D&5q3ZI_e!4wC)|8p zgzf#&pvtwVfG|}aFx$`HtbU%<^fMXx{EaaErSF%&Sm2!e_}%?yuO=RlwD>#&->PzL zd#Cp+%X|OjTUNjMZodM~T^|l-VY`2}o9s!!j&ur=^`khm;Ev-;qHrHv_!awK!m><) zWoBk(hA=ae;xL)QXl7fom}W*WVi=9kwOwv~o9C07aZS6E)j8kZYrT5)s;+T1r~zlr z`*_E>uip<2cSz6Nf^+{9Wz8+)UH~7f@)l}yIcgKu&E#WaGrPWW|IZ!hl>XA9c)rF6(7Atf z#h%l`H}I;87Nb@JKW1R~O7G*H=k|MFJJKa1z+xGJLxzbtoPMYVC#f3^n`d8EOTnXDA*u;mnxtm#qU*T3IER zngXn4|Hux^rfwfU^Un9w(4=JXHMX=|)BZ_-2fEhj6ja#|dsNX{G!+NXbp6Bo`1)91F3zxj z1_7=(=Oe)NLyA$tM3tYsbyzj1NAai+`@a8t^TBS}%SW^917!cI^F`+j7!QQvQRT56 zyX3F0?Xk}NxZhKchCb1z!##3xc0scKdSz^;@;t`8ks7E&1CJ^i;0rIjAXmQnj@0x0 z4Dh}WpF7$oJ*CCW!`oS$k$T7bA<>3IJ!%rvqXq=1T>tW$vgu$KcS7ub_zSH6+VOrF zDlcaq-jl=tuMVUTMkuzupY&u4y^m%Yt6~T@=E66-Ip8JcTy2;INU4s z70@$OA;6HkcD*7E2RhB>dKV47_dMhm?FE@zS$A|MqK>^qoi~!+* zT`x;>9Af>EKCM#?y?dZa_y5v0EQ@PvnTEF#hxhN^QSt9@&aVOXF|d9U#iNQDAUv{j zw|w?sC-t6wP_bTTySlH)N3+bn%4=)#$F7m&UG`5oZ&ZJzU!eXditj_K1_;}B?36F; zZx0^nNAW0tS$|hqa+t+3cd|!w z(92^x(*>yf?alqkqbJT?=qqgn$$bDH&Gt<%NaK2Vn@;3n)T8MLd*Gww8+k>SL-DAR zIzYJcjXkm{evkg&>ll%-58$KOYm+6}V(g>4qU`P5-#8~gJv^!C0cxQE?oJ&Z-1yo% zvh`$6e%?JQvny+vhxh#09Q(w}q6C13yZZO%EbJetd5?mi%Es8EN)`bs2im)&w37X= zyq3`!=1n+(+5v!Xe|&hZ0iGI?O{WSm`VAD1CS(y{cXzi84Gl@LSd_JlKHuu6l{<%~ zWfOD5DHMj#(7X2!d*TVud|-2+O3MWV_}p{PNpEkjXn3F@uCA_LPJPHK3xpi0+ysE`_4t40K40mYHKmWWu@x&9dZQC~K@9&o|JQy7vO&#L$+8O!# zzy$Nh3BK?2Jx z#D�`CZ?{`{r})lR-T`+T2#9VcQ6*=$UHO5TAYaS-Iz)d*s$zZaowAOHA= z{_3;CbB4IQY=1Ht(*H-Ls~F5Uf`;ClACE%H{W&ARbZm+FRuH28meuh5f%!x1E3e2G zJB!ulX)mI9G-KFb1JuWyY(_yF#i}7by?whp{P4pvJUmPgnT6Q4uq>bL91CYKA+U;p zqIfj@{sd?jK*a|;#svNK(N4n44DHuFIW5f{ygP=5-Vul+z?Az(`afCmT45~H5C`L4 zpKmQxezP6LqY1h!ibu0S1MD0Zet=iSqY2}J;!$`dU(6)L-a)i#{Pl8*h-?oWVD zwxXdo&R@NNUx|9JeK04@?W4S7zh}{bDq4#=?x);8ip|{Ct_e}LbfS0^KaQS{RKK0I z{`f#n8aj#<7MMWsXgHgDUe40)uh~Ugx+Z(g1`1x48dWE?hPc0XKpKMkyp{HSaP>>E ze?y#Iw6$w$|NkE8o1!wj^cr^T#7>2h^ z!!zG=^w%?#I@E$QPrYM*%`R%}nZCH8XId0(h5}d*YAtHq$8#QsIIf}bNki`I7^wOl zXWstc-G{TZ`)hX5m;2S@Zd)tf5EkN6?7ySE;%oFnVHFUn3e_v* za%}g}ss*bzcO9*yRQS@-3Ia>*T@M@+EVZj2)&)!LJ`bqc+F{``yZt{*+ zKErp#cgA;TVYU(wUdTUI_3w7@L)J{wm#hix0<;Tq2cYaf2F|P=+C7hiz8}ccKY#gc z_)UD5e5V%17a4CPqQBdHyn2rvtk!-LDL^F{8myoatN?47_2V)G0{Oc7Q2TQ$$^||qHgRYc8XD{Hq6IK7S`?w8Oxez-9 zSZd|M!tWQ5dm{)u8vlIvoPmW&7Z7Qn=DNJ&HSt}+;c@_VKpq|}b@&SaY%LglFV$bL z*qeSJ(4tqw{<%KRSy-5K;4JvlDf-8}lQj==b3iu?cCTmD?*tec?1X#2V|}~%=S(;o z3v(%4a`BpqmVe!SvgXV#9C8B8;Dc(w3|<2#*F%F*3zj$;`{emEe4qlDQw;;U0cp@1j(J#vp}{(~yMNAzvkLtL^FIREynt;62F`;S zyvD3vAauIxj`N`%fq9(2L;Q1A7A6%;%7xQ4*QGMRhl2wx*j*2eb-73O((3_tfA@tu z=GkffwcmIJLgH-Q|Ky#ljk^uI*If_+K!YWG&-3WFbNq8=oSlV{fM5hKF;3OiY6s+< zss%%X1F!}|gPq`7Fi;DY{q%Zh_q-15O#hr6XQ;mDumyW82*?xcz98p?V>rD(SQ>I) zpc(+54R*}~?0Ek{h6aELp5D`SwK%|O7+POn`x_{14KE*~py?LkW5{1mr zV1{Eo9Q1xJLlMlgv;51a*g)8YT9=`0BkcKGJ?|IDf31aKn1nc6{~sxvoT&#(tse-M z+P&^R&$T}bh}wT)NfX^%*^;sU{4;g`Zea}nl6R)@P$mYr7A*Fw7X;`R#u|(oiwyhA z8C@5;o&0~LG)6rO%XBE#>*1d>Z8U~|`SRKNCM;wX?g72({Sm$Y>nd7kWO;@7b12r6 zv476gBKU8p^3FDFrY>v{EVSCR0Spb6@Yt`<gGqY6et8z_~^+gV(_BfkdsozYz=# z7SQ`)HdkO#`oFtvfYvuRDb?q&4cNzjzRlL;pKCmgA2@MVusl#XK*Aj$dh6#wr`aFc z*)J;pPj-(WOD$k8|D3I{Kj>072o_q@G=Uks2A1_=05CLI!d>s4FJ!+6{J%Lcp$04e z5$)lh1McD{c>K%7O~l|IGHV8))%9YqyPt&GU-po_)2z=6v>p)ZbLjsv%ST72D4oyY zmVO`qtjCQN3+@5k7cQap1N8nLhQb5=bLIcak{Fdu&bgD70sHx1Fkdc-ZKiu6`Nc7? z)M>A~5fh9aF}M?x4tpncv&F2f6!BVHW9v*r>x1kX8`1SMf|LxjNn#8Ne3+bXY>vd$u|4$owXdbT~eFOIJZ}baiw188CYr)(c3|$JAT3?svN$uV*;s1s6 z_5X+Feu}SekniVk+km%!qh6>44gfQPTClR;aY4TIWi8-~8tnFiwXODlNBfX`_2?P! zptpa6A4(`2pp|t%srT=f{qsHjKh`r!oBrX-fW7^jOB-$lGkA?zt-s8!fuX@}xcBSp z{sH>>e`QdA_2?6@uYZ#$DsN2yS~JLNU{UW85E#H&{$BtIwH_Wk{9kVQ+^>D z0{^acke2c4F^8X9I!3(x8x~3+(3iZRgCz}ARMzZ1P-?9|IK#l8!}rtu-`Y7sYa5$6 z4;N3cuYZ#;QWXH2IT>0YKRA1yUi$bmI$%RiUgut5soh^FWxc8sEVa5H(EBm#{vYZc zrwzP%j3nR@Z~sPIc(74vpdIjobLZ)U4?dt*Kl+5eUK&HK3yy)^0l4=AN}%wq_m;B#6JR7P~8Pi4Gy@tHW4oH&W9h-&BgU1AV+}8dC=fofG_p*Y2qz!+mRHddvMA z(LfYIgLTL!SmHg4pPsEjT_i}?&;HsTYMEb-G~8zfC$r+;T(Y318!WXuV1eJBsUrQ1 zZoxRCTRqP`Pk0=x@1?$_mB@nS-=#m$JCQa2Ms3J|X672fj3D4TgsI}sr^-?f2nKML z{}&)7WDmy8P5m?$UyUr>H5=}2-D6qxZy+Sp006P(3K+QUM6u{AdZ%?hbPrf+tsivC z^&hqj(#-05WZ^DvY|tM&MzZeTU{NX14`7_{aR)4L@9{HqRki46_k)E_cO6jcF=O(D z{JL$J7S}f-3wObu{j=7gocK2^G69PB>L zr>0id>3hwCIrASf;9hWm+Fl!Qy%MI5CqFwug*9F1o8kG;U^njXo1pawUppfsJ#}gbH&whH0_EvRpKXu?M?HV|t!OA?)sn(wznxZH_{mZL# zZPNfL_nkHWMjpVM!BVS%bHJr|g2UsbPd=lsRd?w9C7fSC9q)|IMjCGWVw}F((2sDG z`^}1f4!Dm+TDY>V4-8E|EN#drT;SD@KcRzFZ5NIAff;-T80Udg)(h;IC&Z`3!Zwt1jwab&kNdSA)FnsdK94<&Gu zXxPX|6k1jqqE6OZ{iE`xtcD9ba{LSx*r9O&PYut|W`yC+uC3FLJH~Ji3~22>p~X5F zK-igm0c3x`T-7)velP@Pa5Hd9aP1Efa1QX~(UVkI*Gq4V&ry`03#;q&owiXCk^@Sh z&}zNlKo5bFveM5pyg>;V&9nm;c!G0+W5m44GC|a`(ond0~aV(mVqHsev_j0J2uu@4A2YdAw%$ zm#Z0E2o8boSGHs=*tg$)n~IBzInb0C85zk*$TjnEDvH5#?r?PsEcGSo!O;8!%MH$k z(9A;Lex`iu-bcUtF1_)_8}!O6uTV)zi5jj9IUbK^E!^VSB`Szr(tn7+M!?Wu&;B|L zAAp7~1hry7!MB~M$o&2Dd+*VkZ@x*dzWOS?_~MK7?6c2OMMZ@(Tp9B6^7594`{~po zU7e+FPL%L*>EAh|Ni^*+H0@TOE0}d&p-b>J@wR6 z^w?vMQB6$^!iy~Aw#x((Pd`nMKmIs9{P4qc|NZwh3=ZmRdcZ zVNfig1rDvRGrL2^KbASz2OfBU?z!h4y7SIEsima_VMP)$|8FD@56}AgPd7k>o&I^Y z7A&>?1>%5PM4(`3a0a;bT;(ML=6~06sJGsFE8TY6ZPec0?j5cSd2w+u^#4Y3`@pon ze~A__G}ssJyl|EXSPlVR4Dz( z~0ut0QEwS6xZ;dc|F7O54k_SM%UYLF>j9iLpuWs{{_Hcp>VSig$0u?c?$F36-PF{NSt7yJ zU}$g_5ia2N3*ZE<5zOEw9d-^4*7e<5$a=W1#X2rtj>kMv z`wwwGyn?01dO_FpGp3+(_V-EyE&yNDV0~a8$n$ROopFYYaGz@Gl=Jvsc=Y~-&fHHy z=k)JQQRi&FZU9gWaV;48#D3XRLOoCRaD7RkU_%;DbB)Q$R-5FVsf=i7$vo1wZEC zKnqT;hX!Y(-wnMpbbZH!ww?@mhB!M5^G4Cn;h!_LFdS}xp4nP#R0m4FpdK*v3|JWm z2({m19&md5zaai?xU;nuhG8HId*=2O^vnfC%u*{C<{UVwAFqMk_0V7qTA%l=xufLwFeD{!3;y;J>jc6fRL z0|D$ESo)uW-uXChuuNb^Avi<8oI3#beyR0!S3fWyJ?}LC3vtfQ!blhhiK706>k^y# zEWj3Q4lJNt0JOd?`%CTEudic9=e%-FKYu6r=gcfjG6InTh5d^U{{Mj%z!$+93=MVy zy*&D-wXO!lYhbCdzEk`c*{m!~Dj03yPelJ%*gt>9f8mUJ0sUa9<@zF6>U8%59`%c01z2za2#b zOZ<-jN&+7M_BAMbW!hf`ra;t)y;{E_!Q06{{;{k+xdISQ6!kA(XNQYh=mUY%y&$jx ztf~D6z!w4S-(P*=qxZiQ=PWEtI)F$EdqWe zz@op>4|VSPsQm98T&%?(h0+B?+TcG(@9SUO69g>>bfXXq4fcj|LD0&1zV$isZ-ZT` z-8a0l2QM+g03s9o9Ur=PXsK4c5HR#0_#&W{dce`&d13lI%V4SXesX5vC0qWBJc0!v zys&?G^*{CwFCQuzSZ*pBif>}z#KkEW2n|jNtSSAV{m*lsFOao)`0gy4_%8WQEsQT9 zwhUjLp?}^#63^c^xbpj=;pJ!d4lbWA8jN@C9aXtZ4c`&p72g@(orT#-{2zd-CsMBPpaB2?002ovPDHLkV1nbV^cVmD diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png deleted file mode 100644 index 8c552e237629bdd153144a309f497f1dab0e1fbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2798 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 AX#fBK diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index 45537513df37c45e8074c7c131c61cec2eac66ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5868 zcmW+)cQ~8f8%|=?Y^hlkUu_brN^7*JR?XC=5kZvNL~D;~QKd!HCRS}?)d*4)A8JJH z5~D3*##gh%_@%%1y3YIlai04*_qm_@JlDD2IH>VMR;FuA004mXk=}h%>NoK3xI|BV z-$vdV0|2-i9^Kb64+K`FXklmNId#XyPK!@~pXIghLdrF8WQlXmx>inRvYwH6eLdGz6!){BxQ6=ffLru4 z*R`IOEWW`gmF2jkZUbH97lVKDeXlEH#LfJE8nIx*=wr`%Xc_LiPkhQ|3AudBCS1b6 zr8R}CN$HP6N)6lkkxAm$L@)c?UvQON>G$cP-Xk-f5%b6j*M}9Z^xmz>6(@V3LYFVU z6qY}QzUzC+Yhw5=FgL@Ma=E-DKdK;K{vm7kIS<>QZ*wT6%)#1&;a0ap7*S(U;KQ&( zZufTg9Z3&8UKLRWfec5bHzC=>HCX#k%Ic@)=izkUiil@A?%NE>+&hzfwZ-=sn zv>akDS4P#o?T&eQ^%lG?K+isJDEl_v{=)sre7C*r&@ag**-M4quNfA3WdGPkF$PAl z2Py?y7ClL@El`NEyV!`*d@LaCCCtNTL%Eu1aimBz1@X%R-NYvT6UX0!C#3Mp=Pm%= z(4>8`y(me63#V91s0cj%W?a*CtDLTOT#eSfGva!T(6#+>VEDmas7zOQ`XdWBhEx{l z4w1V)zuvpMEq6{!94Cf1{|y#yL)#55;C^)Li#IkK?BoHJIY$JNtae=b8n%zWTe`MZ z^U7{c21JnQN8^(s6;mwL?@1U+w1B`$2wyjxXof94IlB^XVC(C4tbdSyB7~=_GBW_% zmtQv*D~}wW_&MR5`Pit!G~T-t6wG?O_Veu2RpsXV0~Wnmio?M{<<12$;*n#ybNiHU zHIhh~#Ms`!s}4MOoQu!Y|Mw9D;XCd72LD9l21h)N<@)4^=T&}q7aAT3;v0THes{#= z=*Y6NMrT})CHF=6*@X?@EN-?in^+zUcpv^b-JUM3N6I3DkP0rhittI?WND1OCc z7u93NIBrt#Lo1rb!bBwUd~^99Eis%}BLEVotM5tSbQH&V3Kj)OnLb%{;%I*iFzzoB zRkF4j%$%V$4F28*+IsbMz?mLfv%<-cni799Q3BxK?alcI7uicUHDIBeV%bh-;Fz2! z)y}|wz18L$03I^++;yV|`hg)ez^lKHGbvV$=QyKvazvTfMuv6M`FvDvuR(?(@&k-( zr1?~!)Aa!m>7;K8=LIDJ7#|&p+Yz=Ha*TMqLs2MGZzJplcp#OfF?hbQHLKD4IXGou zmnGODrP6Jx5tgeTu7Q1uj<@Ou{vLj}ToMWm+G))K>ww8UB`FI`x3p@)e1q%GcBo#c zaJ;l4@!&J+d*jEMRKvHiJM$IiG~FT7(~28+<@KubE%QIBm~NI{DF?SrSqvGv1u>nm zEotI9>B>TLU}Kf~Y-NGbr@rC0_FOJ?+XA0aq9Lnu=f>-lIx>v0h0Ei1MW_Np|8?vU z_Op-*NH&#tW-PKje==gUp6gya+ZIfUkzVGmI)otj`_tbZ-{g{ld&-$K>x@5OnI4;q zn&fY;aS^i|`^RBQD=o65xANP%HdVgcEV4$oHiJ-TKXvKD{FUe{VVqCfQpTwXjDXV z5cZ_R10>Yjxb~&1qE0sdOJn?3x3UlffV{$iKndStlUN>%S6A+7`6KjeHD^!and~MB z2gfjXN=v~VFLi1MvP4a3R2H3gY5go#MLG8ictEBvgkuXMZuanAICVbxxq_P_;m}T8 zF54Z;={)FHNB6I}j=pB@6e#;1?GCgu1^K~|aU%cz5jq!(u?xbclceXFYuC`m7AoUO zQ6XH2N?LP~b2Zog)0hpp=?4030t&BgbtWk)OkuUF@)py5gouq5Pyq7J^CYkt4|$%` z{1WOfmL?qR!g`&cX+fDx$h$=pBf$@=v1?~`ST%q_5&h){?U;JT0a-&AY?j$T};{{G{V#qA2He2^b)K5NV4 zlgqIJ34%+J-gi<+!9nB?h}Zwv;cv#EbC_#28Kqyd3yRrGzDVH{`j}pH_QHux6)N`+uoGO{bFsIhl85$BRF$jhgPf2$aBbK(8~H;lO!je0d^9n&xLmc2pl zFVhR&lVWTtT29qk(;J680@VVBw+5)fr*{Om&(9cJruuktCf(N4d*S^iUQN|_Xb@FR zKq>i2uQ#U|*Vo6i_dr$CX^iwDS0nN2)3fRU+QwX5O#vyBVj3i-X%JSF4EuqQBQ(kq z!en?$DzNbS0!|l5=NG&Wn6?v+aesuNz{6j=g`D)4pgSvsyK!shr>X#n|Et6k?dwL} z%(h=Gi}m#ZRn%~V1Ry(C?EeyNQ6<_E5^i&E=@ahY?Q5s0FF$p2gk#js)dOsTzz1wB zrqcS)o#>H~D}snHz}5=x*C0y8YI3}DNw~O7l%yTbSfLsK*QX**ZdVb_g54;(L zGO8^!KtyMxlQvdxcPBn2(TL?XkM%M^zwJ5qdwBdc?MXs7zTjPsBp_zVGU4ex%R7Pl zf1Ne{u4Ts;#cEq!R~ExiUVC8n4kPh?pNao?ph*tXP_sRcGfwsK6K$ z7dG{t(!6@W*BX^)-_E<2X_nJf31K(n47qYOmSZ@u%CATIcK0AT%ycXYf5YTdo(-mf zKY8o`cNc?C##V9TQS5I6j?nxYkKK8QGP%t#9YKD*POkh+FU+9e5D-;8i%%T$ev0=G zB1=R+cH7#PP?>mF!lqAS*qPb|!umjh9l+GgJZv#jTSTK8Sjg_!GH#KpuN)r{NrZOX z{Pb(8Dl|?cj)o5QhGuFA^#k!}vuWoeqm|I-|ANScW7jtLctuqv;%294p+GLgFa4G) zIq@U@doZB&)W6$muDiVdN>u>Ec^D-uq#$R6u`L&cob2^cPSg|6am zBseQ%G1D#6!ph3tXLw;MHD67hoDzeqR&g&&x%L5b`)pS3i-0f-OBD}{+C<|TFsCtz zF#|AlxwAD0BA{*=hT3H~Nsr%!eKyLA_Y97$ENITtl&%(3ARLtER$d#vvIMGqfT?8U z%?jIMIos5F`74P0k*F`dy(Xe!UR9b{!ZZCojif)a!qgwB%Y!iD0@cDXm8`s35r1fp zRgtl~M5!)$UAx_ly28rz1?eh24MJ*eWt2=l+xlN89RQiZnm(^jkM_(kr0@)(f|CVJ zKOHXr{n6J^8+9u|sy>WC>I^RF97LX`cAU*k2^Dk8Cn|Wf z&~!ga*XIf}0jbKZSTL21Z_yMfNhkSrHUr&>wv8@A&I<#L8iZW?x1PbIO)mq9;@JH? z7=WwDW*cq;x=E!{3fH?Xul;t~OS2J7u(NwiRikgy)QN%a-%L_Pm-cR^OlKC^NU4Wv z2Gtp+>czSg@%hu?UG)H$77V=|=*Yv4pWzNxoyRosX=BK3bHJ)&D+M>DYRx9K(0%b=XllvfWKIJ?*;vk<+zw^xf^+*`lHueUHkB^iz$#8> zJ|63j_3@#JWoB^SCOO`pD@ly_T#-t8dd;W7R&9WFQbS&kS(^QtbqeYI+JfV;w%F1X zb7vL>2k@x;{O8Bdj9nt*?NsyER5Qd!tSS|?V-k@vd$3}s$s{@$8~5K`naP1_@h9Yc z6F_CVHU6DvFps&J{oOE2+d&6g3<w|G zUvwI!hv*(+;=?ZY3jGPoOH)V8eYVP!q9hYFY&R5-?ogkCWjXIr0T(PKK~NufNo zW_>cm`G-54mNZr1AZ%5zzp8aVElVw^b~PL#kYftI9r$4k^I>!gtxA=x20a4L^7zuI zOgKpNFW`WR(FMwR8opU4lkNZm``!z3%1W1vcm*JFLEH2Dwm`&e772ts*;I{SiSQg$H=<}MS$DV z%UCRgGOY)gdZ}*3$Q|`cAq|*TSrs?NTKAhw^6RgpLvFLTd(GdmZFJ)T+kejCmV+Da zkqD(av22e3eN4E9hVe9I^g*(C=W|Jd#bO%Jas|%D6&d6*utj=G93GEiX%W~!iy63f zMbX`K84<`*aH1Dfd%-d)5R;&cre~Y@taoZn zJF3*MtlKE@Fv@oG{z|(27!E}O$Vl}I3JRuGB@bccb!b$UaqTiN=FY!I0N~L}#hzWM zUTE+(B(ESkPBvstwi*a)MTwe)_7P`XNmW;bB^n=m(P|YXa6!2cA_-1!UKuHUfR6y5 ze9FuAl~a{QhR2;OrOJ_3=Uwa*H#HaOi?(E(;A zt}tE|he~pSB0rQhHa_oBM#s^qde2kaPhUL?kG>2ItSmaij)IF!$llwm=`il??UjmV zZv6DAY+BF9;DtBFT|Zn+49ES&JCZBXlSmj2wbqki?LWQU+}=)PZ-JsvN(JOw@yZ;{ zBpg6CuTi>8`&lFm*m;X;IR2zO5q3YQ&+fad2fNwWFcIoKswrUV-g|+^yk0u+70>&ls#>1Xn$4{ zvO3@;Zq?{2X6;sF&9o4Ip?O5%C+pnL?(s_#fVX-KI=pTog7;tt;hXsr2hW`h#FM+< zw4A_CFVf~jGyP1A2s5T)by@+#C=t%dhQ;#^u_8r$+3(!eJEL9wnl9w$>)Jr$N?oFTvpf-QGSHSn^ft!C&Oq`=8{_qI_zLB|GJf;R{Om`=Ba3;JW`i43 zAkm8}a%Q{6;zyNNNux1s5tzY=`d#^A4ugTHly=P0DL;GY_PpTdyVEqireylN_dm4X z@asVOg*aj2Hw>zS1q){!qXvDq?Uej~&z=jm-L(?Sh>J$NO}&$RN4m^#w`p#-O+x3= zc5x6^zXn}lHbiT+odF$jqYQTqENdlOF2+$%%DOm1x!$ORgV;c|kX>{bX@Yk7kf?4| z+AP^bThI#DflNJuM~Kv2z818UuZ$n2pmImsnvmcrx#PaTVrSeRy4AT-agpZfRov@G zlk3HZug>7o<4*{d>pDDMq4l{G)V#x6M~h&yuP;oc(r8omyub&2$e?k*aoGm%+^m8b zcn+x^yg9DuHk3AGtB-t_HKoa(&~>A%C(-NoIqa<^T53Wjjmz|9N6;8c(*t(pj zj&{Mq8ws!$wmSS>g6E6;x00#VnI9Y3yJ~f5+_yFSe3(>xBe3RRUar6%OGzFmWKL10 zmkFV>%d`^HfNC<2^B9%egXO~BOqDy+LGV6OyparAZ?mZuuz%S?;(q3ru}j7oLV7DU zheVFoww#}28H#+$Tg73{njT}_2XRXqN@#eOMm*kA5HkIz_IE4dCd@TT{|;L+yiOX2Y1&#ueMejPm3~jlgoU|;T@0h*IAqH9 z(;8-55TQN=$DOm3Scv#TvLfN2Bs~Nywn=00E1cOsINmczo=^;n2o_NrPV7vj#{O{f z_d0h-4(U-M6q}n$>3cSjAc*SOTKyds-XWCK2gk_*>A}QyMQ$- zTy%Wy&**_Cm%oZZDX-R#19X>~yC!}*lus99^@pSH^d8Qst6--Les8yPT3CsdPp>3i qj{nbl(D%UZ^d4JB0mqQ>t`JfW&3MbB4N3ir4S1w$d>^Zgi25IS_L{8# diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index 6360ea17a408801185f000acaded313519da49b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9605 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

    $mXuqN7}uZSD=w7ko)>69%HJrp{x1n$RbE! z*yu*-E@T3dqoJkwK+18}@#)AZuW^-g@it}woIK7hoXN264W(iQS{n~kPujP2(BPqp z4vWPKcLrM$1dq!PV~|?Km^AQrTt7{BRQ!;&S-?&G)GukB1Z}o<$lZ7azzE`uJ?)I} zSa!$A)?0d7yTobi1%WG$a4%jEm#H0Gyv5IoLst;(sPW{UNY76qbq?Mj+^z@2t3|TC zkcv4hn}hlpnANfhq43&&haH-ax=^e|q}m<%fDYDqrhm9~ljZjPI=;Kt+pEAlVEe#! z5$?PAj`3(j}J@o*Ldb$M&Wu9;~A*BTb|X2U9!pB5#bY){c&^=bQX;y)iH0v}%g>CTw5VxBM z>JI`-KmN)MGyN5nr0e-ESMVg!$=KGM=<{K%V@XCbG6#U6%Y(UfFxAZ{^a3ZCoocsaB2F zjvM*Jz87^}oY)?1`)l#NK||so!kw>T&J10@u#g_y?~mMDo=o88g7$Z0kQDh+q2=+o zcbBu0NlEkm$0g<1m-6_sZM{FJws_SpV+$BtI@w4rMrsDgW|fxOIRg6HQ1x{SLPsB* z_u`T&6MsC|C0=7OXR%`{Vvq@mAc65DNfFyWSDyQ}gTq$No&O|;O{Soh6e9PCQY8w6 zkEcXEzzNe!XJpAuq&K+5S9GJ=D*Vj!e}?QCTGXh5scN}ln(acaVJO2L5!*1K{hK>H z`2`y|yl7FTW_Umcd1qrq#u@34#E9l!QIN)z>nqWeH60N(tu$rpHs$C1o?E{o)u!GC zJ$!cUIIv-8!XcRh55M9F-Oz4DDRqnmAl+5?&G3P^jRx^^<)qrPqZ?vyi*-IzUzX3& zZg_aH0^w|`V80J@S@jVS8KmijI8YqlexP&HpX@xu^=tHOEh{l75xEe}(i9-7AkON$2h$#9~W>&Z| zs+@FaX)8S9k>`76apEjSaSKs;c*)SqZcLDv(=i)B&ZXyi)aT|qdw3q)!smUfF{gP_ z{&8kOUnPkXZ{lHFD>+lD9dt$#iDI3M{e47Sgn$Y$sQON>)4q5Tb}GLnf3P4+?07-N zWu{ARCj=>Ap+-VGK=wHY?FXfZ`UE%p-ktMgDUj2%Nlwe}B;zgdKEc!y9uG$k2Qa&R zOwv*(&F(NNj^}2z&XDh!-&s^k_w&y@>|0PsmAUzK50pA=l#~QbjTT(#OI70GU~-+F`-h_g>ZLOg)QzQ^AonZcL=x!{rPlz{yH!yt zVl`5eW*S)8QapS{Ma{9}DA)JCANhe1SFzY+V!8PjmkO!Ik!c|64U(ZfXDpdocN0tj zzzUSCyo+CyRdH@dO?cBP+mDvUIn9+LJ?2E$aeLPpCFP~^;+{R>akNJ(yL&-cau?}; z937zf5!AlnxL1>=g#}ccq>Y0Cx{Ba~3jyg3a(09UC>e@LT-~p*dxW5V0lRkJiw}Yh zrdqgy$E&VUC{!U^sDQRW^0FCyU7UnT{%oJ>bTR0a{ zN5P|>wG2$@2m^rrH+#$XU-z<%n(!rmPB-+5%oU`vbHIO~ zw8Yc;8StR1g`kQFM(G9ozZx|L<&qiDsSpjrE*<%N-8MorYEMGveBMYQV;r zw~jyg;J)JmdJR+VRDJI+;KXgRMnn_4^W#OF7kV@FR#9E137P$yi}C3Gf0c7XTfZo# zgn=%n>TX=~Um*R%$B5hYj5O1S>^aq^1XqJfOEvsc6yQ&M`cO+O#BF&HJrxNTMU*ZO zo5oFw0#Jj~{?8b804xL2&Up&<$Mx2Ii*>pYkBOH{HlN^WR2+2+@)GX&S2vYG_AB!$ ziuDqaq)279sPm2G;^Mj)t!-Q$ca9tW5>fj46(=vhb52$IV_FAWaA8`iJ4s1P&Sfms zL3%0s`*+EHLtC+-rXOCRGDHM`M2eLt&|0k&YPbo@7USX4Dh->xx=$WIrcLn7xph4X z>n%3)@8syRFW$rp1y=ydIP8?pN_-h6C9Oy_Z2xh3Vq_$2t@-+p@p8X0LFO>d5&ayM_bctm-tn!a>|4i zlK$aM&32~Ya#v37DhlC8c|EA&xBJgp-t{kJWwbJC!e^cv;zWPC$j*nNK+`!OefrLG zY4FTBmRy}D@KN*r0gea0Q+HgqToYD=S{7LG-xM2ZK>pl4md**3@Swj$QOY z=E=PQWGu0a@ z1kHp_#6smToZ?()7l!U!3JPh_ce9@vh`NYLs96tXx#|~Y^vzTw->4{SGT?xPmkax& zp+VW!soLdCZQKEI<4lYnL~P1FrziQy!?imtCPWnIIU=5iVYtR|sthe40O>MLgWVmm zA}>Zt>=E7e_V$qOvpL`6M0lPbQg(22@rWmHp_*H?jqI6`oL|54pG$Z=OgjA6ieKm! zNF$5;VG^b+>iytiCM9n<#Y|__ES^54|Ce=bslL8m`rF)6mLku@;tb$UgF=4epV6R| za7W!y!LlCHEEtVML%q));9yI5VR{+TFXr{$OkMx5%c90ARC1?nm5CIM>x+;dm6h>X z8?|HI?>;I<`XL*|f;2CU!zA46$V2R@?30}kaF+>Z=YI#rl-ZrzlYCj+Qt#a5JDYqd z0E)FU2_6FiCUsUBbI(`4? zmbVzBD{R`N6xs9GKuNh0j1}HI z%-*rgPAS^7L&#|>>adNu`66L$rJECPl56F4i&pFU-nwRMH$W7AvIvZ=d~ts(x8^#? z9``ALPi(Sj5ROcIwNifa#(NdGW~#}uLUctP%Ng*isWIm3`sLEb&AzT^7qlLfiKwyzxCCa<>18Emsh4W8t8+SiDHv%Y&&<7&=4% z@U0ggcnm@l0V%aw=TX^8A1V@2L8~p6Y4hE9veZ1Lw7tW?2@m5nqP)=7YGW;idUikD z>upK=6Pfn3j#TR$*ns&{&q7&VcE2j;;!#&uceob!7M6&|Kc6c#rw<+8!SOZb37f+X z=;*Rj+=CcQ%s=|k$1Cfvlfw5PS>tJg zB=m0r2RN8|=4z)B!QB~^0zZ_YMqrq%R@!pfk(^FN6#V` z$emvD@NGNbKyYj(I}H9|LJeU;JKm z^tqMurRb%;$8^^>zK^4}{mC7MY8d06%v1k0Q-JW=h+AVLXostIhc#I{xW~uJRrpj+jfI@RGzW2FtTs3tKNmjfc7RxYqWM0Xq~Q4IaIMn&aH z#3O!K&(W<7{$>yoQ3%8br2q#+Q!+O7@r@gouVnO`G97I^9BS6GK;K*jRd;Zbowjfa^Y?DWR3tWqFI7D9=?H3&rdD1~ z4PsnP-FTfg^$}{9axd3ITi^fNoOQs9Nxpb(EI2>SLja9WA?L#0DKz8w7<@%}cODG& zqAIK^#2-*jLcM%`;=b#?K4Zc`P704!qv}m>rfXOq&#cm};)wsP0Yg2gL2eeN;;|{B zC}ccYEQ@JDSHTI)N<)4^T48Cd$W@<_kFYQhWb8;+N`ggzY;<@AhJ+^tCG!L_BX?IRIsg<=mm<_@(M6>)-3oX(?hkIk`J(s zXsD!0mJV;JJdc`x?(cPeWtqA9vK=}rkhhv!IHNL<4@Eo=g_L_C^)5+5N<2`MXthZ1yKQa4W2p1zC5h}? zII!9xuIw%}+uh2Esh+le#P;vJ>TU?=nP3Zd+j|Bpq_+@^w>epDv7KRfPZ0YtO0-Lz z!BFlxx%Bd#DrYSK0(P~lV9C_}jD^YyG~KDEbXVWV-Sh_y8O*E5_EaGNJ8vMOR#YXF zUoBQ8iwR1JZpEd-S#z$^QU5LEjQRyH;iGpzKVXK-w^Rq+LIz?QVtMJICoLpW{kyL8 zHR%izGiCr*ngU7i#to}bG75LaYiF)Ry zRwE^3?!)f*Y_TgFHEyP@+NfMG+}JXCbrAJT#*p$Sb8An^AodHp0;FhcszZ_K-z| z?N|VnHUXw$Ci1|&$b@x#y7@_xT|)XAaDXUfDT#m$3l76E7EAo}1rXg|+N<1jOLdyt zxY#FhA=wyX19pHHLi`}&O@=ko^-IU3Gj9zfS{+l<`1@hMB^$xqwt(o_A^VbjyimG3 zvU6h!+R*$%TJ{`q>3WhVx+H>YsrmecRZ&u+!ay#A0exwrXlSC$3Ws#(d5xLd2dzig zF<|kN^=T|SIG>;I<26_?-)zpPcFvQ;KhZGinyfedn*m8M5Pc2lfR|e)7TjPE`l~Sp zX@S7*a1)9j8-$UZfw595MK2tLpke?+PADiCugEllm zD_)&QC|nwzR#$5hMFZy`;dRWiO+)~i!;%pAeLi)WD;Wve@QK_fhQZ{OXJ!nVhzIPC zc;DIUSTv8Qzx7AP#(ztI&Sgrs_a?(EN7MMAo}b4!4Qa`1D+tC@&6R!P@KpQYdj^#| z21!b~)+R#e@$`q=U{7=#G*|0yFV)lfs1%wgZ1s^T=P}Jv(W(;7Cs0l7fVj`kcA>B! zb+zkK)MpwoQNqQmXO&fX5g&?4%we4_p>Cgpm=d6pb~V%-Nv3Bibut&GFE;Ps%u-1O zQ~(ku84^p3y}lKC4$n((dT5(x>oC2?ctHH*Lb`=VHv;g<9$gY-*I^<%EEe&bs;4SwAQ#!^TsP(FryA67eNGv9^Z zG6q!~4>H~;X+*_<Gg#?J5XG#34*fxKnv8hNuewgndd*uJoPEX- zcj;1%1l1*Y(`FOwkNc)(A?7La;skDp?LCmKiT+5Ia>MEe-flAyZ{%*h{#>m1@VkeX z#k}h_dKR4HyiAg`J^N|EB_tvN+~B@}v!}utO*qngwHp0~`&N#oao!`vm=j*L@wW)T z9Hx+D@}tx(xasF4WCPqBD#207P@){vGCoL`14_}>mK$I63_6a@L(DN^7AlnL6A*AK|+$PVn$_DH|9fK9rEI^+|+t|J_Hpn{D9;8vLus zzw$Mf)-S?7r%wqpPMq@AvrI(}q}ga5DT2Q`-Jw(FzA;x`p&o+W0IT(N30OWwX=M;) zc{dmxkp51PqZI&ngntDDc@*`4XrA(50@WruK69cba;%Jb$fTR`M;cA#e&3UeK#w*2 zlG;-+(8Z7J;B>ujnjR+iW3w5)a>ix7$8#^sE5t0w14p#MTM|wF1keTW7_v+;J3M3L3A|q K)eG-g1^+*MxH5nM diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index 152d5e12500b4809d4a5e1bae2d1fa52ebd2757b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3390 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 UptyngmjD0&07*qoM6N<$f{32#_W%F@ diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png deleted file mode 100644 index 310b0b8f4f1ed5dec5fe5480c3aaa1ad05efc440..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7082 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 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@3x.png deleted file mode 100644 index 40ac4ea7a9434539521c5b9e693c804e1ef8273f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10960 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 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@1x.png deleted file mode 100644 index dfc408df0c17b54e2a2e125e64fedb5e4ba7e09a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3834 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 diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png deleted file mode 100644 index 092b7bfeee1274504bc6b7c25fdcd8ba6bf8e15f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8074 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

    U=w(Q@cUi! z+&tyT;AU;W)5Pa>O|<2h{H+Q-o6qKgkpK3Z1RlF7k+QW@$xRH3qYEj%B+h&Gj5Ryc z^e#`I7$67ENefif=KC2odP_*655CnN-+@NY75q&2hz7MKD!r{)C%V z5%W$1X%?;xVd9y=$fGF8NgB5Fe!X}ig;;Zp%>nK`1|AHtF z9^GQbE)ZP`d_{tS{%OdRaIo#ISYqVjdE7@?ebkOlJ2>8OsnN?)aTn(IV|$utwa>*r zYxhGcf9x%3EZAf66|5zZElh42e&9Tiojc*?3RW??4LT(qi}=p@hyiKKWtpvJ|E&|#(8fPeMFw7oy7RI zY2xSUa0;)xJxh8{V^aIADWt>pfbGKSeY;p_ls)6N1LW6(NhR9Un-Sg~dxU3OBbe6U z6?h3^TrYM=`LYTjo#R(>e6(kP7r>u!zmI0H-pjP|23@~Z!TiV0VtMt(mGaB*`2Pbu Cq9<$s diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png b/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@3x.png deleted file mode 100644 index 521c3e2a6269c88c8d6e6797b53448fe60b6c712..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12001 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

    5eY9Ic(R#5mEx&xP_ z|EZa5m~5TwjkA~1lfMXlwv#zJ(=5{qOR7O)u0pi5C;jY9|NZiS)kHK?;2iX;Ge_@D zVY5z)`TtFRIahSnp&`UCtkHY1UQ zImfw=>~u)c`o7Sz;?ZTh*+~sB^+ViFr?zXhHr0&ldeRlPK6wA88IOG>iA{PR!arHQpflW%7{Na+ Td|?l~x(+hbH_@xS=^XQanEHEm diff --git a/freeze_provider_value_notifier/ios/Runner/Runner-Bridging-Header.h b/freeze_provider_value_notifier/ios/Runner/Runner-Bridging-Header.h deleted file mode 100644 index 7335fdf9..00000000 --- a/freeze_provider_value_notifier/ios/Runner/Runner-Bridging-Header.h +++ /dev/null @@ -1 +0,0 @@ -#import "GeneratedPluginRegistrant.h" \ No newline at end of file diff --git a/freeze_provider_value_notifier/.gitignore b/freezed_provider_value_notifier/.gitignore similarity index 100% rename from freeze_provider_value_notifier/.gitignore rename to freezed_provider_value_notifier/.gitignore diff --git a/freeze_provider_value_notifier/.metadata b/freezed_provider_value_notifier/.metadata similarity index 100% rename from freeze_provider_value_notifier/.metadata rename to freezed_provider_value_notifier/.metadata diff --git a/freeze_provider_value_notifier/README.md b/freezed_provider_value_notifier/README.md similarity index 100% rename from freeze_provider_value_notifier/README.md rename to freezed_provider_value_notifier/README.md diff --git a/freeze_provider_value_notifier/android/.gitignore b/freezed_provider_value_notifier/android/.gitignore similarity index 100% rename from freeze_provider_value_notifier/android/.gitignore rename to freezed_provider_value_notifier/android/.gitignore diff --git a/freeze_provider_value_notifier/android/app/build.gradle b/freezed_provider_value_notifier/android/app/build.gradle similarity index 96% rename from freeze_provider_value_notifier/android/app/build.gradle rename to freezed_provider_value_notifier/android/app/build.gradle index 84853055..6b371432 100644 --- a/freeze_provider_value_notifier/android/app/build.gradle +++ b/freezed_provider_value_notifier/android/app/build.gradle @@ -38,7 +38,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.change_notifier_provider" + applicationId "com.example.freezed_provider_value_notifier" minSdkVersion 16 targetSdkVersion 28 versionCode flutterVersionCode.toInteger() diff --git a/freeze_provider_value_notifier/android/app/src/debug/AndroidManifest.xml b/freezed_provider_value_notifier/android/app/src/debug/AndroidManifest.xml similarity index 83% rename from freeze_provider_value_notifier/android/app/src/debug/AndroidManifest.xml rename to freezed_provider_value_notifier/android/app/src/debug/AndroidManifest.xml index a9a5b33e..32824a13 100644 --- a/freeze_provider_value_notifier/android/app/src/debug/AndroidManifest.xml +++ b/freezed_provider_value_notifier/android/app/src/debug/AndroidManifest.xml @@ -1,5 +1,5 @@ + package="com.example.freezed_provider_value_notifier"> diff --git a/freeze_provider_value_notifier/android/app/src/main/AndroidManifest.xml b/freezed_provider_value_notifier/android/app/src/main/AndroidManifest.xml similarity index 55% rename from freeze_provider_value_notifier/android/app/src/main/AndroidManifest.xml rename to freezed_provider_value_notifier/android/app/src/main/AndroidManifest.xml index afb0b62e..499c4f84 100644 --- a/freeze_provider_value_notifier/android/app/src/main/AndroidManifest.xml +++ b/freezed_provider_value_notifier/android/app/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ + package="com.example.freezed_provider_value_notifier"> + + + + diff --git a/freeze_provider_value_notifier/android/app/src/main/kotlin/com/example/change_notifier_provider/MainActivity.kt b/freezed_provider_value_notifier/android/app/src/main/kotlin/com/example/freeze_provider_value_notifier/MainActivity.kt similarity index 88% rename from freeze_provider_value_notifier/android/app/src/main/kotlin/com/example/change_notifier_provider/MainActivity.kt rename to freezed_provider_value_notifier/android/app/src/main/kotlin/com/example/freeze_provider_value_notifier/MainActivity.kt index 891c3153..e723a0f1 100644 --- a/freeze_provider_value_notifier/android/app/src/main/kotlin/com/example/change_notifier_provider/MainActivity.kt +++ b/freezed_provider_value_notifier/android/app/src/main/kotlin/com/example/freeze_provider_value_notifier/MainActivity.kt @@ -1,4 +1,4 @@ -package com.example.change_notifier_provider +package com.example.freezed_provider_value_notifier import androidx.annotation.NonNull; import io.flutter.embedding.android.FlutterActivity diff --git a/freeze_provider_value_notifier/android/app/src/main/res/drawable/launch_background.xml b/freezed_provider_value_notifier/android/app/src/main/res/drawable/launch_background.xml similarity index 100% rename from freeze_provider_value_notifier/android/app/src/main/res/drawable/launch_background.xml rename to freezed_provider_value_notifier/android/app/src/main/res/drawable/launch_background.xml diff --git a/freezed_provider_value_notifier/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/freezed_provider_value_notifier/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/freezed_provider_value_notifier/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/freezed_provider_value_notifier/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/freezed_provider_value_notifier/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/freezed_provider_value_notifier/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/freezed_provider_value_notifier/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/freezed_provider_value_notifier/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/freezed_provider_value_notifier/android/app/src/main/res/values/styles.xml b/freezed_provider_value_notifier/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..1f83a33f --- /dev/null +++ b/freezed_provider_value_notifier/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/freeze_provider_value_notifier/android/app/src/profile/AndroidManifest.xml b/freezed_provider_value_notifier/android/app/src/profile/AndroidManifest.xml similarity index 83% rename from freeze_provider_value_notifier/android/app/src/profile/AndroidManifest.xml rename to freezed_provider_value_notifier/android/app/src/profile/AndroidManifest.xml index a9a5b33e..32824a13 100644 --- a/freeze_provider_value_notifier/android/app/src/profile/AndroidManifest.xml +++ b/freezed_provider_value_notifier/android/app/src/profile/AndroidManifest.xml @@ -1,5 +1,5 @@ + package="com.example.freezed_provider_value_notifier"> diff --git a/freeze_provider_value_notifier/android/build.gradle b/freezed_provider_value_notifier/android/build.gradle similarity index 100% rename from freeze_provider_value_notifier/android/build.gradle rename to freezed_provider_value_notifier/android/build.gradle diff --git a/freeze_provider_value_notifier/android/gradle.properties b/freezed_provider_value_notifier/android/gradle.properties similarity index 100% rename from freeze_provider_value_notifier/android/gradle.properties rename to freezed_provider_value_notifier/android/gradle.properties diff --git a/freeze_provider_value_notifier/android/gradle/wrapper/gradle-wrapper.properties b/freezed_provider_value_notifier/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from freeze_provider_value_notifier/android/gradle/wrapper/gradle-wrapper.properties rename to freezed_provider_value_notifier/android/gradle/wrapper/gradle-wrapper.properties diff --git a/freeze_provider_value_notifier/android/settings.gradle b/freezed_provider_value_notifier/android/settings.gradle similarity index 100% rename from freeze_provider_value_notifier/android/settings.gradle rename to freezed_provider_value_notifier/android/settings.gradle diff --git a/freeze_provider_value_notifier/ios/.gitignore b/freezed_provider_value_notifier/ios/.gitignore similarity index 100% rename from freeze_provider_value_notifier/ios/.gitignore rename to freezed_provider_value_notifier/ios/.gitignore diff --git a/freeze_provider_value_notifier/ios/Flutter/AppFrameworkInfo.plist b/freezed_provider_value_notifier/ios/Flutter/AppFrameworkInfo.plist similarity index 100% rename from freeze_provider_value_notifier/ios/Flutter/AppFrameworkInfo.plist rename to freezed_provider_value_notifier/ios/Flutter/AppFrameworkInfo.plist diff --git a/freezed_provider_value_notifier/ios/Flutter/Debug.xcconfig b/freezed_provider_value_notifier/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000..592ceee8 --- /dev/null +++ b/freezed_provider_value_notifier/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/freezed_provider_value_notifier/ios/Flutter/Release.xcconfig b/freezed_provider_value_notifier/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000..592ceee8 --- /dev/null +++ b/freezed_provider_value_notifier/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/freeze_provider_value_notifier/ios/Runner.xcodeproj/project.pbxproj b/freezed_provider_value_notifier/ios/Runner.xcodeproj/project.pbxproj similarity index 98% rename from freeze_provider_value_notifier/ios/Runner.xcodeproj/project.pbxproj rename to freezed_provider_value_notifier/ios/Runner.xcodeproj/project.pbxproj index a50c875c..75bd2f03 100644 --- a/freeze_provider_value_notifier/ios/Runner.xcodeproj/project.pbxproj +++ b/freezed_provider_value_notifier/ios/Runner.xcodeproj/project.pbxproj @@ -148,7 +148,7 @@ isa = PBXProject; attributes = { LastUpgradeCheck = 1020; - ORGANIZATIONNAME = "The Chromium Authors"; + ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; @@ -157,7 +157,7 @@ }; }; buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 3.2"; + compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( @@ -320,7 +320,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.changeNotifierProvider; + PRODUCT_BUNDLE_IDENTIFIER = com.example.freezeProviderValueNotifier; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -454,7 +454,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.changeNotifierProvider; + PRODUCT_BUNDLE_IDENTIFIER = com.example.freezeProviderValueNotifier; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -481,7 +481,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.changeNotifierProvider; + PRODUCT_BUNDLE_IDENTIFIER = com.example.freezeProviderValueNotifier; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/freeze_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/freezed_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from freeze_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to freezed_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/freezed_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/freezed_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/freezed_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/freezed_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/freezed_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/freezed_provider_value_notifier/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/freeze_provider_value_notifier/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/freezed_provider_value_notifier/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 100% rename from freeze_provider_value_notifier/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to freezed_provider_value_notifier/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme diff --git a/freeze_provider_value_notifier/ios/Runner.xcworkspace/contents.xcworkspacedata b/freezed_provider_value_notifier/ios/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from freeze_provider_value_notifier/ios/Runner.xcworkspace/contents.xcworkspacedata rename to freezed_provider_value_notifier/ios/Runner.xcworkspace/contents.xcworkspacedata diff --git a/freezed_provider_value_notifier/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/freezed_provider_value_notifier/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/freezed_provider_value_notifier/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/freezed_provider_value_notifier/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/freezed_provider_value_notifier/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/freezed_provider_value_notifier/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/freeze_provider_value_notifier/ios/Runner/AppDelegate.swift b/freezed_provider_value_notifier/ios/Runner/AppDelegate.swift similarity index 100% rename from freeze_provider_value_notifier/ios/Runner/AppDelegate.swift rename to freezed_provider_value_notifier/ios/Runner/AppDelegate.swift diff --git a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 94% rename from freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d22f10b2..d36b1fab 100644 --- a/freeze_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -107,6 +107,12 @@ "idiom" : "ipad", "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" } ], "info" : { diff --git a/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f091b6b0bca859a3f474b03065bef75ba58a9e4c GIT binary patch literal 1588 zcmV-42Fv-0P)C1SqPt}wig>|5Crh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)y zRAZ>eDe#*r`yDAVgB_R*LB*MAc)8(b{g{9McCXW!lq7r(btRoB9!8B-#AI6JMb~YFBEvdsV)`mEQO^&#eRKx@b&x- z5lZm*!WfD8oCLzfHGz#u7sT0^VLMI1MqGxF^v+`4YYnVYgk*=kU?HsSz{v({E3lb9 z>+xILjBN)t6`=g~IBOelGQ(O990@BfXf(DRI5I$qN$0Gkz-FSc$3a+2fX$AedL4u{ z4V+5Ong(9LiGcIKW?_352sR;LtDPmPJXI{YtT=O8=76o9;*n%_m|xo!i>7$IrZ-{l z-x3`7M}qzHsPV@$v#>H-TpjDh2UE$9g6sysUREDy_R(a)>=eHw-WAyfIN z*qb!_hW>G)Tu8nSw9yn#3wFMiLcfc4pY0ek1}8(NqkBR@t4{~oC>ryc-h_ByH(Cg5 z>ao-}771+xE3um9lWAY1FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zm zZQj(aA_HeBY&OC^jj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5Kh zX*|AU4QE#~SgPzOXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&g3j|zDgC+}2Q_v%YfDax z!?umcN^n}KYQ|a$Lr+51Nf9dkkYFSjZZjkma$0KOj+;aQ&721~t7QUKx61J3(P4P1 zstI~7-wOACnWP4=8oGOwz%vNDqD8w&Q`qcNGGrbbf&0s9L0De{4{mRS?o0MU+nR_! zrvshUau0G^DeMhM_v{5BuLjb#Hh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG z;P%vktHcXwTj~+IE(~px)3*MY77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC z(zYC$g|@+I+kY;dg_dE>scBf&bP1Nc@Hz<3R)V`=AGkc;8CXqdi=B4l2k|g;2%#m& z*jfX^%b!A8#bI!j9-0Fi0bOXl(-c^AB9|nQaE`*)Hw+o&jS9@7&Gov#HbD~#d{twV zXd^Tr^mWLfFh$@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)y zI9C9*oUga6=hxw6QasLPnee@3^Rr*M{CdaL5=R41nLs(AHk_=Y+A9$2&H(B7!_pURs&8aNw7?`&Z&xY_Ye z)~D5Bog^td-^QbUtkTirdyK^mTHAOuptDflut!#^lnKqU md>ggs(5nOWAqO?umG&QVYK#ibz}*4>0000U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~cTNYR~@Y9KepMPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF4|Rt=2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ literal 0 HcmV?d00001 diff --git a/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ef06e7edb86cdfe0d15b4b0d98334a86163658 GIT binary patch literal 1716 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 literal 0 HcmV?d00001 diff --git a/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f9ed8f5cee1c98386d13b17e89f719e83555b2 GIT binary patch literal 1895 zcmV-t2blPYP)FQtfgmafE#=YDCq`qUBt#QpG%*H6QHY765~R=q zZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1K4#~5?#|rh?sS)(-JQqX*}ciXJ56_H zdw=^s_srbAdqxlvGyrgGet#6T7_|j;95sL%MtM;q86vOxKM$f#puR)Bjv9Zvz9-di zXOTSsZkM83)E9PYBXC<$6(|>lNLVBb&&6y{NByFCp%6+^ALR@NCTse_wqvNmSWI-m z!$%KlHFH2omF!>#%1l3LTZg(s7eof$7*xB)ZQ0h?ejh?Ta9fDv59+u#MokW+1t8Zb zgHv%K(u9G^Lv`lh#f3<6!JVTL3(dCpxHbnbA;kKqQyd1~^Xe0VIaYBSWm6nsr;dFj z4;G-RyL?cYgsN1{L4ZFFNa;8)Rv0fM0C(~Tkit94 zz#~A)59?QjD&pAPSEQ)p8gP|DS{ng)j=2ux)_EzzJ773GmQ_Cic%3JJhC0t2cx>|v zJcVusIB!%F90{+}8hG3QU4KNeKmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u z7JyDj7`6d)qVp^R=%j>UIY6f+3`+qzIc!Y_=+uN^3BYV|o+$vGo-j-Wm<10%A=(Yk^beI{t%ld@yhKjq0iNjqN4XMGgQtbKubPM$JWBz}YA65k%dm*awtC^+f;a-x4+ddbH^7iDWGg&N0n#MW{kA|=8iMUiFYvMoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS z*ZdmT`g5-`BuJs`0LVhz+D9NNa3<=6m;cQLaF?tCv8)zcRSh66*Z|vXhG@$I%U~2l z?`Q zykI#*+rQ=z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRe zt3L_uNyQ*cE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=ky zx=~RKa4{iTm{_>_vSCm?$Ej=i6@=m%@VvAITnigVg{&@!7CDgs908761meDK5azA} z4?=NOH|PdvabgJ&fW2{Mo$Q0CcD8Qc84%{JPYt5EiG{MdLIAeX%T=D7NIP4%Hw}p9 zg)==!2Lbp#j{u_}hMiao9=!VSyx0gHbeCS`;q&vzeq|fs`y&^X-lso(Ls@-706qmA z7u*T5PMo_w3{se1t2`zWeO^hOvTsohG_;>J0wVqVe+n)AbQCx)yh9;w+J6?NF5Lmo zecS@ieAKL8%bVd@+-KT{yI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^ zEkL$}tsQt5>QA^;QgjgIfBDmcOgi5YDyu?t6vSnbp=1+@6D& z5MJ}B8q;bRlVoxasyhcUF1+)o`&3r0colr}QJ3hcSdLu;9;td>kf@Tcn<@9sIx&=m z;AD;SCh95=&p;$r{Xz3iWCO^MX83AGJ(yH&eTXgv|0=34#-&WAmw{)U7OU9!Wz^!7 zZ%jZFi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i h0WYBP*#0Ks^FNSabJA*5${_#%002ovPDHLkV1oKhTl@e3 literal 0 HcmV?d00001 diff --git a/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..75b2d164a5a98e212cca15ea7bf2ab5de5108680 GIT binary patch literal 3831 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 literal 0 HcmV?d00001 diff --git a/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/freezed_provider_value_notifier/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..c4df70d39da7941ef3f6dcb7f06a192d8dcb308d GIT binary patch literal 1888 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 iW8CFBundleInfoDictionaryVersion 6.0 CFBundleName - change_notifier_provider + freezed_provider_value_notifier CFBundlePackageType APPL CFBundleShortVersionString diff --git a/freezed_provider_value_notifier/ios/Runner/Runner-Bridging-Header.h b/freezed_provider_value_notifier/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000..308a2a56 --- /dev/null +++ b/freezed_provider_value_notifier/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/freeze_provider_value_notifier/lib/add_todo_screen.dart b/freezed_provider_value_notifier/lib/add_todo_screen.dart similarity index 100% rename from freeze_provider_value_notifier/lib/add_todo_screen.dart rename to freezed_provider_value_notifier/lib/add_todo_screen.dart diff --git a/freeze_provider_value_notifier/lib/app.dart b/freezed_provider_value_notifier/lib/app.dart similarity index 80% rename from freeze_provider_value_notifier/lib/app.dart rename to freezed_provider_value_notifier/lib/app.dart index ec03b049..fa6083f9 100644 --- a/freeze_provider_value_notifier/lib/app.dart +++ b/freezed_provider_value_notifier/lib/app.dart @@ -3,11 +3,11 @@ // in the LICENSE file. import 'package:flutter/material.dart'; -import 'package:freeze_provider_value_notifier/value_notifier_provider.dart'; +import 'package:freezed_provider_value_notifier/value_notifier_provider.dart'; import 'package:meta/meta.dart'; -import 'package:freeze_provider_value_notifier/add_todo_screen.dart'; -import 'package:freeze_provider_value_notifier/localization.dart'; -import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:freezed_provider_value_notifier/add_todo_screen.dart'; +import 'package:freezed_provider_value_notifier/localization.dart'; +import 'package:freezed_provider_value_notifier/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; diff --git a/freeze_provider_value_notifier/lib/details_screen.dart b/freezed_provider_value_notifier/lib/details_screen.dart similarity index 98% rename from freeze_provider_value_notifier/lib/details_screen.dart rename to freezed_provider_value_notifier/lib/details_screen.dart index 507e3322..9cd3711d 100644 --- a/freeze_provider_value_notifier/lib/details_screen.dart +++ b/freezed_provider_value_notifier/lib/details_screen.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:freezed_provider_value_notifier/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; import 'edit_todo_screen.dart'; diff --git a/freeze_provider_value_notifier/lib/edit_todo_screen.dart b/freezed_provider_value_notifier/lib/edit_todo_screen.dart similarity index 97% rename from freeze_provider_value_notifier/lib/edit_todo_screen.dart rename to freezed_provider_value_notifier/lib/edit_todo_screen.dart index d0c6e87e..8c4affdd 100644 --- a/freeze_provider_value_notifier/lib/edit_todo_screen.dart +++ b/freezed_provider_value_notifier/lib/edit_todo_screen.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:freezed_provider_value_notifier/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; class EditTodoScreen extends StatefulWidget { diff --git a/freeze_provider_value_notifier/lib/home/extra_actions_button.dart b/freezed_provider_value_notifier/lib/home/extra_actions_button.dart similarity index 100% rename from freeze_provider_value_notifier/lib/home/extra_actions_button.dart rename to freezed_provider_value_notifier/lib/home/extra_actions_button.dart diff --git a/freeze_provider_value_notifier/lib/home/filter_button.dart b/freezed_provider_value_notifier/lib/home/filter_button.dart similarity index 97% rename from freeze_provider_value_notifier/lib/home/filter_button.dart rename to freezed_provider_value_notifier/lib/home/filter_button.dart index 46461b16..27f2c209 100644 --- a/freeze_provider_value_notifier/lib/home/filter_button.dart +++ b/freezed_provider_value_notifier/lib/home/filter_button.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:freezed_provider_value_notifier/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; class FilterButton extends StatelessWidget { diff --git a/freeze_provider_value_notifier/lib/home/home_screen.dart b/freezed_provider_value_notifier/lib/home/home_screen.dart similarity index 93% rename from freeze_provider_value_notifier/lib/home/home_screen.dart rename to freezed_provider_value_notifier/lib/home/home_screen.dart index 3be30c0d..2845d4b9 100644 --- a/freeze_provider_value_notifier/lib/home/home_screen.dart +++ b/freezed_provider_value_notifier/lib/home/home_screen.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart' hide Action; import 'package:provider/provider.dart'; -import 'package:freeze_provider_value_notifier/home/stats_view.dart'; -import 'package:freeze_provider_value_notifier/home/todo_list_view.dart'; -import 'package:freeze_provider_value_notifier/localization.dart'; -import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:freezed_provider_value_notifier/home/stats_view.dart'; +import 'package:freezed_provider_value_notifier/home/todo_list_view.dart'; +import 'package:freezed_provider_value_notifier/localization.dart'; +import 'package:freezed_provider_value_notifier/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; import '../models.dart'; diff --git a/freeze_provider_value_notifier/lib/home/stats_view.dart b/freezed_provider_value_notifier/lib/home/stats_view.dart similarity index 96% rename from freeze_provider_value_notifier/lib/home/stats_view.dart rename to freezed_provider_value_notifier/lib/home/stats_view.dart index dcf0caa9..ba1420f5 100644 --- a/freeze_provider_value_notifier/lib/home/stats_view.dart +++ b/freezed_provider_value_notifier/lib/home/stats_view.dart @@ -1,7 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:freezed_provider_value_notifier/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; class StatsView extends StatelessWidget { diff --git a/freeze_provider_value_notifier/lib/home/todo_list_view.dart b/freezed_provider_value_notifier/lib/home/todo_list_view.dart similarity index 97% rename from freeze_provider_value_notifier/lib/home/todo_list_view.dart rename to freezed_provider_value_notifier/lib/home/todo_list_view.dart index a33d719b..7206bb6d 100644 --- a/freeze_provider_value_notifier/lib/home/todo_list_view.dart +++ b/freezed_provider_value_notifier/lib/home/todo_list_view.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:freezed_provider_value_notifier/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; import '../details_screen.dart'; diff --git a/freeze_provider_value_notifier/lib/localization.dart b/freezed_provider_value_notifier/lib/localization.dart similarity index 100% rename from freeze_provider_value_notifier/lib/localization.dart rename to freezed_provider_value_notifier/lib/localization.dart diff --git a/freeze_provider_value_notifier/lib/main.dart b/freezed_provider_value_notifier/lib/main.dart similarity index 92% rename from freeze_provider_value_notifier/lib/main.dart rename to freezed_provider_value_notifier/lib/main.dart index f569a454..503a7da5 100644 --- a/freeze_provider_value_notifier/lib/main.dart +++ b/freezed_provider_value_notifier/lib/main.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:freeze_provider_value_notifier/app.dart'; +import 'package:freezed_provider_value_notifier/app.dart'; import 'package:flutter/material.dart'; import 'package:key_value_store_flutter/key_value_store_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; diff --git a/freeze_provider_value_notifier/lib/main_web.dart b/freezed_provider_value_notifier/lib/main_web.dart similarity index 91% rename from freeze_provider_value_notifier/lib/main_web.dart rename to freezed_provider_value_notifier/lib/main_web.dart index d1ed358b..cd6490a2 100644 --- a/freeze_provider_value_notifier/lib/main_web.dart +++ b/freezed_provider_value_notifier/lib/main_web.dart @@ -4,7 +4,7 @@ import 'dart:html'; -import 'package:freeze_provider_value_notifier/app.dart'; +import 'package:freezed_provider_value_notifier/app.dart'; import 'package:flutter/material.dart'; import 'package:key_value_store_web/key_value_store_web.dart'; import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; diff --git a/freeze_provider_value_notifier/lib/models.dart b/freezed_provider_value_notifier/lib/models.dart similarity index 100% rename from freeze_provider_value_notifier/lib/models.dart rename to freezed_provider_value_notifier/lib/models.dart diff --git a/freeze_provider_value_notifier/lib/todo_list_model.dart b/freezed_provider_value_notifier/lib/todo_list_model.dart similarity index 99% rename from freeze_provider_value_notifier/lib/todo_list_model.dart rename to freezed_provider_value_notifier/lib/todo_list_model.dart index a0a57b02..c58fd65c 100644 --- a/freeze_provider_value_notifier/lib/todo_list_model.dart +++ b/freezed_provider_value_notifier/lib/todo_list_model.dart @@ -5,7 +5,7 @@ import 'package:flutter/widgets.dart'; import 'package:flutter/foundation.dart'; import 'package:collection/collection.dart'; -import 'package:freeze_provider_value_notifier/models.dart'; +import 'package:freezed_provider_value_notifier/models.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; part 'todo_list_model.freezed.dart'; diff --git a/freeze_provider_value_notifier/lib/todo_list_model.freezed.dart b/freezed_provider_value_notifier/lib/todo_list_model.freezed.dart similarity index 100% rename from freeze_provider_value_notifier/lib/todo_list_model.freezed.dart rename to freezed_provider_value_notifier/lib/todo_list_model.freezed.dart diff --git a/freeze_provider_value_notifier/lib/value_notifier_provider.dart b/freezed_provider_value_notifier/lib/value_notifier_provider.dart similarity index 100% rename from freeze_provider_value_notifier/lib/value_notifier_provider.dart rename to freezed_provider_value_notifier/lib/value_notifier_provider.dart diff --git a/freeze_provider_value_notifier/line_count.md b/freezed_provider_value_notifier/line_count.md similarity index 100% rename from freeze_provider_value_notifier/line_count.md rename to freezed_provider_value_notifier/line_count.md diff --git a/freeze_provider_value_notifier/pubspec.yaml b/freezed_provider_value_notifier/pubspec.yaml similarity index 93% rename from freeze_provider_value_notifier/pubspec.yaml rename to freezed_provider_value_notifier/pubspec.yaml index 35318a29..1d4b1b3c 100644 --- a/freeze_provider_value_notifier/pubspec.yaml +++ b/freezed_provider_value_notifier/pubspec.yaml @@ -1,4 +1,4 @@ -name: freeze_provider_value_notifier +name: freezed_provider_value_notifier description: A new Flutter project. version: 1.0.0+1 diff --git a/freeze_provider_value_notifier/test/app_state_test.dart b/freezed_provider_value_notifier/test/app_state_test.dart similarity index 97% rename from freeze_provider_value_notifier/test/app_state_test.dart rename to freezed_provider_value_notifier/test/app_state_test.dart index 0b62bb06..ed6eebd6 100644 --- a/freeze_provider_value_notifier/test/app_state_test.dart +++ b/freezed_provider_value_notifier/test/app_state_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. -import 'package:freeze_provider_value_notifier/models.dart'; -import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:freezed_provider_value_notifier/models.dart'; +import 'package:freezed_provider_value_notifier/todo_list_model.dart'; import 'package:test/test.dart'; import 'mock_repository.dart'; diff --git a/freeze_provider_value_notifier/test/home_screen_test.dart b/freezed_provider_value_notifier/test/home_screen_test.dart similarity index 92% rename from freeze_provider_value_notifier/test/home_screen_test.dart rename to freezed_provider_value_notifier/test/home_screen_test.dart index 06494f3d..bb8053d2 100644 --- a/freeze_provider_value_notifier/test/home_screen_test.dart +++ b/freezed_provider_value_notifier/test/home_screen_test.dart @@ -1,11 +1,11 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:freeze_provider_value_notifier/value_notifier_provider.dart'; -import 'package:freeze_provider_value_notifier/home/home_screen.dart'; -import 'package:freeze_provider_value_notifier/localization.dart'; -import 'package:freeze_provider_value_notifier/models.dart'; -import 'package:freeze_provider_value_notifier/todo_list_model.dart'; +import 'package:freezed_provider_value_notifier/value_notifier_provider.dart'; +import 'package:freezed_provider_value_notifier/home/home_screen.dart'; +import 'package:freezed_provider_value_notifier/localization.dart'; +import 'package:freezed_provider_value_notifier/models.dart'; +import 'package:freezed_provider_value_notifier/todo_list_model.dart'; import 'package:todos_app_core/todos_app_core.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; diff --git a/freeze_provider_value_notifier/test/mock_repository.dart b/freezed_provider_value_notifier/test/mock_repository.dart similarity index 89% rename from freeze_provider_value_notifier/test/mock_repository.dart rename to freezed_provider_value_notifier/test/mock_repository.dart index a85f86fe..1b46fdf8 100644 --- a/freeze_provider_value_notifier/test/mock_repository.dart +++ b/freezed_provider_value_notifier/test/mock_repository.dart @@ -1,6 +1,6 @@ // Provides a Mock repository that can be used for testing in place of the real // thing. -import 'package:freeze_provider_value_notifier/models.dart'; +import 'package:freezed_provider_value_notifier/models.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; class MockRepository extends TodosRepository { diff --git a/freeze_provider_value_notifier/test_driver/todo_app.dart b/freezed_provider_value_notifier/test_driver/todo_app.dart similarity index 83% rename from freeze_provider_value_notifier/test_driver/todo_app.dart rename to freezed_provider_value_notifier/test_driver/todo_app.dart index a47e964b..f8b2ddb8 100644 --- a/freeze_provider_value_notifier/test_driver/todo_app.dart +++ b/freezed_provider_value_notifier/test_driver/todo_app.dart @@ -4,7 +4,7 @@ // This line imports the extension import 'package:flutter_driver/driver_extension.dart'; -import 'package:freeze_provider_value_notifier/main.dart' as app; +import 'package:freezed_provider_value_notifier/main.dart' as app; void main() { enableFlutterDriverExtension(); diff --git a/freeze_provider_value_notifier/test_driver/todo_app_test.dart b/freezed_provider_value_notifier/test_driver/todo_app_test.dart similarity index 100% rename from freeze_provider_value_notifier/test_driver/todo_app_test.dart rename to freezed_provider_value_notifier/test_driver/todo_app_test.dart diff --git a/freeze_provider_value_notifier/web/index.html b/freezed_provider_value_notifier/web/index.html similarity index 100% rename from freeze_provider_value_notifier/web/index.html rename to freezed_provider_value_notifier/web/index.html From 8cbc7b47e502054423d6c4cc9f1eebbc6f2d1de8 Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Mon, 10 Feb 2020 15:06:17 +0000 Subject: [PATCH 61/77] remove commented code --- .../lib/todo_list_model.dart | 118 ------------------ 1 file changed, 118 deletions(-) diff --git a/freezed_provider_value_notifier/lib/todo_list_model.dart b/freezed_provider_value_notifier/lib/todo_list_model.dart index c58fd65c..d2836975 100644 --- a/freezed_provider_value_notifier/lib/todo_list_model.dart +++ b/freezed_provider_value_notifier/lib/todo_list_model.dart @@ -118,121 +118,3 @@ class TodoListController extends ValueNotifier { ); } } - -// class _TodoListModel extends ChangeNotifier { -// final TodosRepository repository; - -// VisibilityFilter _filter; - -// VisibilityFilter get filter => _filter; - -// set filter(VisibilityFilter filter) { -// _filter = filter; -// notifyListeners(); -// } - -// List _todos; - -// UnmodifiableListView get todos => UnmodifiableListView(_todos); - -// bool _isLoading = false; - -// bool get isLoading => _isLoading; - -// _TodoListModel({ -// @required this.repository, -// VisibilityFilter filter, -// List todos, -// }) : _todos = todos ?? [], -// _filter = filter ?? VisibilityFilter.all; - -// @override -// void addListener(VoidCallback listener) { -// super.addListener(listener); -// // update data for every subscriber, especially for the first one -// loadTodos(); -// } - -// /// Loads remote data -// /// -// /// Call this initially and when the user manually refreshes -// Future loadTodos() { -// _isLoading = true; -// notifyListeners(); - -// return repository.loadTodos().then((loadedTodos) { -// _todos.addAll(loadedTodos.map(Todo.fromEntity)); -// _isLoading = false; -// notifyListeners(); -// }).catchError((err) { -// _isLoading = false; -// notifyListeners(); -// }); -// } - -// List get filteredTodos { -// return _todos.where((todo) { -// switch (filter) { -// case VisibilityFilter.active: -// return !todo.complete; -// case VisibilityFilter.completed: -// return todo.complete; -// case VisibilityFilter.all: -// default: -// return true; -// } -// }).toList(); -// } - -// void clearCompleted() { -// _todos.removeWhere((todo) => todo.complete); -// notifyListeners(); -// _uploadItems(); -// } - -// void toggleAll() { -// var allComplete = todos.every((todo) => todo.complete); -// _todos = _todos.map((todo) => todo.copy(complete: !allComplete)).toList(); -// notifyListeners(); -// _uploadItems(); -// } - -// /// updates a [Todo] by replacing the item with the same id by the parameter [todo] -// void updateTodo(Todo todo) { -// assert(todo != null); -// assert(todo.id != null); -// var oldTodo = _todos.firstWhere((it) => it.id == todo.id); -// var replaceIndex = _todos.indexOf(oldTodo); -// _todos.replaceRange(replaceIndex, replaceIndex + 1, [todo]); -// notifyListeners(); -// _uploadItems(); -// } - -// void removeTodo(Todo todo) { -// _todos.removeWhere((it) => it.id == todo.id); -// notifyListeners(); -// _uploadItems(); -// } - -// void addTodo(Todo todo) { -// _todos.add(todo); -// notifyListeners(); -// _uploadItems(); -// } - -// void _uploadItems() { -// repository.saveTodos(_todos.map((it) => it.toEntity()).toList()); -// } - -// Todo todoById(String id) { -// return _todos.firstWhere((it) => it.id == id, orElse: () => null); -// } - -// int get numCompleted => todos.where((Todo todo) => todo.complete).toList().length; - -// bool get hasCompleted => numCompleted > 0; - -// int get numActive => todos.where((Todo todo) => !todo.complete).toList().length; - -// bool get hasActiveTodos => numActive > 0; -// } From de037799486f77d5cea0a3538ddd8a49aae10e4c Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Mon, 10 Feb 2020 15:07:17 +0000 Subject: [PATCH 62/77] format --- .../lib/add_todo_screen.dart | 6 +++--- freezed_provider_value_notifier/lib/app.dart | 3 ++- .../lib/details_screen.dart | 14 ++++++++----- .../lib/edit_todo_screen.dart | 4 +++- .../lib/home/filter_button.dart | 3 ++- .../lib/home/home_screen.dart | 4 +++- .../lib/home/todo_list_view.dart | 4 +++- .../lib/todo_list_model.dart | 21 ++++++++++++------- .../lib/value_notifier_provider.dart | 6 ++++-- .../test/app_state_test.dart | 9 +++++--- 10 files changed, 49 insertions(+), 25 deletions(-) diff --git a/freezed_provider_value_notifier/lib/add_todo_screen.dart b/freezed_provider_value_notifier/lib/add_todo_screen.dart index 3962aa7b..16ade454 100644 --- a/freezed_provider_value_notifier/lib/add_todo_screen.dart +++ b/freezed_provider_value_notifier/lib/add_todo_screen.dart @@ -71,9 +71,9 @@ class _AddTodoScreenState extends State { onPressed: () { if (_formKey.currentState.validate()) { context.read().addTodo(Todo( - _titleEditingController.text, - note: _notesEditingController.text, - )); + _titleEditingController.text, + note: _notesEditingController.text, + )); Navigator.pop(context); } }, diff --git a/freezed_provider_value_notifier/lib/app.dart b/freezed_provider_value_notifier/lib/app.dart index fa6083f9..3b4bb063 100644 --- a/freezed_provider_value_notifier/lib/app.dart +++ b/freezed_provider_value_notifier/lib/app.dart @@ -30,7 +30,8 @@ class ProviderApp extends StatelessWidget { ArchSampleLocalizationsDelegate(), ProviderLocalizationsDelegate(), ], - onGenerateTitle: (context) => ProviderLocalizations.of(context).appTitle, + onGenerateTitle: (context) => + ProviderLocalizations.of(context).appTitle, routes: { ArchSampleRoutes.home: (context) => HomeScreen(), ArchSampleRoutes.addTodo: (context) => AddTodoScreen(), diff --git a/freezed_provider_value_notifier/lib/details_screen.dart b/freezed_provider_value_notifier/lib/details_screen.dart index 9cd3711d..0ce8819d 100644 --- a/freezed_provider_value_notifier/lib/details_screen.dart +++ b/freezed_provider_value_notifier/lib/details_screen.dart @@ -11,7 +11,8 @@ class DetailsScreen extends StatelessWidget { final String id; final VoidCallback onRemove; - const DetailsScreen({@required this.id, @required this.onRemove}) : super(key: ArchSampleKeys.todoDetailsScreen); + const DetailsScreen({@required this.id, @required this.onRemove}) + : super(key: ArchSampleKeys.todoDetailsScreen); @override Widget build(BuildContext context) { @@ -44,7 +45,9 @@ class DetailsScreen extends StatelessWidget { key: ArchSampleKeys.detailsTodoItemCheckbox, value: todo.complete, onChanged: (complete) { - context.read().updateTodo(todo.copy(complete: !todo.complete)); + context + .read() + .updateTodo(todo.copy(complete: !todo.complete)); }, ), ), @@ -87,9 +90,10 @@ class DetailsScreen extends StatelessWidget { builder: (context) => EditTodoScreen( id: id, onEdit: (task, note) { - context - .read() - .updateTodo(context.read().todoById(id)?.copy(task: task, note: note)); + context.read().updateTodo(context + .read() + .todoById(id) + ?.copy(task: task, note: note)); return Navigator.pop(context); }, diff --git a/freezed_provider_value_notifier/lib/edit_todo_screen.dart b/freezed_provider_value_notifier/lib/edit_todo_screen.dart index 8c4affdd..377f1e09 100644 --- a/freezed_provider_value_notifier/lib/edit_todo_screen.dart +++ b/freezed_provider_value_notifier/lib/edit_todo_screen.dart @@ -54,7 +54,9 @@ class _EditTodoScreenState extends State { hintText: ArchSampleLocalizations.of(context).newTodoHint, ), validator: (val) { - return val.trim().isEmpty ? ArchSampleLocalizations.of(context).emptyTodoError : null; + return val.trim().isEmpty + ? ArchSampleLocalizations.of(context).emptyTodoError + : null; }, ), TextFormField( diff --git a/freezed_provider_value_notifier/lib/home/filter_button.dart b/freezed_provider_value_notifier/lib/home/filter_button.dart index 27f2c209..fc7fe63d 100644 --- a/freezed_provider_value_notifier/lib/home/filter_button.dart +++ b/freezed_provider_value_notifier/lib/home/filter_button.dart @@ -25,7 +25,8 @@ class FilterButton extends StatelessWidget { key: ArchSampleKeys.filterButton, tooltip: ArchSampleLocalizations.of(context).filterTodos, initialValue: model.filter, - onSelected: (filter) => context.read().filter = filter, + onSelected: (filter) => + context.read().filter = filter, itemBuilder: (BuildContext context) => _items(context, model), icon: const Icon(Icons.filter_list), ); diff --git a/freezed_provider_value_notifier/lib/home/home_screen.dart b/freezed_provider_value_notifier/lib/home/home_screen.dart index 2845d4b9..cc9fec01 100644 --- a/freezed_provider_value_notifier/lib/home/home_screen.dart +++ b/freezed_provider_value_notifier/lib/home/home_screen.dart @@ -70,7 +70,9 @@ class _HomeScreenState extends State { default: return TodoListView( onRemove: (context, todo) { - context.read().removeTodoWithId(todo.id); + context + .read() + .removeTodoWithId(todo.id); _showUndoSnackbar(context, todo); }, ); diff --git a/freezed_provider_value_notifier/lib/home/todo_list_view.dart b/freezed_provider_value_notifier/lib/home/todo_list_view.dart index 7206bb6d..cf67d392 100644 --- a/freezed_provider_value_notifier/lib/home/todo_list_view.dart +++ b/freezed_provider_value_notifier/lib/home/todo_list_view.dart @@ -46,7 +46,9 @@ class TodoListView extends StatelessWidget { key: ArchSampleKeys.todoItemCheckbox(todo.id), value: todo.complete, onChanged: (complete) { - context.read().updateTodo(todo.copy(complete: complete)); + context + .read() + .updateTodo(todo.copy(complete: complete)); }, ), title: Text( diff --git a/freezed_provider_value_notifier/lib/todo_list_model.dart b/freezed_provider_value_notifier/lib/todo_list_model.dart index d2836975..941cf9ae 100644 --- a/freezed_provider_value_notifier/lib/todo_list_model.dart +++ b/freezed_provider_value_notifier/lib/todo_list_model.dart @@ -36,15 +36,18 @@ extension TodoListStateExtensions on TodoList { }).toList(); } - int get numCompleted => todos.where((Todo todo) => todo.complete).toList().length; + int get numCompleted => + todos.where((Todo todo) => todo.complete).toList().length; bool get hasCompleted => numCompleted > 0; - int get numActive => todos.where((Todo todo) => !todo.complete).toList().length; + int get numActive => + todos.where((Todo todo) => !todo.complete).toList().length; bool get hasActiveTodos => numActive > 0; - Todo todoById(String id) => todos.firstWhere((it) => it.id == id, orElse: () => null); + Todo todoById(String id) => + todos.firstWhere((it) => it.id == id, orElse: () => null); } class TodoListController extends ValueNotifier { @@ -59,11 +62,13 @@ class TodoListController extends ValueNotifier { final TodosRepository todosRepository; - set filter(VisibilityFilter filter) => setState(value.copyWith(filter: filter)); + set filter(VisibilityFilter filter) => + setState(value.copyWith(filter: filter)); void setState(TodoList state) { if (!const DeepCollectionEquality().equals(state.todos, value.todos)) { - todosRepository.saveTodos(state.todos.map((it) => it.toEntity()).toList()); + todosRepository + .saveTodos(state.todos.map((it) => it.toEntity()).toList()); } value = state; } @@ -73,7 +78,8 @@ class TodoListController extends ValueNotifier { try { final todos = await todosRepository.loadTodos(); - setState(value.copyWith(todos: todos.map(Todo.fromEntity).toList(), loading: false)); + setState(value.copyWith( + todos: todos.map(Todo.fromEntity).toList(), loading: false)); } catch (_) { setState(value.copyWith(loading: false)); } @@ -88,7 +94,8 @@ class TodoListController extends ValueNotifier { void updateTodo(Todo updatedTodo) { setState( value.copyWith(todos: [ - for (final todo in value.todos) if (todo.id == updatedTodo.id) updatedTodo else todo, + for (final todo in value.todos) + if (todo.id == updatedTodo.id) updatedTodo else todo, ]), ); } diff --git a/freezed_provider_value_notifier/lib/value_notifier_provider.dart b/freezed_provider_value_notifier/lib/value_notifier_provider.dart index e06f8759..f7726e4e 100644 --- a/freezed_provider_value_notifier/lib/value_notifier_provider.dart +++ b/freezed_provider_value_notifier/lib/value_notifier_provider.dart @@ -6,8 +6,10 @@ import 'package:provider/single_child_widget.dart'; // Don't bother about understand this – you can just copy-paste it in your app. // It may get merged into `provider` at some point. -class ValueNotifierProvider, Value> extends SingleChildStatelessWidget { - ValueNotifierProvider({@required this.create, Widget child}) : super(child: child); +class ValueNotifierProvider, Value> + extends SingleChildStatelessWidget { + ValueNotifierProvider({@required this.create, Widget child}) + : super(child: child); final Create create; diff --git a/freezed_provider_value_notifier/test/app_state_test.dart b/freezed_provider_value_notifier/test/app_state_test.dart index ed6eebd6..2b4b0bb5 100644 --- a/freezed_provider_value_notifier/test/app_state_test.dart +++ b/freezed_provider_value_notifier/test/app_state_test.dart @@ -41,7 +41,8 @@ void main() { expect(model.value.filteredTodos, todos); }); - test('should return active todos if the VisibilityFilter is active', () async { + test('should return active todos if the VisibilityFilter is active', + () async { final todo1 = Todo('a'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); @@ -54,7 +55,8 @@ void main() { expect(model.value.filteredTodos, [todo1, todo2]); }); - test('should return completed todos if the VisibilityFilter is completed', () async { + test('should return completed todos if the VisibilityFilter is completed', + () async { final todo1 = Todo('a'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); @@ -122,7 +124,8 @@ void main() { test('should remove a todo', () async { final repository = MockRepository(); final todo = Todo('A'); - final model = TodoListController(todosRepository: repository, todos: [todo]); + final model = + TodoListController(todosRepository: repository, todos: [todo]); model.removeTodoWithId(todo.id); From 91e215e1a99c1519ba56146bec229c7f6bbb2a6c Mon Sep 17 00:00:00 2001 From: Masayuki Ono Date: Sat, 15 Feb 2020 17:27:09 +0900 Subject: [PATCH 63/77] Use freezed_annotation --- .../lib/todo_list_model.dart | 3 +- .../lib/todo_list_model.freezed.dart | 40 ++++++++++++------- freezed_provider_value_notifier/pubspec.yaml | 1 + 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/freezed_provider_value_notifier/lib/todo_list_model.dart b/freezed_provider_value_notifier/lib/todo_list_model.dart index 941cf9ae..0a9dace8 100644 --- a/freezed_provider_value_notifier/lib/todo_list_model.dart +++ b/freezed_provider_value_notifier/lib/todo_list_model.dart @@ -5,6 +5,7 @@ import 'package:flutter/widgets.dart'; import 'package:flutter/foundation.dart'; import 'package:collection/collection.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_provider_value_notifier/models.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; @@ -12,7 +13,7 @@ part 'todo_list_model.freezed.dart'; enum VisibilityFilter { all, active, completed } -@immutable +@freezed abstract class TodoList with _$TodoList { factory TodoList( List todos, { diff --git a/freezed_provider_value_notifier/lib/todo_list_model.freezed.dart b/freezed_provider_value_notifier/lib/todo_list_model.freezed.dart index e62b75ca..fe479cc5 100644 --- a/freezed_provider_value_notifier/lib/todo_list_model.freezed.dart +++ b/freezed_provider_value_notifier/lib/todo_list_model.freezed.dart @@ -1,4 +1,5 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: deprecated_member_use_from_same_package part of 'todo_list_model.dart'; @@ -6,7 +7,7 @@ part of 'todo_list_model.dart'; // FreezedGenerator // ************************************************************************** -abstract class _$TodoList { +mixin _$TodoList { List get todos; VisibilityFilter get filter; bool get loading; @@ -15,8 +16,10 @@ abstract class _$TodoList { } class _$TodoListState with DiagnosticableTreeMixin implements TodoListState { - const _$TodoListState(this.todos, - {@required this.filter, @required this.loading}); + _$TodoListState(this.todos, {@required this.filter, @required this.loading}) + : assert(todos != null), + assert(filter != null), + assert(loading != null); @override final List todos; @@ -26,7 +29,7 @@ class _$TodoListState with DiagnosticableTreeMixin implements TodoListState { final bool loading; @override - String toString({DiagnosticLevel minLevel = DiagnosticLevel.debug}) { + String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) { return 'TodoList(todos: $todos, filter: $filter, loading: $loading)'; } @@ -42,10 +45,14 @@ class _$TodoListState with DiagnosticableTreeMixin implements TodoListState { @override bool operator ==(dynamic other) { - return other is TodoListState && - (identical(other.todos, todos) || other.todos == todos) && - (identical(other.filter, filter) || other.filter == filter) && - (identical(other.loading, loading) || other.loading == loading); + return identical(this, other) || + (other is TodoListState && + (identical(other.todos, todos) || + const DeepCollectionEquality().equals(other.todos, todos)) && + (identical(other.filter, filter) || + const DeepCollectionEquality().equals(other.filter, filter)) && + (identical(other.loading, loading) || + const DeepCollectionEquality().equals(other.loading, loading))); } @override @@ -57,20 +64,23 @@ class _$TodoListState with DiagnosticableTreeMixin implements TodoListState { @override _$TodoListState copyWith({ - Object todos = immutable, - Object filter = immutable, - Object loading = immutable, + Object todos = freezed, + Object filter = freezed, + Object loading = freezed, }) { + assert(todos != null); + assert(filter != null); + assert(loading != null); return _$TodoListState( - todos == immutable ? this.todos : todos as List, - filter: filter == immutable ? this.filter : filter as VisibilityFilter, - loading: loading == immutable ? this.loading : loading as bool, + todos == freezed ? this.todos : todos as List, + filter: filter == freezed ? this.filter : filter as VisibilityFilter, + loading: loading == freezed ? this.loading : loading as bool, ); } } abstract class TodoListState implements TodoList { - const factory TodoListState(List todos, + factory TodoListState(List todos, {@required VisibilityFilter filter, @required bool loading}) = _$TodoListState; diff --git a/freezed_provider_value_notifier/pubspec.yaml b/freezed_provider_value_notifier/pubspec.yaml index 1d4b1b3c..b5aca3f4 100644 --- a/freezed_provider_value_notifier/pubspec.yaml +++ b/freezed_provider_value_notifier/pubspec.yaml @@ -7,6 +7,7 @@ environment: sdk: ">=2.6.0 <3.0.0" dependencies: + freezed_annotation: provider: ^4.1.0-dev todos_repository_local_storage: path: ../todos_repository_local_storage From cf4576c17ae8966a5233e72e042cbbcf3cea21cd Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Sun, 16 Feb 2020 00:57:48 +0000 Subject: [PATCH 64/77] cache getters --- .../lib/todo_list_model.dart | 35 +++++---- .../lib/todo_list_model.freezed.dart | 78 ++++++++++++++++++- freezed_provider_value_notifier/pubspec.yaml | 4 +- 3 files changed, 97 insertions(+), 20 deletions(-) diff --git a/freezed_provider_value_notifier/lib/todo_list_model.dart b/freezed_provider_value_notifier/lib/todo_list_model.dart index 0a9dace8..4af6cede 100644 --- a/freezed_provider_value_notifier/lib/todo_list_model.dart +++ b/freezed_provider_value_notifier/lib/todo_list_model.dart @@ -20,33 +20,36 @@ abstract class TodoList with _$TodoList { @required VisibilityFilter filter, @required bool loading, }) = TodoListState; -} - -extension TodoListStateExtensions on TodoList { - List get filteredTodos { - return todos.where((todo) { - switch (filter) { - case VisibilityFilter.active: - return !todo.complete; - case VisibilityFilter.completed: - return todo.complete; - case VisibilityFilter.all: - default: - return true; - } - }).toList(); - } + @late int get numCompleted => todos.where((Todo todo) => todo.complete).toList().length; + @late bool get hasCompleted => numCompleted > 0; + @late int get numActive => todos.where((Todo todo) => !todo.complete).toList().length; + @late bool get hasActiveTodos => numActive > 0; + @late + List get filteredTodos => todos.where((todo) { + switch (filter) { + case VisibilityFilter.active: + return !todo.complete; + case VisibilityFilter.completed: + return todo.complete; + case VisibilityFilter.all: + default: + return true; + } + }).toList(); +} + +extension TodoById on TodoList { Todo todoById(String id) => todos.firstWhere((it) => it.id == id, orElse: () => null); } diff --git a/freezed_provider_value_notifier/lib/todo_list_model.freezed.dart b/freezed_provider_value_notifier/lib/todo_list_model.freezed.dart index fe479cc5..c590dbcb 100644 --- a/freezed_provider_value_notifier/lib/todo_list_model.freezed.dart +++ b/freezed_provider_value_notifier/lib/todo_list_model.freezed.dart @@ -27,10 +27,79 @@ class _$TodoListState with DiagnosticableTreeMixin implements TodoListState { final VisibilityFilter filter; @override final bool loading; + bool _didnumCompleted = false; + int _numCompleted; + + @override + int get numCompleted { + if (_didnumCompleted == false) { + _didnumCompleted = true; + _numCompleted = todos.where((Todo todo) => todo.complete).toList().length; + } + return _numCompleted; + } + + bool _didhasCompleted = false; + bool _hasCompleted; + + @override + bool get hasCompleted { + if (_didhasCompleted == false) { + _didhasCompleted = true; + _hasCompleted = numCompleted > 0; + } + return _hasCompleted; + } + + bool _didnumActive = false; + int _numActive; + + @override + int get numActive { + if (_didnumActive == false) { + _didnumActive = true; + _numActive = todos.where((Todo todo) => !todo.complete).toList().length; + } + return _numActive; + } + + bool _didhasActiveTodos = false; + bool _hasActiveTodos; + + @override + bool get hasActiveTodos { + if (_didhasActiveTodos == false) { + _didhasActiveTodos = true; + _hasActiveTodos = numActive > 0; + } + return _hasActiveTodos; + } + + bool _didfilteredTodos = false; + List _filteredTodos; + + @override + List get filteredTodos { + if (_didfilteredTodos == false) { + _didfilteredTodos = true; + _filteredTodos = todos.where((todo) { + switch (filter) { + case VisibilityFilter.active: + return !todo.complete; + case VisibilityFilter.completed: + return todo.complete; + case VisibilityFilter.all: + default: + return true; + } + }).toList(); + } + return _filteredTodos; + } @override String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) { - return 'TodoList(todos: $todos, filter: $filter, loading: $loading)'; + return 'TodoList(todos: $todos, filter: $filter, loading: $loading, numCompleted: $numCompleted, hasCompleted: $hasCompleted, numActive: $numActive, hasActiveTodos: $hasActiveTodos, filteredTodos: $filteredTodos)'; } @override @@ -40,7 +109,12 @@ class _$TodoListState with DiagnosticableTreeMixin implements TodoListState { ..add(DiagnosticsProperty('type', 'TodoList')) ..add(DiagnosticsProperty('todos', todos)) ..add(DiagnosticsProperty('filter', filter)) - ..add(DiagnosticsProperty('loading', loading)); + ..add(DiagnosticsProperty('loading', loading)) + ..add(DiagnosticsProperty('numCompleted', numCompleted)) + ..add(DiagnosticsProperty('hasCompleted', hasCompleted)) + ..add(DiagnosticsProperty('numActive', numActive)) + ..add(DiagnosticsProperty('hasActiveTodos', hasActiveTodos)) + ..add(DiagnosticsProperty('filteredTodos', filteredTodos)); } @override diff --git a/freezed_provider_value_notifier/pubspec.yaml b/freezed_provider_value_notifier/pubspec.yaml index b5aca3f4..c27a295e 100644 --- a/freezed_provider_value_notifier/pubspec.yaml +++ b/freezed_provider_value_notifier/pubspec.yaml @@ -7,7 +7,7 @@ environment: sdk: ">=2.6.0 <3.0.0" dependencies: - freezed_annotation: + freezed_annotation: ^0.6.0 provider: ^4.1.0-dev todos_repository_local_storage: path: ../todos_repository_local_storage @@ -20,7 +20,7 @@ dependencies: shared_preferences: dev_dependencies: - freezed: + freezed: ^0.6.1 build_runner: mockito: test: From b4b8dabf4ede0e29ae7e35159753ce63a3d8508c Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Thu, 20 Feb 2020 11:43:16 +0000 Subject: [PATCH 65/77] revert material fix --- freezed_provider_value_notifier/lib/add_todo_screen.dart | 4 ++-- freezed_provider_value_notifier/lib/details_screen.dart | 4 ++-- freezed_provider_value_notifier/lib/edit_todo_screen.dart | 2 +- .../lib/home/filter_button.dart | 5 ++--- freezed_provider_value_notifier/lib/home/stats_view.dart | 8 ++++---- .../lib/home/todo_list_view.dart | 4 ++-- 6 files changed, 13 insertions(+), 14 deletions(-) diff --git a/freezed_provider_value_notifier/lib/add_todo_screen.dart b/freezed_provider_value_notifier/lib/add_todo_screen.dart index 16ade454..cf887a07 100644 --- a/freezed_provider_value_notifier/lib/add_todo_screen.dart +++ b/freezed_provider_value_notifier/lib/add_todo_screen.dart @@ -46,7 +46,7 @@ class _AddTodoScreenState extends State { decoration: InputDecoration( hintText: localizations.newTodoHint, ), - style: textTheme.headline5, + style: textTheme.headline, autofocus: true, validator: (val) { return val.trim().isEmpty @@ -57,7 +57,7 @@ class _AddTodoScreenState extends State { TextFormField( key: ArchSampleKeys.noteField, controller: _notesEditingController, - style: textTheme.subtitle1, + style: textTheme.subhead, decoration: InputDecoration(hintText: localizations.notesHint), maxLines: 10, ) diff --git a/freezed_provider_value_notifier/lib/details_screen.dart b/freezed_provider_value_notifier/lib/details_screen.dart index 0ce8819d..7841a375 100644 --- a/freezed_provider_value_notifier/lib/details_screen.dart +++ b/freezed_provider_value_notifier/lib/details_screen.dart @@ -63,13 +63,13 @@ class DetailsScreen extends StatelessWidget { child: Text( todo.task, key: ArchSampleKeys.detailsTodoItemTask, - style: Theme.of(context).textTheme.headline5, + style: Theme.of(context).textTheme.headline, ), ), Text( todo.note, key: ArchSampleKeys.detailsTodoItemNote, - style: Theme.of(context).textTheme.subtitle1, + style: Theme.of(context).textTheme.subhead, ) ], ), diff --git a/freezed_provider_value_notifier/lib/edit_todo_screen.dart b/freezed_provider_value_notifier/lib/edit_todo_screen.dart index 377f1e09..ad7b32fa 100644 --- a/freezed_provider_value_notifier/lib/edit_todo_screen.dart +++ b/freezed_provider_value_notifier/lib/edit_todo_screen.dart @@ -49,7 +49,7 @@ class _EditTodoScreenState extends State { TextFormField( controller: _taskController, key: ArchSampleKeys.taskField, - style: Theme.of(context).textTheme.headline5, + style: Theme.of(context).textTheme.headline, decoration: InputDecoration( hintText: ArchSampleLocalizations.of(context).newTodoHint, ), diff --git a/freezed_provider_value_notifier/lib/home/filter_button.dart b/freezed_provider_value_notifier/lib/home/filter_button.dart index fc7fe63d..701f4382 100644 --- a/freezed_provider_value_notifier/lib/home/filter_button.dart +++ b/freezed_provider_value_notifier/lib/home/filter_button.dart @@ -40,10 +40,9 @@ class FilterButton extends StatelessWidget { BuildContext context, TodoList store) { final activeStyle = Theme.of(context) .textTheme - .bodyText2 + .body1 .copyWith(color: Theme.of(context).accentColor); - final defaultStyle = Theme.of(context).textTheme.bodyText2; - + final defaultStyle = Theme.of(context).textTheme.body1; return [ PopupMenuItem( key: ArchSampleKeys.allFilter, diff --git a/freezed_provider_value_notifier/lib/home/stats_view.dart b/freezed_provider_value_notifier/lib/home/stats_view.dart index ba1420f5..868b7b10 100644 --- a/freezed_provider_value_notifier/lib/home/stats_view.dart +++ b/freezed_provider_value_notifier/lib/home/stats_view.dart @@ -17,7 +17,7 @@ class StatsView extends StatelessWidget { padding: const EdgeInsets.only(bottom: 8.0), child: Text( ArchSampleLocalizations.of(context).completedTodos, - style: Theme.of(context).textTheme.headline6, + style: Theme.of(context).textTheme.title, ), ), Padding( @@ -27,7 +27,7 @@ class StatsView extends StatelessWidget { builder: (context, numCompleted, _) => Text( '$numCompleted', key: ArchSampleKeys.statsNumCompleted, - style: Theme.of(context).textTheme.subtitle1, + style: Theme.of(context).textTheme.subhead, ), ), ), @@ -35,7 +35,7 @@ class StatsView extends StatelessWidget { padding: const EdgeInsets.only(bottom: 8.0), child: Text( ArchSampleLocalizations.of(context).activeTodos, - style: Theme.of(context).textTheme.headline6, + style: Theme.of(context).textTheme.title, ), ), Padding( @@ -45,7 +45,7 @@ class StatsView extends StatelessWidget { builder: (context, numActive, _) => Text( '$numActive', key: ArchSampleKeys.statsNumActive, - style: Theme.of(context).textTheme.subtitle1, + style: Theme.of(context).textTheme.subhead, ), ), ) diff --git a/freezed_provider_value_notifier/lib/home/todo_list_view.dart b/freezed_provider_value_notifier/lib/home/todo_list_view.dart index cf67d392..806e926e 100644 --- a/freezed_provider_value_notifier/lib/home/todo_list_view.dart +++ b/freezed_provider_value_notifier/lib/home/todo_list_view.dart @@ -54,14 +54,14 @@ class TodoListView extends StatelessWidget { title: Text( todo.task, key: ArchSampleKeys.todoItemTask(todo.id), - style: Theme.of(context).textTheme.headline6, + style: Theme.of(context).textTheme.title, ), subtitle: Text( todo.note, key: ArchSampleKeys.todoItemNote(todo.id), maxLines: 1, overflow: TextOverflow.ellipsis, - style: Theme.of(context).textTheme.subtitle1, + style: Theme.of(context).textTheme.subhead, ), ), ); From c6db56b242b1ac247fa6dbdecd0ff361a15c2795 Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Thu, 20 Feb 2020 13:45:52 +0000 Subject: [PATCH 66/77] feedback --- .../lib/models.dart | 4 -- .../lib/todo_list_model.dart | 51 ++++++++----------- 2 files changed, 22 insertions(+), 33 deletions(-) diff --git a/freezed_provider_value_notifier/lib/models.dart b/freezed_provider_value_notifier/lib/models.dart index 699321cb..e6b5b627 100644 --- a/freezed_provider_value_notifier/lib/models.dart +++ b/freezed_provider_value_notifier/lib/models.dart @@ -5,10 +5,6 @@ import 'package:todos_app_core/todos_app_core.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -enum AppTab { todos, stats } - -enum ExtraAction { toggleAllComplete, clearCompleted } - class Todo { final bool complete; final String id; diff --git a/freezed_provider_value_notifier/lib/todo_list_model.dart b/freezed_provider_value_notifier/lib/todo_list_model.dart index 4af6cede..4ea77345 100644 --- a/freezed_provider_value_notifier/lib/todo_list_model.dart +++ b/freezed_provider_value_notifier/lib/todo_list_model.dart @@ -66,10 +66,13 @@ class TodoListController extends ValueNotifier { final TodosRepository todosRepository; - set filter(VisibilityFilter filter) => - setState(value.copyWith(filter: filter)); + set filter(VisibilityFilter filter) { + value = value.copyWith(filter: filter); + } - void setState(TodoList state) { + @override + @protected + set value(TodoList state) { if (!const DeepCollectionEquality().equals(state.todos, value.todos)) { todosRepository .saveTodos(state.todos.map((it) => it.toEntity()).toList()); @@ -78,54 +81,44 @@ class TodoListController extends ValueNotifier { } Future _loadTodos() async { - setState(value.copyWith(loading: true)); + value = (value.copyWith(loading: true)); try { final todos = await todosRepository.loadTodos(); - setState(value.copyWith( + value = (value.copyWith( todos: todos.map(Todo.fromEntity).toList(), loading: false)); } catch (_) { - setState(value.copyWith(loading: false)); + value = (value.copyWith(loading: false)); } } void addTodo(Todo todo) { - setState( - value.copyWith(todos: [...value.todos, todo]), - ); + value = value.copyWith(todos: [...value.todos, todo]); } void updateTodo(Todo updatedTodo) { - setState( - value.copyWith(todos: [ - for (final todo in value.todos) - if (todo.id == updatedTodo.id) updatedTodo else todo, - ]), - ); + value = value.copyWith(todos: [ + for (final todo in value.todos) + if (todo.id == updatedTodo.id) updatedTodo else todo, + ]); } void removeTodoWithId(String id) { - setState( - value.copyWith(todos: [ - for (final todo in value.todos) if (todo.id != id) todo, - ]), - ); + value = value.copyWith(todos: [ + for (final todo in value.todos) if (todo.id != id) todo, + ]); } void toggleAll() { final allComplete = value.todos.every((todo) => todo.complete); - setState( - value.copyWith(todos: [ - for (final todo in value.todos) todo.copy(complete: !allComplete), - ]), - ); + value = value.copyWith(todos: [ + for (final todo in value.todos) todo.copy(complete: !allComplete), + ]); } void clearCompleted() { - setState( - value.copyWith( - todos: value.todos.where((todo) => !todo.complete).toList(), - ), + value = value.copyWith( + todos: value.todos.where((todo) => !todo.complete).toList(), ); } } From 8023b05b89e4c172c3285190333e8be7355e37e0 Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Thu, 20 Feb 2020 13:51:18 +0000 Subject: [PATCH 67/77] split tests --- .../test/app_state_test.dart | 52 ++++++++++--------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/freezed_provider_value_notifier/test/app_state_test.dart b/freezed_provider_value_notifier/test/app_state_test.dart index 2b4b0bb5..7b119763 100644 --- a/freezed_provider_value_notifier/test/app_state_test.dart +++ b/freezed_provider_value_notifier/test/app_state_test.dart @@ -9,36 +9,37 @@ import 'package:test/test.dart'; import 'mock_repository.dart'; void main() { - group('TodoListModel', () { + group('TodoList', () { test('should check if there are completed todos', () async { - final model = TodoListController( - todosRepository: MockRepository(), - todos: [Todo('a'), Todo('b'), Todo('c', complete: true)], + final model = TodoList( + [Todo('a'), Todo('b'), Todo('c', complete: true)], + loading: false, + filter: VisibilityFilter.all, ); - expect(model.value.numCompleted, 1); - expect(model.value.hasCompleted, isTrue); + expect(model.numCompleted, 1); + expect(model.hasCompleted, isTrue); }); - test('should calculate the number of active todos', () async { - final model = TodoListController( - todosRepository: MockRepository(), - todos: [Todo('a'), Todo('b'), Todo('c', complete: true)], + final model = TodoList( + [Todo('a'), Todo('b'), Todo('c', complete: true)], + loading: false, + filter: VisibilityFilter.all, ); - expect(model.value.hasActiveTodos, isTrue); - expect(model.value.numActive, 2); + expect(model.hasActiveTodos, isTrue); + expect(model.numActive, 2); }); test('should return all todos if the VisibilityFilter is all', () async { final todos = [Todo('a'), Todo('b'), Todo('c', complete: true)]; - final model = TodoListController( + final model = TodoList( + todos, + loading: false, filter: VisibilityFilter.all, - todosRepository: MockRepository(), - todos: todos, ); - expect(model.value.filteredTodos, todos); + expect(model.filteredTodos, todos); }); test('should return active todos if the VisibilityFilter is active', @@ -46,13 +47,13 @@ void main() { final todo1 = Todo('a'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); - final model = TodoListController( + final model = TodoList( + [todo1, todo2, todo3], + loading: false, filter: VisibilityFilter.active, - todosRepository: MockRepository(), - todos: [todo1, todo2, todo3], ); - expect(model.value.filteredTodos, [todo1, todo2]); + expect(model.filteredTodos, [todo1, todo2]); }); test('should return completed todos if the VisibilityFilter is completed', @@ -60,15 +61,16 @@ void main() { final todo1 = Todo('a'); final todo2 = Todo('b'); final todo3 = Todo('c', complete: true); - final model = TodoListController( + final model = TodoList( + [todo1, todo2, todo3], filter: VisibilityFilter.completed, - todosRepository: MockRepository(), - todos: [todo1, todo2, todo3], + loading: false, ); - expect(model.value.filteredTodos, [todo3]); + expect(model.filteredTodos, [todo3]); }); - + }); + group('TodoListController', () { test('should clear the completed todos', () async { final repository = MockRepository(); final todo1 = Todo('a'); From 37effd3634c790fa3981054bcc756386561bf632 Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Thu, 20 Feb 2020 14:36:55 +0000 Subject: [PATCH 68/77] fix infinite loop --- freezed_provider_value_notifier/lib/todo_list_model.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freezed_provider_value_notifier/lib/todo_list_model.dart b/freezed_provider_value_notifier/lib/todo_list_model.dart index 4ea77345..8f3da9dc 100644 --- a/freezed_provider_value_notifier/lib/todo_list_model.dart +++ b/freezed_provider_value_notifier/lib/todo_list_model.dart @@ -77,7 +77,7 @@ class TodoListController extends ValueNotifier { todosRepository .saveTodos(state.todos.map((it) => it.toEntity()).toList()); } - value = state; + super.value = state; } Future _loadTodos() async { From cd3804a573cf9cbe0af7dea4ddcd35b3f592e67a Mon Sep 17 00:00:00 2001 From: Remi Rousselet Date: Thu, 20 Feb 2020 15:15:50 +0000 Subject: [PATCH 69/77] Add initial load test --- .../test/app_state_test.dart | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/freezed_provider_value_notifier/test/app_state_test.dart b/freezed_provider_value_notifier/test/app_state_test.dart index 7b119763..ef8089b4 100644 --- a/freezed_provider_value_notifier/test/app_state_test.dart +++ b/freezed_provider_value_notifier/test/app_state_test.dart @@ -71,6 +71,20 @@ void main() { }); }); group('TodoListController', () { + test('should load todos from the repository', () async { + final todos = [Todo('D')]; + final repository = MockRepository(todos); + final model = TodoListController(todosRepository: repository); + + expect(model.value.loading, isTrue); + expect(model.value.todos, []); + + await Future.doWhile(() => Future.value(model.value.loading)); + + expect(model.value.todos, todos); + expect(model.value.loading, isFalse); + + }); test('should clear the completed todos', () async { final repository = MockRepository(); final todo1 = Todo('a'); From 4f62cccd28664ca38f303a407fb039b8d1c78012 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Thu, 20 Feb 2020 16:01:57 +0100 Subject: [PATCH 70/77] ChangeNotifierProviderSample fix: - Load todos when the app is first launched, not any time a listener is added - Test loading of the todos from the repository --- change_notifier_provider/lib/app.dart | 2 +- .../lib/todo_list_model.dart | 7 ------- change_notifier_provider/pubspec.yaml | 2 +- ...ate_test.dart => todo_list_model_test.dart} | 18 ++++++++++++++++++ 4 files changed, 20 insertions(+), 9 deletions(-) rename change_notifier_provider/test/{app_state_test.dart => todo_list_model_test.dart} (89%) diff --git a/change_notifier_provider/lib/app.dart b/change_notifier_provider/lib/app.dart index dede20c9..3bfe8b61 100644 --- a/change_notifier_provider/lib/app.dart +++ b/change_notifier_provider/lib/app.dart @@ -23,7 +23,7 @@ class ProviderApp extends StatelessWidget { @override Widget build(BuildContext context) { return ChangeNotifierProvider( - create: (_) => TodoListModel(repository: repository), + create: (_) => TodoListModel(repository: repository)..loadTodos(), child: MaterialApp( theme: ArchSampleTheme.theme, localizationsDelegates: [ diff --git a/change_notifier_provider/lib/todo_list_model.dart b/change_notifier_provider/lib/todo_list_model.dart index 9e0ecbcf..4a725ee8 100644 --- a/change_notifier_provider/lib/todo_list_model.dart +++ b/change_notifier_provider/lib/todo_list_model.dart @@ -39,13 +39,6 @@ class TodoListModel extends ChangeNotifier { }) : _todos = todos ?? [], _filter = filter ?? VisibilityFilter.all; - @override - void addListener(VoidCallback listener) { - super.addListener(listener); - // update data for every subscriber, especially for the first one - loadTodos(); - } - /// Loads remote data /// /// Call this initially and when the user manually refreshes diff --git a/change_notifier_provider/pubspec.yaml b/change_notifier_provider/pubspec.yaml index 5050d8be..f5c2a871 100644 --- a/change_notifier_provider/pubspec.yaml +++ b/change_notifier_provider/pubspec.yaml @@ -17,7 +17,7 @@ environment: sdk: ">=2.6.0 <3.0.0" dependencies: - provider: ^4.0.1 + provider: ^4.0.4 todos_repository_local_storage: path: ../todos_repository_local_storage todos_app_core: diff --git a/change_notifier_provider/test/app_state_test.dart b/change_notifier_provider/test/todo_list_model_test.dart similarity index 89% rename from change_notifier_provider/test/app_state_test.dart rename to change_notifier_provider/test/todo_list_model_test.dart index d1a792a1..9162ee02 100644 --- a/change_notifier_provider/test/app_state_test.dart +++ b/change_notifier_provider/test/todo_list_model_test.dart @@ -141,5 +141,23 @@ void main() { expect(model.todos, [todo1, update, todo3]); expect(repository.saveCount, 1); }); + + test('should load todos from the repository', () async { + final todos = [Todo('a'), Todo('b'), Todo('c', complete: true)]; + final repository = MockRepository(todos); + final model = TodoListModel(repository: repository); + + expect(model.isLoading, isFalse); + expect(model.todos, []); + + final loading = model.loadTodos(); + + expect(model.isLoading, isTrue); + + await loading; + + expect(model.isLoading, isFalse); + expect(model.todos, todos); + }); }); } From 1a4d675d8a7ea16258604b68c2fae5abdf386af9 Mon Sep 17 00:00:00 2001 From: Brian Egan Date: Thu, 20 Feb 2020 16:38:12 +0100 Subject: [PATCH 71/77] Fix home_screen_test.dart --- .../test/home_screen_test.dart | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/change_notifier_provider/test/home_screen_test.dart b/change_notifier_provider/test/home_screen_test.dart index 31c1cb49..e2e17a64 100644 --- a/change_notifier_provider/test/home_screen_test.dart +++ b/change_notifier_provider/test/home_screen_test.dart @@ -1,17 +1,17 @@ -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:provider/provider.dart'; import 'package:change_notifier_provider_sample/home/home_screen.dart'; import 'package:change_notifier_provider_sample/localization.dart'; import 'package:change_notifier_provider_sample/models.dart'; import 'package:change_notifier_provider_sample/todo_list_model.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:provider/provider.dart'; import 'package:todos_app_core/todos_app_core.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; import 'mock_repository.dart'; -/// Demonstrates how to test Widgets +/// Demonstrates how to test Widgets in combination with a ChangeNotifier void main() { group('HomeScreen', () { final todoListFinder = find.byKey(ArchSampleKeys.todoList); @@ -91,16 +91,16 @@ class _TestWidget extends StatelessWidget { Key key, this.child, this.repository, - this.todos = const [], + this.todos, }) : super(key: key); @override Widget build(BuildContext context) { return ChangeNotifierProvider( - create: (_) => TodoListModel( - repository: MockRepository([]), - todos: defaultTodos(), - ), + create: (_) { + final repo = MockRepository(todos ?? _defaultTodos); + return TodoListModel(repository: repo)..loadTodos(); + }, child: MaterialApp( localizationsDelegates: [ ProviderLocalizationsDelegate(), @@ -110,14 +110,14 @@ class _TestWidget extends StatelessWidget { ), ); } -} -List defaultTodos() { - return [ - Todo('T1', id: '1', note: 'N1'), - Todo('T2', id: '2'), - Todo('T3', id: '3', complete: true), - ]; + static List get _defaultTodos { + return [ + Todo('T1', id: '1', note: 'N1'), + Todo('T2', id: '2'), + Todo('T3', id: '3', complete: true), + ]; + } } Matcher isChecked(bool isChecked) { From 8cd58ae46b83909caf83a7cbe291a485c350cbf9 Mon Sep 17 00:00:00 2001 From: Masayuki Ono Date: Wed, 4 Mar 2020 12:17:28 +0900 Subject: [PATCH 72/77] Fix ValueNotifierProvider memory leak --- freezed_provider_value_notifier/lib/value_notifier_provider.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/freezed_provider_value_notifier/lib/value_notifier_provider.dart b/freezed_provider_value_notifier/lib/value_notifier_provider.dart index f7726e4e..53305856 100644 --- a/freezed_provider_value_notifier/lib/value_notifier_provider.dart +++ b/freezed_provider_value_notifier/lib/value_notifier_provider.dart @@ -17,6 +17,7 @@ class ValueNotifierProvider, Value> Widget buildWithChild(BuildContext context, Widget child) { return InheritedProvider( create: create, + dispose: (context, Controller controller) => controller.dispose(), child: DeferredInheritedProvider( create: (context) => context.read(), startListening: (context, setState, controller, _) { From 8df4d963264f3f7271d243aa220d3fdd01f59aa9 Mon Sep 17 00:00:00 2001 From: Thomas Burkhart Date: Sun, 4 Oct 2020 22:52:39 +0200 Subject: [PATCH 73/77] first try :-) --- .../com/example/scoped_model/MainActivity.kt | 12 ++ rvms/test/app_state_test.dart | 169 ++++++++++++++++++ 2 files changed, 181 insertions(+) create mode 100644 rvms/android/app/src/main/kotlin/com/example/scoped_model/MainActivity.kt create mode 100644 rvms/test/app_state_test.dart diff --git a/rvms/android/app/src/main/kotlin/com/example/scoped_model/MainActivity.kt b/rvms/android/app/src/main/kotlin/com/example/scoped_model/MainActivity.kt new file mode 100644 index 00000000..2334c261 --- /dev/null +++ b/rvms/android/app/src/main/kotlin/com/example/scoped_model/MainActivity.kt @@ -0,0 +1,12 @@ +package com.example.scoped_model + +import androidx.annotation.NonNull; +import io.flutter.embedding.android.FlutterActivity +import io.flutter.embedding.engine.FlutterEngine +import io.flutter.plugins.GeneratedPluginRegistrant + +class MainActivity: FlutterActivity() { + override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { + GeneratedPluginRegistrant.registerWith(flutterEngine); + } +} diff --git a/rvms/test/app_state_test.dart b/rvms/test/app_state_test.dart new file mode 100644 index 00000000..26ca7306 --- /dev/null +++ b/rvms/test/app_state_test.dart @@ -0,0 +1,169 @@ +// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. +// Use of this source code is governed by the MIT license that can be found +// in the LICENSE file. + +import 'dart:async'; + +import 'package:scoped_model_sample/models.dart'; +import 'package:scoped_model_sample/todo_list_model.dart'; +import 'package:test/test.dart'; +import 'package:todos_repository_core/todos_repository_core.dart'; + +main() { + group('TodoListModel', () { + test('should check if there are completed todos', () async { + final model = TodoListModel( + repository: MockRepository([ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ])); + await model.loadTodos(); + + expect(model._filteredTodos.any((it) => it.complete), true); + }); + + test('should calculate the number of active todos', () async { + final model = TodoListModel( + repository: MockRepository([ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ])); + await model.loadTodos(); + + expect( + model._filteredTodos.where((it) => !it.complete).toList().length, 2); + }); + + test('should calculate the number of completed todos', () async { + final model = TodoListModel( + repository: MockRepository([ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ])); + await model.loadTodos(); + + expect( + model._filteredTodos.where((it) => it.complete).toList().length, 1); + }); + + test('should return all todos if the VisibilityFilter is all', () async { + final todos = [ + Todo('a'), + Todo('b'), + Todo('c', complete: true), + ]; + final model = TodoListModel( + repository: MockRepository(todos), + activeFilter: VisibilityFilter.all); + await model.loadTodos(); + + expect(model._filteredTodos, todos); + }); + + test('should return active todos if the VisibilityFilter is active', + () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + final model = TodoListModel( + repository: MockRepository(todos), + activeFilter: VisibilityFilter.active, + ); + await model.loadTodos(); + + expect(model._filteredTodos, [ + todo1, + todo2, + ]); + }); + + test('should return completed todos if the VisibilityFilter is completed', + () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + final model = TodoListModel( + repository: MockRepository(todos), + activeFilter: VisibilityFilter.completed, + ); + await model.loadTodos(); + + expect(model._filteredTodos, [todo3]); + }); + + test('should clear the completed todos', () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + final model = TodoListModel( + repository: MockRepository(todos), + ); + await model.loadTodos(); + + model.clearCompleted(); + + expect(model._filteredTodos, [ + todo1, + todo2, + ]); + }); + + test('toggle all as complete or incomplete', () async { + final todo1 = Todo('a'); + final todo2 = Todo('b'); + final todo3 = Todo('c', complete: true); + final todos = [ + todo1, + todo2, + todo3, + ]; + final model = TodoListModel( + repository: MockRepository(todos), + ); + await model.loadTodos(); + + // Toggle all complete + model.toggleAll(); + expect(model._filteredTodos.every((t) => t.complete), isTrue); + + // Toggle all incomplete + model.toggleAll(); + expect(model._filteredTodos.every((t) => !t.complete), isTrue); + }); + }); +} + +class MockRepository extends TodosRepository { + List entities; + + MockRepository(List todos) + : this.entities = todos.map((it) => it.toEntity()).toList(); + + @override + Future> loadTodos() { + return Future.value(entities); + } + + @override + Future saveTodos(List todos) { + return Future.sync(() => entities = todos); + } +} From 26d3645e401c557d8509f43092ce85d2c8ef428b Mon Sep 17 00:00:00 2001 From: Thomas Burkhart Date: Sun, 1 Nov 2020 15:27:20 +0100 Subject: [PATCH 74/77] deleted filed that don't belong in scc --- .gitignore | 4 ++++ built_redux/.flutter-plugins-dependencies | 1 - firestore_redux/.flutter-plugins-dependencies | 1 - frideos_library/.flutter-plugins-dependencies | 1 - mvc/.flutter-plugins-dependencies | 1 - .../Icon-App-1024x1024@1x.png~merged | Bin 0 -> 10932 bytes 6 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 built_redux/.flutter-plugins-dependencies delete mode 100644 firestore_redux/.flutter-plugins-dependencies delete mode 100644 frideos_library/.flutter-plugins-dependencies delete mode 100644 mvc/.flutter-plugins-dependencies create mode 100644 states_rebuilder/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png~merged diff --git a/.gitignore b/.gitignore index 34d26916..f3f437b6 100644 --- a/.gitignore +++ b/.gitignore @@ -91,3 +91,7 @@ lcov.info !**/*/ios/**/default.pbxuser !**/*/ios/**/default.perspectivev3 **/*/generated_plugin_registrant.dart +built_redux/.flutter-plugins-dependencies +firestore_redux/.flutter-plugins-dependencies +frideos_library/.flutter-plugins-dependencies +mvc/.flutter-plugins-dependencies diff --git a/built_redux/.flutter-plugins-dependencies b/built_redux/.flutter-plugins-dependencies deleted file mode 100644 index 51c6a6c7..00000000 --- a/built_redux/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"android":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":[]}],"date_created":"2020-02-10 11:23:40.410802","version":"1.14.7-pre.38"} \ No newline at end of file diff --git a/firestore_redux/.flutter-plugins-dependencies b/firestore_redux/.flutter-plugins-dependencies deleted file mode 100644 index ba421a8f..00000000 --- a/firestore_redux/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"cloud_firestore","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.1+1/","dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.15.4/","dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.3+3/","dependencies":[]},{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"android":[{"name":"cloud_firestore","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.1+1/","dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.15.4/","dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.3+3/","dependencies":[]},{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[{"name":"firebase_auth_web","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-0.1.2/","dependencies":[]},{"name":"firebase_core_web","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-0.1.1+2/","dependencies":[]}]},"dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core"]},{"name":"firebase_auth","dependencies":["firebase_core","firebase_auth_web"]},{"name":"firebase_auth_web","dependencies":[]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"path_provider","dependencies":[]}],"date_created":"2020-02-10 11:23:57.149758","version":"1.14.7-pre.38"} \ No newline at end of file diff --git a/frideos_library/.flutter-plugins-dependencies b/frideos_library/.flutter-plugins-dependencies deleted file mode 100644 index 4ded62f8..00000000 --- a/frideos_library/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"android":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":[]}],"date_created":"2020-02-10 11:24:01.218565","version":"1.14.7-pre.38"} \ No newline at end of file diff --git a/mvc/.flutter-plugins-dependencies b/mvc/.flutter-plugins-dependencies deleted file mode 100644 index b728d6fd..00000000 --- a/mvc/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"android":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":[]}],"date_created":"2020-02-10 11:24:16.829310","version":"1.14.7-pre.38"} \ No newline at end of file diff --git a/states_rebuilder/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png~merged b/states_rebuilder/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png~merged new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 Date: Sun, 1 Nov 2020 15:57:43 +0100 Subject: [PATCH 75/77] remove files that don't belong in scc --- .gitignore | 3 +++ mvu/.flutter-plugins-dependencies | 1 - rvms/.flutter-plugins-dependencies | 1 - scoped_model/.flutter-plugins-dependencies | 1 - 4 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 mvu/.flutter-plugins-dependencies delete mode 100644 rvms/.flutter-plugins-dependencies delete mode 100644 scoped_model/.flutter-plugins-dependencies diff --git a/.gitignore b/.gitignore index f3f437b6..f1712fac 100644 --- a/.gitignore +++ b/.gitignore @@ -95,3 +95,6 @@ built_redux/.flutter-plugins-dependencies firestore_redux/.flutter-plugins-dependencies frideos_library/.flutter-plugins-dependencies mvc/.flutter-plugins-dependencies +mvu/.flutter-plugins-dependencies +rvms/.flutter-plugins-dependencies +scoped_model/.flutter-plugins-dependencies diff --git a/mvu/.flutter-plugins-dependencies b/mvu/.flutter-plugins-dependencies deleted file mode 100644 index 30693179..00000000 --- a/mvu/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"android":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":[]}],"date_created":"2020-02-10 11:24:26.886816","version":"1.14.7-pre.38"} \ No newline at end of file diff --git a/rvms/.flutter-plugins-dependencies b/rvms/.flutter-plugins-dependencies deleted file mode 100644 index 5217271f..00000000 --- a/rvms/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"android":[{"name":"path_provider","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-1.6.18\\\\","dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_macos-0.0.4+4\\\\","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_linux-0.0.1+2\\\\","dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"C:\\\\Users\\\\escam\\\\AppData\\\\Roaming\\\\Pub\\\\Cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_windows-0.0.4+1\\\\","dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]}],"date_created":"2020-10-08 19:19:22.596097","version":"1.22.0"} \ No newline at end of file diff --git a/scoped_model/.flutter-plugins-dependencies b/scoped_model/.flutter-plugins-dependencies deleted file mode 100644 index d4d3c8cc..00000000 --- a/scoped_model/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"android":[{"name":"path_provider","path":"/Users/remirousselet/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.0/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":[]}],"date_created":"2020-02-10 11:24:35.748663","version":"1.14.7-pre.38"} \ No newline at end of file From a0fbebcbd1ecb2d1cb41b75f1e849f1c4e7064e6 Mon Sep 17 00:00:00 2001 From: Thomas Burkhart Date: Sun, 1 Nov 2020 15:59:29 +0100 Subject: [PATCH 76/77] updated dependencies and clean up --- mvu/pubspec.yaml | 8 +- .../_services/repository_service_impl.dart | 7 +- rvms/pubspec.yaml | 4 +- rvms/test/app_state_test.dart | 169 ------------------ 4 files changed, 10 insertions(+), 178 deletions(-) delete mode 100644 rvms/test/app_state_test.dart diff --git a/mvu/pubspec.yaml b/mvu/pubspec.yaml index df6c4155..0d521337 100644 --- a/mvu/pubspec.yaml +++ b/mvu/pubspec.yaml @@ -19,8 +19,8 @@ environment: dependencies: flutter: sdk: flutter - built_value: ^6.3.1 - built_collection: ^4.1.0 + built_value: ^7.1.0 + built_collection: ^4.3.2 dartea: "^0.5.5" todos_app_core: path: ../todos_app_core @@ -33,8 +33,8 @@ dev_dependencies: flutter_driver: sdk: flutter test: - build_runner: ^1.2.8 - built_value_generator: ^6.1.0 + build_runner: any + built_value_generator: ^7.1.0 integration_tests: path: ../integration_tests diff --git a/rvms/lib/display_todos/_services/repository_service_impl.dart b/rvms/lib/display_todos/_services/repository_service_impl.dart index 73c31f41..9ad52808 100644 --- a/rvms/lib/display_todos/_services/repository_service_impl.dart +++ b/rvms/lib/display_todos/_services/repository_service_impl.dart @@ -9,7 +9,7 @@ import 'package:path_provider/path_provider.dart'; import 'package:rvms_model_sample/display_todos/_model/todo.dart'; import 'package:rvms_model_sample/display_todos/_services/repository_service_.dart'; import 'package:todos_repository_core/todos_repository_core.dart'; -import 'package:todos_repository_simple/todos_repository_simple.dart'; +import 'package:todos_repository_local_storage/todos_repository_local_storage.dart'; /// A class that glues together our local file storage and web client. It has a /// clear responsibility: Load Todos and Persist todos. @@ -39,17 +39,18 @@ class RepositoryServiceImplementation implements RepositoryService { try { loadedTodos = await fileStorage.loadTodos(); } catch (e) { - loadedTodos = await webClient.fetchTodos(); + loadedTodos = await webClient.loadTodos(); } return loadedTodos.map(Todo.fromEntity).toList(); } // Persists todos to local disk and the web + @override Future saveTodos(List todos) { final todoEntities = todos.map((it) => it.toEntity()).toList(); return Future.wait([ fileStorage.saveTodos(todoEntities), - webClient.postTodos(todoEntities), + webClient.saveTodos(todoEntities), ]); } } diff --git a/rvms/pubspec.yaml b/rvms/pubspec.yaml index 9ea69ed2..4befce0d 100644 --- a/rvms/pubspec.yaml +++ b/rvms/pubspec.yaml @@ -11,8 +11,8 @@ dependencies: sdk: flutter todos_app_core: path: ../todos_app_core - todos_repository_simple: - path: ../todos_repository_simple + todos_repository_local_storage: + path: ../todos_repository_local_storage flutter_command: any functional_listener: any get_it: any diff --git a/rvms/test/app_state_test.dart b/rvms/test/app_state_test.dart deleted file mode 100644 index 26ca7306..00000000 --- a/rvms/test/app_state_test.dart +++ /dev/null @@ -1,169 +0,0 @@ -// Copyright 2018 The Flutter Architecture Sample Authors. All rights reserved. -// Use of this source code is governed by the MIT license that can be found -// in the LICENSE file. - -import 'dart:async'; - -import 'package:scoped_model_sample/models.dart'; -import 'package:scoped_model_sample/todo_list_model.dart'; -import 'package:test/test.dart'; -import 'package:todos_repository_core/todos_repository_core.dart'; - -main() { - group('TodoListModel', () { - test('should check if there are completed todos', () async { - final model = TodoListModel( - repository: MockRepository([ - Todo('a'), - Todo('b'), - Todo('c', complete: true), - ])); - await model.loadTodos(); - - expect(model._filteredTodos.any((it) => it.complete), true); - }); - - test('should calculate the number of active todos', () async { - final model = TodoListModel( - repository: MockRepository([ - Todo('a'), - Todo('b'), - Todo('c', complete: true), - ])); - await model.loadTodos(); - - expect( - model._filteredTodos.where((it) => !it.complete).toList().length, 2); - }); - - test('should calculate the number of completed todos', () async { - final model = TodoListModel( - repository: MockRepository([ - Todo('a'), - Todo('b'), - Todo('c', complete: true), - ])); - await model.loadTodos(); - - expect( - model._filteredTodos.where((it) => it.complete).toList().length, 1); - }); - - test('should return all todos if the VisibilityFilter is all', () async { - final todos = [ - Todo('a'), - Todo('b'), - Todo('c', complete: true), - ]; - final model = TodoListModel( - repository: MockRepository(todos), - activeFilter: VisibilityFilter.all); - await model.loadTodos(); - - expect(model._filteredTodos, todos); - }); - - test('should return active todos if the VisibilityFilter is active', - () async { - final todo1 = Todo('a'); - final todo2 = Todo('b'); - final todo3 = Todo('c', complete: true); - final todos = [ - todo1, - todo2, - todo3, - ]; - final model = TodoListModel( - repository: MockRepository(todos), - activeFilter: VisibilityFilter.active, - ); - await model.loadTodos(); - - expect(model._filteredTodos, [ - todo1, - todo2, - ]); - }); - - test('should return completed todos if the VisibilityFilter is completed', - () async { - final todo1 = Todo('a'); - final todo2 = Todo('b'); - final todo3 = Todo('c', complete: true); - final todos = [ - todo1, - todo2, - todo3, - ]; - final model = TodoListModel( - repository: MockRepository(todos), - activeFilter: VisibilityFilter.completed, - ); - await model.loadTodos(); - - expect(model._filteredTodos, [todo3]); - }); - - test('should clear the completed todos', () async { - final todo1 = Todo('a'); - final todo2 = Todo('b'); - final todo3 = Todo('c', complete: true); - final todos = [ - todo1, - todo2, - todo3, - ]; - final model = TodoListModel( - repository: MockRepository(todos), - ); - await model.loadTodos(); - - model.clearCompleted(); - - expect(model._filteredTodos, [ - todo1, - todo2, - ]); - }); - - test('toggle all as complete or incomplete', () async { - final todo1 = Todo('a'); - final todo2 = Todo('b'); - final todo3 = Todo('c', complete: true); - final todos = [ - todo1, - todo2, - todo3, - ]; - final model = TodoListModel( - repository: MockRepository(todos), - ); - await model.loadTodos(); - - // Toggle all complete - model.toggleAll(); - expect(model._filteredTodos.every((t) => t.complete), isTrue); - - // Toggle all incomplete - model.toggleAll(); - expect(model._filteredTodos.every((t) => !t.complete), isTrue); - }); - }); -} - -class MockRepository extends TodosRepository { - List entities; - - MockRepository(List todos) - : this.entities = todos.map((it) => it.toEntity()).toList(); - - @override - Future> loadTodos() { - return Future.value(entities); - } - - @override - Future saveTodos(List todos) { - return Future.sync(() => entities = todos); - } -} From 878dd9d9157041cda4c78933f736535a528a91ae Mon Sep 17 00:00:00 2001 From: Thomas Burkhart Date: Sun, 1 Nov 2020 16:09:26 +0100 Subject: [PATCH 77/77] fixed warnings --- .../_manager/todo_manager_implementation.dart | 14 +++++++++++++- rvms/lib/display_todos/_model/todo.dart | 1 + rvms/lib/display_todos/_model/typedefs.dart | 6 +++--- .../_services/repository_service_impl.dart | 1 + rvms/lib/display_todos/detail_screen.dart | 4 ++-- rvms/lib/display_todos/home_screen.dart | 4 ++-- rvms/lib/display_todos/widgets/stats_counter.dart | 2 +- rvms/lib/display_todos/widgets/todo_item.dart | 2 +- rvms/lib/display_todos/widgets/todo_list.dart | 8 -------- rvms/lib/edit_todos/add_edit_screen.dart | 4 ++-- rvms/lib/localization.dart | 4 ++-- rvms/test/todo_manager_test.dart | 2 +- 12 files changed, 29 insertions(+), 23 deletions(-) diff --git a/rvms/lib/display_todos/_manager/todo_manager_implementation.dart b/rvms/lib/display_todos/_manager/todo_manager_implementation.dart index bbcf9f3c..1fec3039 100644 --- a/rvms/lib/display_todos/_manager/todo_manager_implementation.dart +++ b/rvms/lib/display_todos/_manager/todo_manager_implementation.dart @@ -14,21 +14,28 @@ import 'package:rvms_model_sample/display_todos/_services/repository_service_.da import '../../locator.dart'; class TodoManagerImplementation implements TodoManager { + @override ValueListenable> get allTodos => _todos; final _todos = ListNotifier(data: []); + @override ValueListenable> get filteredTodos => _filteredTodos; ValueNotifier> _filteredTodos; + @override ValueListenable get errors => _errors; ValueNotifier _errors; @override VisibilityFilter get activeFilter => selectFilterCommand.value; + @override Command selectFilterCommand; + @override Command loadTodoCommand; + @override Command clearCompletedCommand; + @override Command upLoadCommand; TodoManagerImplementation({ @@ -84,10 +91,11 @@ class TodoManagerImplementation implements TodoManager { return _todos.addAll(await locator().loadTodos()); } + @override void toggleAll() { var allComplete = _todos.every((todo) => todo.complete); _todos.startTransAction(); - for (int i = 0; i < _todos.length; i++) { + for (var i = 0; i < _todos.length; i++) { _todos[i] = _todos[i].copy(complete: !allComplete); } _todos.endTransAction(); @@ -95,6 +103,7 @@ class TodoManagerImplementation implements TodoManager { } /// updates a [Todo] by replacing the item with the same id by the parameter [todo] + @override void updateTodo(Todo todo) { assert(todo != null); assert(todo.id != null); @@ -104,11 +113,13 @@ class TodoManagerImplementation implements TodoManager { upLoadCommand('Update finished'); } + @override void removeTodo(Todo todo) { _todos.removeWhere((it) => it.id == todo.id); upLoadCommand('Todo deleted'); } + @override void addTodo(Todo todo) { _todos.add(todo); upLoadCommand('Todo added'); @@ -121,6 +132,7 @@ class TodoManagerImplementation implements TodoManager { return await locator().saveTodos(_todos); } + @override Todo todoById(String id) { return _todos.firstWhere((it) => it.id == id, orElse: () => null); } diff --git a/rvms/lib/display_todos/_model/todo.dart b/rvms/lib/display_todos/_model/todo.dart index 796938ad..319c186d 100644 --- a/rvms/lib/display_todos/_model/todo.dart +++ b/rvms/lib/display_todos/_model/todo.dart @@ -12,6 +12,7 @@ class Todo { final String task; Todo(this.task, {this.complete = false, this.note = '', String id}) + // ignore: unnecessary_this : this.id = id ?? Uuid().generateV4(); @override diff --git a/rvms/lib/display_todos/_model/typedefs.dart b/rvms/lib/display_todos/_model/typedefs.dart index bca163df..df89d8e5 100644 --- a/rvms/lib/display_todos/_model/typedefs.dart +++ b/rvms/lib/display_todos/_model/typedefs.dart @@ -4,11 +4,11 @@ import 'package:rvms_model_sample/display_todos/_model/todo.dart'; -typedef TodoAdder(Todo todo); +typedef TodoAdder = void Function(Todo todo); -typedef TodoRemover(Todo todo); +typedef TodoRemover = void Function(Todo todo); -typedef TodoUpdater( +typedef TodoUpdater = void Function( Todo todo, { bool complete, String id, diff --git a/rvms/lib/display_todos/_services/repository_service_impl.dart b/rvms/lib/display_todos/_services/repository_service_impl.dart index 9ad52808..a5d54075 100644 --- a/rvms/lib/display_todos/_services/repository_service_impl.dart +++ b/rvms/lib/display_todos/_services/repository_service_impl.dart @@ -34,6 +34,7 @@ class RepositoryServiceImplementation implements RepositoryService { /// Loads todos first from File storage. If they don't exist or encounter an /// error, it attempts to load the Todos from a Web Service. + @override Future> loadTodos() async { List loadedTodos; try { diff --git a/rvms/lib/display_todos/detail_screen.dart b/rvms/lib/display_todos/detail_screen.dart index 044061ac..cbe8cf9c 100644 --- a/rvms/lib/display_todos/detail_screen.dart +++ b/rvms/lib/display_todos/detail_screen.dart @@ -67,13 +67,13 @@ class DetailScreen extends StatelessWidget { child: Text( todo.task, key: ArchSampleKeys.detailsTodoItemTask, - style: Theme.of(context).textTheme.headline, + style: Theme.of(context).textTheme.headline5, ), ), Text( todo.note, key: ArchSampleKeys.detailsTodoItemNote, - style: Theme.of(context).textTheme.subhead, + style: Theme.of(context).textTheme.subtitle1, ) ], ), diff --git a/rvms/lib/display_todos/home_screen.dart b/rvms/lib/display_todos/home_screen.dart index 8ef25e22..00df8d38 100644 --- a/rvms/lib/display_todos/home_screen.dart +++ b/rvms/lib/display_todos/home_screen.dart @@ -95,7 +95,7 @@ class HomeScreenState extends State with GetItStateMixin { } } - _updateTab(AppTab tab) { + void _updateTab(AppTab tab) { setState(() { _activeTab = tab; }); @@ -118,7 +118,7 @@ class HomeScreenState extends State with GetItStateMixin { OverlayEntry spinner; - showSpinner(BuildContext context, busy) { + void showSpinner(BuildContext context, busy) { if (busy && spinner == null) { spinner = OverlayEntry( builder: (context) => Center( diff --git a/rvms/lib/display_todos/widgets/stats_counter.dart b/rvms/lib/display_todos/widgets/stats_counter.dart index 63225c19..24917084 100644 --- a/rvms/lib/display_todos/widgets/stats_counter.dart +++ b/rvms/lib/display_todos/widgets/stats_counter.dart @@ -50,7 +50,7 @@ class StatsCounter extends StatelessWidget with GetItMixin { Padding( padding: EdgeInsets.only(bottom: 24.0), child: Text( - "$numActive", + '$numActive', key: ArchSampleKeys.statsNumActive, style: Theme.of(context).textTheme.subtitle1, ), diff --git a/rvms/lib/display_todos/widgets/todo_item.dart b/rvms/lib/display_todos/widgets/todo_item.dart index 665d76e6..9963b3b2 100644 --- a/rvms/lib/display_todos/widgets/todo_item.dart +++ b/rvms/lib/display_todos/widgets/todo_item.dart @@ -35,7 +35,7 @@ class TodoItem extends StatelessWidget { title: Text( todo.task, key: ArchSampleKeys.todoItemTask(todo.id), - style: Theme.of(context).textTheme.title, + style: Theme.of(context).textTheme.headline6, ), subtitle: Text( todo.note, diff --git a/rvms/lib/display_todos/widgets/todo_list.dart b/rvms/lib/display_todos/widgets/todo_list.dart index a1034ba5..c2cc59e7 100644 --- a/rvms/lib/display_todos/widgets/todo_list.dart +++ b/rvms/lib/display_todos/widgets/todo_list.dart @@ -52,14 +52,6 @@ class TodoList extends StatelessWidget with GetItMixin { ); } - Center get _buildLoading { - return Center( - child: CircularProgressIndicator( - key: ArchSampleKeys.todosLoading, - ), - ); - } - void _removeTodo(BuildContext context, Todo todo) { get().removeTodo(todo); diff --git a/rvms/lib/edit_todos/add_edit_screen.dart b/rvms/lib/edit_todos/add_edit_screen.dart index 362280e8..d1bc3567 100644 --- a/rvms/lib/edit_todos/add_edit_screen.dart +++ b/rvms/lib/edit_todos/add_edit_screen.dart @@ -55,7 +55,7 @@ class _AddEditScreenState extends State { initialValue: task?.task ?? '', key: ArchSampleKeys.taskField, autofocus: !isEditing, - style: textTheme.headline, + style: textTheme.headline5, decoration: InputDecoration( hintText: localizations.newTodoHint, ), @@ -70,7 +70,7 @@ class _AddEditScreenState extends State { initialValue: task?.note ?? '', key: ArchSampleKeys.noteField, maxLines: 10, - style: textTheme.subhead, + style: textTheme.subtitle1, decoration: InputDecoration( hintText: localizations.notesHint, ), diff --git a/rvms/lib/localization.dart b/rvms/lib/localization.dart index 0b164d35..a011b757 100644 --- a/rvms/lib/localization.dart +++ b/rvms/lib/localization.dart @@ -11,7 +11,7 @@ class RvmsLocalizations { return Localizations.of(context, RvmsLocalizations); } - String get appTitle => "rvms example"; + String get appTitle => 'rvms example'; } class RvmsLocalizationsDelegate @@ -25,5 +25,5 @@ class RvmsLocalizationsDelegate @override bool isSupported(Locale locale) => - locale.languageCode.toLowerCase().contains("en"); + locale.languageCode.toLowerCase().contains('en'); } diff --git a/rvms/test/todo_manager_test.dart b/rvms/test/todo_manager_test.dart index e937d052..4fcb8490 100644 --- a/rvms/test/todo_manager_test.dart +++ b/rvms/test/todo_manager_test.dart @@ -169,7 +169,7 @@ main() { class MockRepositoryService extends RepositoryService { List entities; - MockRepositoryService(List todos) : this.entities = todos; + MockRepositoryService(List todos) : entities = todos; @override Future> loadTodos() {