From e87a3ce62d79e4f74cd71f51daa7ff07b9adc3ca Mon Sep 17 00:00:00 2001 From: Pham Hieu Date: Sat, 10 Jul 2021 15:33:23 +0700 Subject: [PATCH] feat: flutter user management example (#2308) * feat: add supabase flutter example * fix: typo --- examples/flutter-user-management/README.md | 110 ++++ .../analysis_options.yaml | 5 + .../android/.gitignore | 11 + .../android/app/build.gradle | 66 +++ .../android/app/src/debug/AndroidManifest.xml | 7 + .../android/app/src/main/AndroidManifest.xml | 57 ++ .../io/supabase/demoapp/MainActivity.kt | 6 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../main/res/mipmap-hdpi/launcher_icon.png | Bin 0 -> 2558 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../main/res/mipmap-mdpi/launcher_icon.png | Bin 0 -> 1564 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xhdpi/launcher_icon.png | Bin 0 -> 3638 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxhdpi/launcher_icon.png | Bin 0 -> 7992 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../main/res/mipmap-xxxhdpi/launcher_icon.png | Bin 0 -> 12035 bytes .../app/src/main/res/values/styles.xml | 18 + .../app/src/profile/AndroidManifest.xml | 7 + .../android/build.gradle | 31 + .../android/gradle.properties | 4 + .../gradle/wrapper/gradle-wrapper.properties | 6 + .../android/settings.gradle | 11 + .../assets/images/logo-dark.png | Bin 0 -> 10868 bytes .../assets/images/logo.png | Bin 0 -> 3572 bytes .../assets/images/noavatar.jpeg | Bin 0 -> 12742 bytes .../flutter-user-management/ios/.gitignore | 32 ++ .../ios/Flutter/AppFrameworkInfo.plist | 26 + .../ios/Flutter/Debug.xcconfig | 2 + .../ios/Flutter/Release.xcconfig | 2 + examples/flutter-user-management/ios/Podfile | 41 ++ .../ios/Runner.xcodeproj/project.pbxproj | 495 ++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 91 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 ++++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 128498 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 573 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1257 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1924 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 889 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1839 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 3238 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1257 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 2917 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 6107 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 6107 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 11112 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 2777 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 8767 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 9902 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 | 57 ++ .../ios/Runner/Runner-Bridging-Header.h | 1 + .../lib/components/auth_required_state.dart | 10 + .../lib/components/auth_state.dart | 26 + .../flutter-user-management/lib/main.dart | 37 ++ .../lib/screens/profile_screen.dart | 294 ++++++++++ .../lib/screens/signin_screen.dart | 99 ++++ .../lib/screens/splash_screen.dart | 50 ++ .../lib/utils/constants.dart | 6 + .../lib/utils/helpers.dart | 21 + examples/flutter-user-management/pubspec.lock | 537 ++++++++++++++++++ examples/flutter-user-management/pubspec.yaml | 58 ++ .../test/widget_test.dart | 30 + 77 files changed, 2538 insertions(+) create mode 100644 examples/flutter-user-management/README.md create mode 100644 examples/flutter-user-management/analysis_options.yaml create mode 100644 examples/flutter-user-management/android/.gitignore create mode 100644 examples/flutter-user-management/android/app/build.gradle create mode 100644 examples/flutter-user-management/android/app/src/debug/AndroidManifest.xml create mode 100644 examples/flutter-user-management/android/app/src/main/AndroidManifest.xml create mode 100644 examples/flutter-user-management/android/app/src/main/kotlin/io/supabase/demoapp/MainActivity.kt create mode 100644 examples/flutter-user-management/android/app/src/main/res/drawable/launch_background.xml create mode 100644 examples/flutter-user-management/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 examples/flutter-user-management/android/app/src/main/res/mipmap-hdpi/launcher_icon.png create mode 100644 examples/flutter-user-management/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 examples/flutter-user-management/android/app/src/main/res/mipmap-mdpi/launcher_icon.png create mode 100644 examples/flutter-user-management/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 examples/flutter-user-management/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png create mode 100644 examples/flutter-user-management/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 examples/flutter-user-management/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png create mode 100644 examples/flutter-user-management/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 examples/flutter-user-management/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png create mode 100644 examples/flutter-user-management/android/app/src/main/res/values/styles.xml create mode 100644 examples/flutter-user-management/android/app/src/profile/AndroidManifest.xml create mode 100644 examples/flutter-user-management/android/build.gradle create mode 100644 examples/flutter-user-management/android/gradle.properties create mode 100644 examples/flutter-user-management/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 examples/flutter-user-management/android/settings.gradle create mode 100644 examples/flutter-user-management/assets/images/logo-dark.png create mode 100644 examples/flutter-user-management/assets/images/logo.png create mode 100644 examples/flutter-user-management/assets/images/noavatar.jpeg create mode 100644 examples/flutter-user-management/ios/.gitignore create mode 100644 examples/flutter-user-management/ios/Flutter/AppFrameworkInfo.plist create mode 100644 examples/flutter-user-management/ios/Flutter/Debug.xcconfig create mode 100644 examples/flutter-user-management/ios/Flutter/Release.xcconfig create mode 100644 examples/flutter-user-management/ios/Podfile create mode 100644 examples/flutter-user-management/ios/Runner.xcodeproj/project.pbxproj create mode 100644 examples/flutter-user-management/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 examples/flutter-user-management/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 examples/flutter-user-management/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 examples/flutter-user-management/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 examples/flutter-user-management/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 examples/flutter-user-management/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 examples/flutter-user-management/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 examples/flutter-user-management/ios/Runner/AppDelegate.swift create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 examples/flutter-user-management/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 examples/flutter-user-management/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 examples/flutter-user-management/ios/Runner/Base.lproj/Main.storyboard create mode 100644 examples/flutter-user-management/ios/Runner/Info.plist create mode 100644 examples/flutter-user-management/ios/Runner/Runner-Bridging-Header.h create mode 100644 examples/flutter-user-management/lib/components/auth_required_state.dart create mode 100644 examples/flutter-user-management/lib/components/auth_state.dart create mode 100644 examples/flutter-user-management/lib/main.dart create mode 100644 examples/flutter-user-management/lib/screens/profile_screen.dart create mode 100644 examples/flutter-user-management/lib/screens/signin_screen.dart create mode 100644 examples/flutter-user-management/lib/screens/splash_screen.dart create mode 100644 examples/flutter-user-management/lib/utils/constants.dart create mode 100644 examples/flutter-user-management/lib/utils/helpers.dart create mode 100644 examples/flutter-user-management/pubspec.lock create mode 100644 examples/flutter-user-management/pubspec.yaml create mode 100644 examples/flutter-user-management/test/widget_test.dart diff --git a/examples/flutter-user-management/README.md b/examples/flutter-user-management/README.md new file mode 100644 index 00000000000..164f52c99cc --- /dev/null +++ b/examples/flutter-user-management/README.md @@ -0,0 +1,110 @@ +# Supabase Flutter User Management + +This example will set you up for a very common situation: users can sign up with a magic link and then update their account with public profile information, including a profile image. + +## Technologies used + +- Frontend: + - [Flutter SDK](https://flutter.dev/) - Google's UI toolkit for crafting beautiful, natively compiled applications for mobile, web, and desktop from a single codebase. + - [supabase_flutter](https://pub.dev/packages/supabase_flutter) for user management and image storage uploading. +- Backend: + - [app.supabase.io](https://app.supabase.io/): hosted Postgres database with restful API for usage with supabase_flutter. + +## Build from scratch + +### 1. Create new project + +Sign up to Supabase - [https://app.supabase.io](https://app.supabase.io) and create a new project. Wait for your database to start. + +### 2. Run "User Management" Quickstart + +Once your database has started, run the "User Management Starter" quickstart. Inside of your project, enter the `SQL editor` tab and scroll down until you see `User Management Starter: Set up a Public Profiles table which you can access with your API`. + +### 3. Get the URL and Key + +Go to the Project Settings (the cog icon), open the API tab, and find your API URL and `anon` key, you'll need these in the next step. + +The `anon` key is your client-side API key. It allows "anonymous access" to your database, until the user has logged in. Once they have logged in, the keys will switch to the user's own login token. This enables row level security for your data. Read more about this [below](#postgres-row-level-security). + +![image](https://user-images.githubusercontent.com/10214025/88916245-528c2680-d298-11ea-8a71-708f93e1ce4f.png) + +**_NOTE_**: The `service_role` key has full access to your data, bypassing any security policies. These keys have to be kept secret and are meant to be used in server environments and never on a client or browser. + +### 4. Setup deeplink redirect urls + +Go to the Authentication Settings page (the user icon). Enter the flutter app redirect url below into `Additional Redirect URLs` field. Then click Save. + +> io.supabase.flutterdemo://login-callback + +![authentication settings page](https://user-images.githubusercontent.com/689843/124574731-f735c180-de74-11eb-8f50-2d34161261dd.png) + +### 5. Run the flutter application + +- Go to `lib/utils/constants.dart` file +- Update `SUPABASE_URL` and `SUPABASE_ANNON_KEY` with your URL and Key +- Run the application: `flutter run` + +## Supabase details + +### Postgres Row level security + +This project uses very high-level Authorization using Postgres' Role Level Security. +When you start a Postgres database on Supabase, we populate it with an `auth` schema, and some helper functions. +When a user logs in, they are issued a JWT with the role `authenticated` and thier UUID. +We can use these details to provide fine-grained control over what each user can and cannot do. + +This is a trimmed-down schema, with the policies: + +```sql +-- Create a table for Public Profiles +create table profiles ( + id uuid references auth.users not null, + updated_at timestamp with time zone, + username text unique, + avatar_url text, + website text, + + primary key (id), + unique(username), + constraint username_length check (char_length(username) >= 3) +); + +alter table profiles enable row level security; + +create policy "Public profiles are viewable by everyone." + on profiles for select + using ( true ); + +create policy "Users can insert their own profile." + on profiles for insert + with check ( auth.uid() = id ); + +create policy "Users can update own profile." + on profiles for update + using ( auth.uid() = id ); + +-- Set up Realtime! +begin; + drop publication if exists supabase_realtime; + create publication supabase_realtime; +commit; +alter publication supabase_realtime add table profiles; + +-- Set up Storage! +insert into storage.buckets (id, name) +values ('avatars', 'avatars'); + +create policy "Avatar images are publicly accessible." + on storage.objects for select + using ( bucket_id = 'avatars' ); + +create policy "Anyone can upload an avatar." + on storage.objects for insert + with check ( bucket_id = 'avatars' ); +``` + +## Authors + +- [Supabase](https://supabase.io) + +Supabase is open source. We'd love for you to follow along and get involved at https://github.com/supabase/supabase diff --git a/examples/flutter-user-management/analysis_options.yaml b/examples/flutter-user-management/analysis_options.yaml new file mode 100644 index 00000000000..dc21fdb52bd --- /dev/null +++ b/examples/flutter-user-management/analysis_options.yaml @@ -0,0 +1,5 @@ +include: package:lint/analysis_options.yaml + +linter: + rules: + avoid_print: false \ No newline at end of file diff --git a/examples/flutter-user-management/android/.gitignore b/examples/flutter-user-management/android/.gitignore new file mode 100644 index 00000000000..0a741cb43d6 --- /dev/null +++ b/examples/flutter-user-management/android/.gitignore @@ -0,0 +1,11 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties diff --git a/examples/flutter-user-management/android/app/build.gradle b/examples/flutter-user-management/android/app/build.gradle new file mode 100644 index 00000000000..fec8b364067 --- /dev/null +++ b/examples/flutter-user-management/android/app/build.gradle @@ -0,0 +1,66 @@ +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 29 + + 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 "io.supabase.demoapp" + minSdkVersion 20 + targetSdkVersion 29 + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + manifestPlaceholders = [ + 'appAuthRedirectScheme': 'io.supabase.demoapp' + ] + } + + 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" +} diff --git a/examples/flutter-user-management/android/app/src/debug/AndroidManifest.xml b/examples/flutter-user-management/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000000..5f5a7501249 --- /dev/null +++ b/examples/flutter-user-management/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/examples/flutter-user-management/android/app/src/main/AndroidManifest.xml b/examples/flutter-user-management/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000000..e21232c0b30 --- /dev/null +++ b/examples/flutter-user-management/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/flutter-user-management/android/app/src/main/kotlin/io/supabase/demoapp/MainActivity.kt b/examples/flutter-user-management/android/app/src/main/kotlin/io/supabase/demoapp/MainActivity.kt new file mode 100644 index 00000000000..93dc3a7f29d --- /dev/null +++ b/examples/flutter-user-management/android/app/src/main/kotlin/io/supabase/demoapp/MainActivity.kt @@ -0,0 +1,6 @@ +package io.supabase.demoapp + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/examples/flutter-user-management/android/app/src/main/res/drawable/launch_background.xml b/examples/flutter-user-management/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000000..304732f8842 --- /dev/null +++ b/examples/flutter-user-management/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/examples/flutter-user-management/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/examples/flutter-user-management/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/examples/flutter-user-management/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/examples/flutter-user-management/android/app/src/main/res/mipmap-hdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..723eb74a137b11319c4c0ecca09e503de6a5834a GIT binary patch literal 2558 zcmV*d_uhT`$b0a1 z-zFSpbNB7ueec{4=X}q(FQ^U$v@dqAzg9P4l}TU_A?^OxuW0#uA^q_)y$~N-T2)?B z*|FkBn8G0dB?z&r#y975G&OhEZrWT3pE6lN098G?@_VBr<{h5PxU{NbH671xK(YEn z)#!-v0|4ZEd+Hsv+Q35{M%aF3vQPn))h)g-){xjmPfIfS^RW+lv;mrLVfu9{3k}eW zx+OT?RP!hy8R6LWk?tE>g|g59RWvSqoDlN$@#c{tg2V79TMGryoQ@UC5s=1g=4xa9 z;#4RL6wn2;XTv2=)z_Jtu_4=MXvsf&BIw-enF$J~Eth8uFwTw$iq%~=Jzl@~pWs z>};%|t9u?Y>?5)J=M{eVU#v&W}4xgC$or=jPcTKxBe<(y{u)Oj@;mMNdB+fIk2exy;Av z66cpSB=*tM83Fl2C1?U`Pl-MX+8~`_hF}7U^yM8*OQ_qA z1?>zo{o?6|%YOU~!p^ONM)$6W?O!o%vDu+9glxq2bvj~t9c%V|;B(k>n&ynwe8TTz z4LPIc%(do?(DzEwHf%>~q8;)?$QaRJJwU>kDZ1vSsL#E3Rg}&NX4OVMZM%wx^&j(n&G< zp1Wvv9}8e^WLYqEJG`v)@&Mt{V!yBbl7B9*6I82ed;#g#UT_!WaRZu@A!OQcTmT{+ z_@N=O7%bmMZdBR2#B~V7d}RFrx7%`FAS3~FEuIFb`ppfOQ5m>DU<{d!s-z4@L=I0e zA*^;}xhduz7;z{d(#C#kCql3X2tpD-#flU_vFB>91Z;NE)8cSwq#O0qL~^K$h(ON5 zu~?+2T>Q`^!Io3Wi4gt)Vw9)Z7d;U~QVO8>=Voo7x2FXOU_7HyVS~2Xe`@R?Bi7xQ|5FuZKAj5g-*m{$VxG{go79zP2m7E z?C1|xG)5$e2o$M&E2-oYQL33eZOJVbpvv~<$7p0P4{+Vt8;u~ug;;12@1oTPQ7zZt zi4gxXF0S(mDMgfQ1N;B+lT=%Br#^50BQe@~EH3~GU!x1BDW-`IS~PaD*2o&g7Yz~+ zsidn?BtZg511Q95qBfeZ~!4X(ld_jsRk64SC;Xk|)<-!>nF^g`YaQ4dX z=memfPFWE2y0bNwVo2(K-9|56W281m(jqBBunI$tK*87fTx^;f_s(7Uyw@KcBfO3f zb3Q;sejg?FVxCA4ngQ-8FIck~^X-}<}xhaP?c2)Q|! z73XMtFDCtstD51x?woT$SNa{b?5B%7ZEj3>X4gw6Zh|-8^>xSUgHoGcSsiOgETpGp zp@GO?n3rf~JdJ$zPHs0W$%q0Zy^Oo53Os=R*VmeCf%arZe=I;p+L8kXGB2HWj8TDK+W3^f5sevS$SM{)@FS0;ad7vGt+PHB&U_q7)pYjHXqzblIN#pjNIGX zn*7Un{`h_$^oL7tJ4%P6`CNFmHmkF7SbWFq>0{i&4N_$BK=SAeND&1JGy`Gs;E5$$ zUdYCug8bJ$r!-5X z&Y{!sCvt#Pk@lt%pCXI2e;Ma(03m4IzR$P3e7f#L4iH_Ip>9B><__daY7r>&XfO4~?l0WA^i2JU93Z-2L+Fn+s2bx&jRa6? z2pxb!Lx1kQH6QLo5D*&U+LEb^y9apsBJ1RDeOq2l^mT6U&4)XY14Nf-_*JfKzjE#G z+v!z^-u=pqe!@N~*NlR)Z}rIF4b)rh&~#DOEf&Zj$(14Ik6Y5#^4)D#21 zhyq!cp4~O?o}cF1pU43s7#nIT+4+?I>l~0%@2z)McH9$$Kam53v0cUN^?Q08p9Yft z_}B2s;;RP__6!H%Pvig*lSYuHXp7Pi%3BROkiqVrRfkt?4FnFe$N@qc9+OLadKKf> z;JyB`YnJveShF)oeD`4c%n9}SO<>Qe<7Wy4B;y#L`F z|6U!YKam48`1{?*&%deK1|t1iAUcegm@MeNbK~1#`V%=osATlFbhwQIx!7$C5iRGv zcmMVFpN9&ES>ym6dvag@*vTog^Uh6asU7T07*qoM6N<$f`8BEF8}}l literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/examples/flutter-user-management/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@U zdrTZf7@wJ4o+)q;8Yoia71UY^2yJ387ztooO{3AI>Qx(GhZL%UHQK7RD7K9@H7aO% zwKfD}VjrQk@mW;>j>=6xiL0SRcTs%JWAwHCpWRSv9(PlPz>@qdxZ=IdEw~!%_7N3v z{T~WHgPTD5bEU80#~N>+LCS^Hm}4gMi$HX8GRS&gzdbTDp?0P*kU_yqAnnZ!Eco5C zjbT8LMj)lUEGMQQ^X<9DK?VjNfynfPsAXHr4gv?D<{ArOkVPPRO*)m+Sal3Kz#YDf zXF!leAhmt(9yo3(@pXJq5xDK$&3fIqW!rqdgHPn(AQ1D?(sK7X)tGtD02lcjz&lRds>X^h@OH9#ArnAm5qBXBp3Xn|%9pr$=Rzk~)Fi%T z*Ty>N2YA-tV&y;RLHjZ!V+Nt zBEA5`lY?Rr`p9vd4+tW#x2jc56%Svk{yg7aWzgA@a#MkbmGZFL|}-L zr33`fh$ewk5*Z#e;v)v3OoHvh&+uis`xFFjdcOE|HNo=?kV}*aw|c}XBSJpxQ<4;f zQV~{LZgWNQu9FDddaCBB$fU$_Rlx&30+LK9ijav+MoeHptTa%pxY!5eHfszRl+3=<&g+`si{Vvu$ube;LkV)?N%6@oM2OJ3xZ+Yo#6%X%`kkqbPA*@U6TZnBV9A1I|mCayGIUj6aD;e8@_j=1c%elC|UK0WcC$Y5Rq%@FHDoB=#`>w;)0X%(i zQ{6*TBQ~dkz}T;soadgce<01Uc1O(W%o^Mmtu6z|kg|YYWT8l0HUdaF2LBl}85$nB zezxD~?w&gb?8X6y$@p+h}sA%M|1#l7AwF^S{_iZ-_6gDpSI37$302_RNNkWW-eD&*?B5t+8yf9`p)RX;H} z!uaA}`v_nONiQZI$*R0Q;LoS6r_MZy!B6_?J`fVRA>THEmzNVcBDUWKUckG~#re3` zK8Yc4NHQU>&dPhgb8>K`rn{>7zt z$s9P}z5SryKN^dsIf1cXdQL>7By7_aue{6N)!Xw|+mHMIGh3(B^8Y{alUQA7VWy}6 O0000y!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/examples/flutter-user-management/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/examples/flutter-user-management/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4ebd28f0eb5db404daf496a12ebd91e5ccb43c9f GIT binary patch literal 3638 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 literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/examples/flutter-user-management/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..184a049639002b799ccc0061080e874ec63b750c GIT binary patch literal 7992 zcmV-8AIIQ{P);)B@O7~3HW*v1eaoDMO84GBj!yLs?-d7IsRo448IVu{4rqr2g#I zbX9j(RnPy;|Nr$@b+s497{;yrYU-6gy1T*~fYk_K4j>qZF@(sWlK{$F=l`_rz}crZ zHji{WlLg+9ZoqJ&>IYvhDOovhg*OD>Cdn(vmPIxn*)Z9z0Z?xqw|d@oUtaoaC;#iU z9iU=7lI=|fj0pny@-vn3_kAs^_~toxr}E7L$Vf;E#2mHh0y7Wl;Yea zDN5#Z;eG`u#|1sn@ z*FtOSFtju|G3p5v3aYdF{Gsnd*vCQHF{WycvjjPDbMG{$g8-qL??_Y0;LsYEKD!Xyo(s0#c+8}vlOZaBh>@026Dit zAdr&k^Az1QyE1!H@d^d0%ZcVGj!VH9qwwa!7D-PaZ+5yTduCPM#79@ING;2!-Sz45 zD%%qRq^Pb2azfG*DF3>tSu=j|?W?f@KOo5|@hn?K9)t&H1xG!Snn0EJ-jp`}?#0(( z5Be9HggD=ihxkB>;%Xo#Bqf0qpARPAdMheicJ;!PiA8HL;A=q}eu%5EF)?4*^?@9b zoCHeodCG2GFx5A$V0FLJN1SHJ8H##nAQ8J$f*g@_1fo5z)bY9b-DO>CGcq%8C0P@O ztTIFhgj@~egrp--?lo5yPyg9{OTD@2_dqyUICStRKBOSeP*#!jNGbx2yKO;!*_y?R zeFa&Mg61^)hO$1DbmOtxjdw(H5XhrI$*Q?2<8HrpQTD6}Ylv9s#IPZ6J0cx<1g;5l zLgEvsARUwi6-wE|H_pheD7&5XjcBkiWjLx<5K%wK9gTNF;uC28c*XP9{aMPXjE9w8 zh4#1#hO25-!3xnot_E^I!V@T`+gmyHWac;0`q5I796y|OE1|FgatY*sgeFkolG$Zt zcQ5*zj6UUWNwNxt$#j`O5a-zBs6)aMsNlv~nWc9vT$I0f`kf>>;8}%(0db*`Yr>q7 za0F5^QXqXoky7>jTV`cVE5Dscj|K}zM2LhubUK+!AO|EIfwE?lduIOe;S7(O@&h6{ z>NF2(R^ecvgfLM-BUO8HAh8JazypB3x2DPqUp_*9_zRKN;~FsyfDxU_fm{vbfP^AY zUOrq|I$pUIwJCR#WCaXyq&XT?;{UilkTVj7Ksj@-%quNbuPB+3 zC>U`9A)g0)`B~nHkFB^Scg~e7N!E=c-6kD~2BTdk+7Tm8pv=i-sWbljp|X^s%)cke zC6Gu03z4R{BN>huQ34e${fejjz8fZ{mgf8;QV^Y0ml!05F@ZkI`XO;Np!-n6DWN`NygNld~-(Tq_TTS za^Y~-e>qTyV@5I3?MP${D}nMCOi3%hXYrKm8I_MBuZL(JG$c<`#0wZj+-MiJ7&Zds zT{BTByKVmDq9s?~PI|^GNEas$65c@#KN~;NjYwz=8-dF2yso%t>D9|rgdQNte9)GW zOK2!69ZYp&(M}jP0^#(uJ8)_$U1s+RNO;YoA>0E?ik6NXhMYjDW%=2Yet5?XxpOAo z5m|07;kxT~K-x%{OCbjgDS@(QRb`dlxo~FwqG{jpq@~bDaT3~T7J+eiD9k001BQ%1 zSyxs1#@)7HYUy1IZzsuRWQ%o;=7a%;@O(0tKn{pMfyj?GB|j6Y9=f@t@TOVI$+!Oq zXyi#6(`7bsTvc#AY!&)!b3M# zj$1YV7UK8NNb`tJhL0CIYw92NR2F=v?2)CG2b>LIE1(UR8EF)8o=`-EDO}pvXU?OW zq9~E`BiBXJmTNt1`I?hP%LDrv^*;m|0$a7CT%1j`nLe$5p88->( zp=*&uT9zSbT{DD$Mq{mmUuPe`gw{G2zW8&QpO4u1QCZKU^Z_3G@JLx`8W-5IMZ~`P{cik4q_-E!Y zM@y?rANfopTP{hK zkl#mTT17$rxYhF~XIGSM$!N{qTK)ExU}vrNBF8}yD7~t=@g$n9lOMXK$NDER2 zQ(nRWh1CME1TuCF^8$<}0ISeh^P#&Wf>x1}OCo%WMiRIusS_!PIj)}!WJEU*_oR)t-LsQ(uAVS)|{U6pY8sF5U7owGGGGv3bWJFOS0yqD*X=uRd;~023l64 z0%?8$Kd&A|{)lEpFjt7x2&}*uzlSwp$T&|%6h4h~Vkp{0rpD8?isXD&TPkeX%#AS) zHhVDgw<6>V-O^Fgn(mp9^()_*%+CXD-F*WlQ00S5W|rN(Xcf@8J)^{Fwg82lMr6%r zHpaKG2p_;SJBnu6In%)wW|V`>8in#r?WMO$APr+eO>+erOU1Hf_anPM{y6oIR!sTf zorh}*bGmB&`0k<0CXgp9O_}`o?d5rkr>#*^eXC*E*X$WiM3$FAG#Dyqlkk4zx5;T5 z#K?^iD9zBdjVOGH2GPxt?vx`&o5*}76d@(!erfv_VhRKYrVjR=jIV(CHp1OCNI~f- zx0S43a2{o(AG<69Wlk*hl-;%{zwpLcYrXlIH-on5)98if17VXf#sS_;fGJqsCt|zc zk?SPRi{S(_m&*JggIvInNdYj)C1^Q8+aTsXEZU4E8EcO9Hu42cA&&K&oSBuAVkS^d zMFo^Dy|%FY{u{3kc|yc#9^BgilLFxtHid6bbcz|mh`k<}4}&b%0k1_kZDeW@#1cXg z>(sR%LlCxIM%#@))?2mg^X2jW5u_7~JVo*1xiJ%9;_{_wm1}Oiro-DxUnMyWw0BdC zZlLfAFIw=-;t=cSus( zC8WsoXxEGu(B*+Zj|Blphy%Pi;=0FH;e+lJ8-zoqoMgn2nMSTWU@iu;OheOvaUNd} ze~Dw#L4hNIQpXph6fd7!T(WZhn$(iqn@A(doz5S1Ky+;m=ILgO#*t|a z!9>{ZGuJ5A^K_!|&be8&S&yD%4*~$k5^KIm5H4_N(UO+SO;GOmYzdTFmZuagn_WEd z(N#;xcX$secSv7sl915GhA{ud>O$8}(0-tZk)5bLBDsPluUlXtG!i0!G*Z(LfhC;}nB=suZHhLVTTkrtMeLN&YljN#P@R z@XTt2uAX@dQoY{+jXa|>(i{bJD1$HoTfRt9r~}DC)Vl<4!$C1=4Z3~-b zg^#Rh_JU~T*`tw==(LqU2r1=7<%{#O@>ii=v0ccMW~1d9m*V{D5fouGj@ zrDGI>%;5;*B&+bbsBsk71r9A*O*CaFhVn70A!i-n2;?iuPAynGy{ruK)};4(ZU8!* zKZb$A>nnhSD7t^b$U$^IBYEP~3sDPk`CtlnKv848PUZ&eR0(^IUOwj|IhrqM@2pPf`D~RqyJ)=!BM22z?l>M zJbg4COl2c#1b~=?&rZkS%@SKE@D4l(b;MYw{*8qHU^v?J!Qszq{`l@$gFvNg7Uxww zxQv>tACaxdsgyAT4j7G9f_h1T@ zq>)7U;2?Z6aL5)X(>XW?*$^DEYGGG*B?`R`-67h5$(p)31Y7QBZIDe*dUa;0S!xxQP4{SK~#9y~WTVIP3h%UQ8V?Rl|j?d6RAp}yeF{fE!Oc@0d1qG~?;ZCv0 zRtBVdBeKAuKn8}>Vx7_I0J8>O3j$CxRok!no)4(rcVk(c%}dUyBcJKWHDgxjOP+`U z!0<7~Gyo$InJLq=ErCPeOpbY;P>zr#)-0=&Gm~OHf=P{h2Fab)DLC|O(}sN?wQScS z&Cx(L5M6PBzAb0eJ(@gd&{f7Q4+Ap4c8fra3u6czf_RaQ@R7V8od8BP;)F7hm15mo zF7cV6Hq_Td`z#}^OEo96Y?{oLm0(EO=BJifjOyOWDP5K{u-;i z#7i$r_`nq)qlENyp~X8V`e9FSea1=hLVMIPzo5+n2VkQAB`&=$-_H2aDJL{q*V}&1!zk#@Fg}|Yo{6cC%A@qF5mR&o$-{0F9 zwKxgF(>c11Uf7#jl3S5BKA%4Kbv>%?{91mS!;+5#+25&*FNd=H?{AW^pkHq;=#&4kSsdIqjI1Hj|Q0QjLU^D zbx37oV~=rZL1l4flC4vAZIrYnpSy<*Ejy3Cc>32HE(BUSZHFmhfkB`^TesTs@$okG z$1i_@F#27|@;SQ;zk1cR7y*6D&P1|}MUAA-hXLN#VaLe%$AlSG#0lRTIAqVWR?I3O zE@~|LVV1OmR-=9opdFXq+_T}*`n{j~FEn4a(=38}tS8Xep*C*V*GqQys9pZEeRVAd zQHu8~o#69FH`K@2N+uSZ~uC2%MxB>=7t z{lh5PrcMr~*6db2xVkwvxbEVyQ@c99IMW>aH(?Lk$CaDjKU7aQPkPFZ^t?2$ue_)* z6u?DFlE1#-au7hlTSCELX*j{kojFH33?U^OvK79)8Zyb{sI@Gnl$mm?WfM(<&W6;` z#h}nH519xy6_|ASxlL2)EFd+4gp6nBN81>(I`4~n%{1E@8G6O8}=OT zJW?~@?z$aZ0yzLB!%~3<5(JNgEQTE7ump3NjL;Euse$0} z_RmiLrS7#|``Y%L=(^ndj|DD)9Dp?Q#jlgd9tGB9>3)g9GA0dHLP-hd)E2}PDXW7a z7b5;YplY=<_`>NY*MHD+ramq`E*V?`IRGO}3B;r_DPgw-@=+9V(+ ze6}!l$4s+666alo_bGX3$YFEa-jkc_H|{&yuz&x6Z#`DH1ad;S7X~VuVelvNY1u$O zL7$~(yJIM8w6?5n4K`NkH1ZOf24%_3X^Im772OZ5QfEQ^jb zGCoaLNa7T8gyTL0pT~MSXiLvr2qE8=zFyeSbEcs^4)=Una0%oLV}&x&=P)J8L+;&3 z%pMyx)=e5mJOJ|qp&acmoyXGy7;Wx4a{les-Cuq=@Y@_XTmm^mivzKOlLQW}FG~Rn z;i5#11uzRZFm;;Fd-zeKPNEzS^wzZex#9I4`x`gyi|IM8c*7--185uw>C3xV589+9 zevoZs+IqTe`FuVNFC2%E`lD07c=d4mfwTVD?kN6n3FHjoM2CA~67vF_@I}9xNlFr| zlN~K^2o{2o!@IkV*S>h>H*X#4K2g^Lp%GC&VYmcx0s<8oaUfHujA4SPfkT;}touA{ zu`(5e^xDkD7RYr++V)m&uHW$K){gyWItPD~gM&*T2ZZ01f%Nr(KbpCRu$LHD9b?DsIrfmmK$L&T30hd4yz<|v-kRVVylO^|Qc(cS$H??zu zz;v9oh&bt@qrJ%A_Yw*O4i4(Z;s}>OPC)z{3wag6q&fSbG-t;3H&IYh+u z???V~-Ko~y$KyURY@l!ns*;5Pgkj#zEFg5$z#D`#TTU zY;1UY|Mr&m5BA34w&DtxKu$oB`9O#X>l5Xueb?J@z zjr+DXZ20tIyl*caa0%o9LY)wjI?;@s(PK9{S)v6Ff#)8puo%$sw^ow7<=pQ!Z)n?d z@>u-tD!y zlIRnOd8{^KGYEOe&hO7X{q~lY9Y@c_?Iwm8E`c0?F%A*^qZrOR!vZM4JD2^Y~| z7y9a2-#h!%=5?Ki&Yj1BP|~bH;1b9Ih#QTMF@67kwH|xCC+l3csyTSf$lCX#4?wPqxo6&D3Ial%M)N`~0=78{0lV`=J_A zlZrePE`gkYl@QrfKJsT1IJEdULRoybo{q0kvRn%F^uEyc;r>l^&umNR?z$aZ0y#j% z;gxi-=*k$dkVFguA#<}vrW-*)Pt-iKZAbHa2a}@5C4);K2Pht5!W0@v)L)${`Z>Ux zB`__UJT9bvpi}+LU7IdExBZ>A-6!gT9lePi>~VlgAO~npG_p)-<^PH^4jEe|nbJy7 z-;-Iqvnf#ia?{7poKu_IlhSnQa0%o96=Pz;Fjg#4VFbNv?A>pvwl$Uo-V(4 zQ(a@)E*j%bcDMv`0HIF^V>+OUSPf!=ac?*?WpSdzQ$py2fai%%{(`#k&5iKOjYHb@ z;etyb2Y7v0^?39L3n{FDLyjr3o|m@KS%r0=C_lgO?DpMF@9a;UDTRZCOCU!?#=;<4 z;LykfiH}6zxmq1)?|uE!>$^T|`QUJU|E2b%i8M!pOCSfRArCQO9#uL6k%2)L(MQs* zyWp>DdB64J<1aU?-&0F^TuJRTi*O0#0Ia4EKiZ3tLM;#*I23$n0GausrqAzHJ@2<2 ztbL>Af43YOjy4ZBTmm^D4SLlS=*L0*O`w*5ju0s1dT8MX0T1N#6#ccor|6^MZu@Y- zC6EJZ>eGV7?Y{o}LY0nLnctOY&V)`H+3z9U|1%*3zx{I4=H1Pk_m3*G#lj_!1G;w| zRI~GO7c8o1Mf9!K>@!{wZNoj|u5Cf$HJ=Ri_Pkq!l10!0B*@Nwi( zcL4Uxqh^foMiB#t2o1I4tA`IRfubR!|2X9KY=*Y%1%xW} z?TzMJt@)l8eQNZji!bkdyw0&^87u3{4MJt#5+?%4VL<(F_h%=RJ z*%6aP9{@aodjlWTzWCu=Ejy1L4YnrG!|Ou~mq1a_TipVou464&&3@mLqP8gr4*N>; zCg(1iUVs${^&GBg@mJTM#C?HJo8CQeD$vq3V$02q1Y82efc{G@aOt@%bTIT&x@BBd u;Y9^GS=a;pO&j<1cWggAs5c)cGyWgimk;v~-bdL00000V6wZ}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/examples/flutter-user-management/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/examples/flutter-user-management/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fff447baf8331b2852fa27b975159bcc957faf2b GIT binary patch literal 12035 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 Pa63RwN=dR#+$7|Gv}&-B literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/android/app/src/main/res/values/styles.xml b/examples/flutter-user-management/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000000..1f83a33fd4f --- /dev/null +++ b/examples/flutter-user-management/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/examples/flutter-user-management/android/app/src/profile/AndroidManifest.xml b/examples/flutter-user-management/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000000..5f5a7501249 --- /dev/null +++ b/examples/flutter-user-management/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/examples/flutter-user-management/android/build.gradle b/examples/flutter-user-management/android/build.gradle new file mode 100644 index 00000000000..3100ad2d555 --- /dev/null +++ b/examples/flutter-user-management/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/examples/flutter-user-management/android/gradle.properties b/examples/flutter-user-management/android/gradle.properties new file mode 100644 index 00000000000..a6738207fd1 --- /dev/null +++ b/examples/flutter-user-management/android/gradle.properties @@ -0,0 +1,4 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true +android.enableR8=true diff --git a/examples/flutter-user-management/android/gradle/wrapper/gradle-wrapper.properties b/examples/flutter-user-management/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000000..296b146b731 --- /dev/null +++ b/examples/flutter-user-management/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/examples/flutter-user-management/android/settings.gradle b/examples/flutter-user-management/android/settings.gradle new file mode 100644 index 00000000000..44e62bcf06a --- /dev/null +++ b/examples/flutter-user-management/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/examples/flutter-user-management/assets/images/logo-dark.png b/examples/flutter-user-management/assets/images/logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..f78a307b9258a0523c56faf29ef3b2fda790867f GIT binary patch literal 10868 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 Buc-h4 literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/ios/.gitignore b/examples/flutter-user-management/ios/.gitignore new file mode 100644 index 00000000000..e96ef602b8d --- /dev/null +++ b/examples/flutter-user-management/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/examples/flutter-user-management/ios/Flutter/AppFrameworkInfo.plist b/examples/flutter-user-management/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000000..6b4c0f78a78 --- /dev/null +++ b/examples/flutter-user-management/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/examples/flutter-user-management/ios/Flutter/Debug.xcconfig b/examples/flutter-user-management/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000000..ec97fc6f302 --- /dev/null +++ b/examples/flutter-user-management/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/examples/flutter-user-management/ios/Flutter/Release.xcconfig b/examples/flutter-user-management/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000000..c4855bfe200 --- /dev/null +++ b/examples/flutter-user-management/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/examples/flutter-user-management/ios/Podfile b/examples/flutter-user-management/ios/Podfile new file mode 100644 index 00000000000..1e8c3c90a55 --- /dev/null +++ b/examples/flutter-user-management/ios/Podfile @@ -0,0 +1,41 @@ +# 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 flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/examples/flutter-user-management/ios/Runner.xcodeproj/project.pbxproj b/examples/flutter-user-management/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..f5a49818750 --- /dev/null +++ b/examples/flutter-user-management/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,495 @@ +// !$*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 */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 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 = ( + ); + 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 = ""; }; + 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 = ""; }; + 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 = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 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 */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + 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 = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + 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\" embed_and_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; + 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 = 9.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 = io.supabase.demoapp; + 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; + 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 = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + 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 = 9.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 = io.supabase.demoapp; + 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 = io.supabase.demoapp; + 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 */; +} \ No newline at end of file diff --git a/examples/flutter-user-management/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/flutter-user-management/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..1d526a16ed0 --- /dev/null +++ b/examples/flutter-user-management/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/examples/flutter-user-management/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/flutter-user-management/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/examples/flutter-user-management/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/examples/flutter-user-management/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/examples/flutter-user-management/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000000..f9b0d7c5ea1 --- /dev/null +++ b/examples/flutter-user-management/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/examples/flutter-user-management/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/examples/flutter-user-management/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000000..a28140cfdb3 --- /dev/null +++ b/examples/flutter-user-management/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/flutter-user-management/ios/Runner.xcworkspace/contents.xcworkspacedata b/examples/flutter-user-management/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..1d526a16ed0 --- /dev/null +++ b/examples/flutter-user-management/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/examples/flutter-user-management/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/flutter-user-management/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/examples/flutter-user-management/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/examples/flutter-user-management/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/examples/flutter-user-management/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000000..f9b0d7c5ea1 --- /dev/null +++ b/examples/flutter-user-management/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/examples/flutter-user-management/ios/Runner/AppDelegate.swift b/examples/flutter-user-management/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000000..70693e4a8c1 --- /dev/null +++ b/examples/flutter-user-management/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/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000000..d36b1fab2d9 --- /dev/null +++ b/examples/flutter-user-management/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/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..1f362942b970c028e9fb93866c4141388cd24b38 GIT binary patch literal 128498 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 T9IvfK00000NkvXXu0mjfwijN* literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..44bc2d6f0bb8acab175062ff4919ca3388517531 GIT binary patch literal 1924 zcmV-~2YdL5P)!W>$QW2)%Z~JFOrsf6}n5;=+TZ`K0t4A)#Pe zZE1R2@$PD;b=!&Kz%%R1b_4RSIk-R5D5~iih{Z)Ar z9!xn*nj<5AS%l=WFsYG;6WH${8dxGCM#%%5K0AlYt10=CG_#^rjEGN1`)(`}6>w%l zRTbRyEsRC6NNgO-`_W3oz|(3aWdrL)W@g1 zMQ&r`p;$zNcnzn`nlv=8u51hW!u9b|Ok&pHb?KRV%610X$VV+`um-IGPAy^*F5{k( z^mz~UD8G9Lcq%9dAA*B|>(nb=|-}H{@IA$!!HzdbG`8nw)KW~$9r}|ntoBLZk zgpk0YPAy^)JmT(+>GP(_D_QitSH|NYnScktnSOgB6U)%Zmo`?63~FtD(7cK zdTJ39FNZY?1BJm%-~uMfYQacNM>J(26_#~nq(9eEn<^swA_J%9XQ$+?c;*|3@YEs} zA+9Q@5DKIMu0~<)8OEkS1k`PVS<|?l8DgQ!)AXJUoLf`A1A#C-QLwV87Uop9X7Z^P zq4l7|TGMJ#F!iZpb#=YJU8w5zG#%rgXxX-yET>l!3M+jd#|2nWvpXxU3wjW;Ni|k$ zTE|jp?AqP*w$$JOi_%$g!s}W@T^h?l3F!gL&YIW?inM;lnkLIjB7%7S^y=Nqw9=Av z-Yw7qmm|jCIeaX|*EL{$>$}+jW#7iRe zy^jACPf#HrXbD1?wWwXcorRUL#HyQ5udO~5O0Ao~ zeyuDt?0jGVP%yf&;`X;NLKRm(^m@Wk>mD$MfSylP22=W>dt92LDL9jpL7tTQ=KPIe z!Ajy9F!}U=DT(TrK4^dxCC|j4r`J?Rw10PX4V&GRwVr)iGK{@-qoup3@8rd+k*Iak z!hSQT*@E`FBBj~a+PVH*spmwbdffxY;Fp7rO#~ju@=}8z%6ra~cuQt^nrgJ8 z9INHYzvHKhKiUwjTK6o>rX>c{Za>UaV{K>3YnS%7UX1#WQU`~HG3&-)@8STB-StNo z6Ig#NYFz||K*-I!UXYwWv!QNze`{w&`;9Jb-2sv7;xhI}V-E(PPAQt8=plbT@?e#9WyywWZc2=S-S1x=7X#8eEoIxuq@$a@v zoBpW$B;=_@EaIMpKRw|SZV#J3q8|oWNKvd-8&=C9E|3gji^sc00xfN!siku1 z?mohfx^*x<2PYFdITjLasi>WvszQeQVjz5tW;3%w#elSsiFzg6Qk|ZZR!%7)S7L*Rk%{pi(Dh7A zEX-iTV3sq2G0YO69MG2xAfGaUFe8Joi&iPvQn_-!P(E{|GGZ+R1Bj(yOPF97>Km}- zFpH2Z1VshIf5ty75@9yx@(~X67)VTwK!g54ECc$Ig#}6jEn|UM!US>{5JM~kivcZt zvh+|Ji)uyCVxSZcNxlSG%FOf^7NjUXgImIg#D+NF%gv`N9?sY?kp*bEAgLBYE&UIQ zPZZ0T8IdeT4cfn-zhAmqI6wLCmmdr)uXkUp5Ovj`#Xw@d0|wPUM7%K~SqRHQjL1HI zf3<0S(9h@ZzJc_zTrXQV_noilO$k3!KOmotSWEx0GAjWM^hNO*O7Oz@f9}oQ8U1nZ zS$Hc0oO)kwK79m)N%5(OziGT!h=nf$G*u#e#fTEGZ}(j)dpd2`c4WOIHCIpoFq#+{ z5taZ6BsP!+^1t1FzT{r(#(s3IWLpZf@DFlA0mUH$G?jwH|9<;<{%Yx>v|pb-Vd$mI zQdm$jqs1vBm~RWLx^>+|5(p9vCcU=3wQy-?2XL$E$Zgh}8=KO0dlPJ@;wT2g literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9246fcbd0589ff16367eeb40bfcf9d29041b2a2e GIT binary patch literal 1839 zcmV+~2hjM5P)ecimW!0GsFBx|rcW1<#|M$MVX*N`z0fv3h>F$!1B-ag=OE94N!5sStAcvmC`{ zXF*l9o_@7VSJ1qMl5K$iD4?dG$(H>Nu-mIabF-eV!%R2O+`8gI6{KW$WXv3OOJ_6i z>*ZU^bOFtAls;s(WqlIqeclhD9)6=)+(AuN%XkdA9}iO_t$_@O;_Y`Jiz}!(Z!()( zU-UH|PKdS+0hHXJwr%BG{h-%A&^nIek~eg7>q=JnNB5S-vKGQ5RWxHyL7r)cYHlnSe5JOs(3sHtL2CWhPt1_>z` z4`6bDnylGrvsTX7hlk^a=r;*M*KP;1Dwoy(p0^IwDNKgY&0RU86hp2Wj#Hi=;h?jt z3+JcXvOgNGQ#g`C7w=&wq|dqU8$3)IzFU4|DvBX*$*nIDAn%Na(-B*BZC{kW+~?=! z#>**${KyMkyz{a3`2%mpHLXV4&SF6V_YWDpKy%#HW? zNEnlY5nmBtSUeV<0g!MG0mSEI9n0{-D`13k@$=+8@>xGVPWf6r+uMq&_eBMrSoqkK zbem;Yydeo3f+;va5X8a?kU@~(#X=MW7a$3UFwa1Fj=V3v0%^=Z@pIDmz%-m6cJl)k z`=VdBS00|Xp zBLM<(^T|H%LH2m!lO@01Np>%>hwCT3K=qY4wzV z^1M_)A+#z$a~wtaW?S}VJt0NM9H7-BAfY@%2r6#^eN)tMB>dIT(jj{c$e^Z*MOkBP zlXv4GqdO;qxL^?qPa9_;|Sdd zYJJceJylI_2?G`&{sRCK`+O)@UAeM~>Z&eSty*|40%a?qLKe5jzs{_!dcM2W#Su^# zrzes@fij4f3y~s3!!KHbR~H(sTn)AqVmI8?KQHsPxV(~2AxDKGv?igTf}%u0rFxOV zk_J{o)5SO7>%=Xm z3pegn`(!;ejol`jWtGW#ZzDb*l^{|+x^f~Q0vhwt`X)T=Ua@JDmP^uJoNKoq%~+p5 zKeO=BE%?p}efI`@>9iGbGsJWM=ZU!Fj`=_$`!&qDz0*b@7U#(u`_M*;Vd42oo^);(~?XH-7 z8Wph}EGnib5EOtQ?iA)H5fwmh+vw_`+q!j~#>YX%r|4 zUAkS+fLdxx8dP;9MI-EGm7#p%O8ue5 zT|0j94*b25&8Qp=XzpbxKymQz*|Pd&xBv|cQZPfSu2NB;+6uxx?@7;c4A~VAp9U2p z)USBvMB&A!$LV?X&+^Zj^=V9w2H1X(qN=jN9(w&+{qIYAPPuQ!+ovI*SC4mHzk6PWdh;IeI^8Q=yAOKw z@M(;qS3C9sc+VybH&(2)e2??eYZoeZ9Ma3DF^cZ|ql@cJwWjA~zJx1o?@i~W?=J5; ddQMND{{zY)n%t7uIZ*%r002ovPDHLkV1g+!es=%> literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3ad32d52eac6a53d22cf70d0b64c963370fdf3 GIT binary patch literal 3238 zcmV;X3|aGuP)mxqO-6);8H-KA&G`AV1aHN92tF*~Qa3R^PB~!m^f1+gA*#irm@-vqm@^UIO5!Sf?_;@zJ`b#!dTL zHtnl~ZM{KNk^7AWm#xZX!6sG#dBgN8pk>p;Wi_e~s2XzX+t)M;V&~_pQ+MvLQ#;FL zPy(n5avOH9p6Vj3J6^pk9>a3jlN2gS?(j+9#K})IFLGVDSL_ZsZi8c)0dfn)$&<%k zE{J`o(E5B3A0W3-h}nN$G4(Uu1LPKjhCOR1xWKP0rj3iv0J-^a&fK|p%1_q89Eg#pi17%};b6UJ{? z_^2TE+9djO5eLXs8278DX6%6Kwz4XYB#J(fd*YDlH1>zT++?uAw$wxowZV{Jyeklyf3;qROTd2E! z*4Jv98()J$Uf?JJj{f`5Rb%h@{+v*>D`Xg%w_b*_%)EVZ?}IIR(VL@=GjNB-GWPJ337j^%q^JQskX>6bi75MU)H$a6GQzz8syziR(jn8y%`P7mG~Pe1&UCVp6DHCYTuD$Nuqqo@b(>951Ek^G&e;I`9LN# zv7o&kiT9(txxt1_I6CskAEvjjz4o}|`ftW?UL9|Ad!8#US>I#jvHD_zGGnH!{5+5j zZ^#?14P-G7)*Rf<@|0jnGksXQ~J2j*|Y*c&EydL7h1 zuy7u5_ZMPsSmNyT5#mzZIPU|J5U5~ZM+Z98qEQ6MNlexuq=n*U;<14NVIqyhM)cN4 zh}@d9&zgZeQ*|DzAjoq8$!zb3ShBX5|aP|SwJHTR+;J0i-uQdJe|z^)KjU3hlV@Yl0k0}K%D1_ zN%zTDCoc8hjmup8`U5q^2W&U2h&eT zHR30+_j^8tCbg4cEPFSom8L2Odg-t4WuS*XQ~PS>r=;nb9}F{ua9bbi=mkx!V{h*)(*46L*Ha*CQG9+ zb3`H}#9X^f5c@Q>*VEkL<)f#M5J?0hizs?sl@5P>%`uBCbmqtSwt9o)BFz#kWD7K$b`pX_j~KxF5TO@<%$xO2`XT0BPH>rviyC=R=Cuj8v^MNs)5RGq5-xHnROtPLJc!Cd%mfsgsHpSWlb|Zt8g7RP zsv6)c+a?r7tcS>A`PNBGpBJ0w&$w~6(|ybxgH@Eh4XPP=L1xT}Pnl6nvM+#Gy)nO!>8#WkHD^lg=x&Hb4c3JL!;$+;0&Z}GgQH;G+@ehQGfE!L4tO-kQ3GX54pz&`ZNrQy<+-~01@wXO5 ztcSFb%l+Th(59rtF+?Y<7##&$v#ErL`RD#u&tLl6-WZ!Ua9~~)}twJR6}h-k=&S^8QN!^8@4R&`rT&UTXR!I zE^>6EuM^30`WKJ`U zipzI%B@IYIuAI_Ag9tln@IDNl`peW?6Cu_^s>lsw!H^cs&@e(;a5zRffV2-P?RulR zFaX>6*<^nqS!Iyt+tyO9en>3(R$F%ij#)a=~zi8=!QrMd+as^9S zoh)eYQ|CZSLzKuc;Yuow?AiPCH*eUmtyJcwj9i|z(_E9Snb1(*CUvP(ha|-RbvVv^gRpc^lbonXh3AaC;X5*#Jv{${{>Kf zq>5a}abq&HFuOWT6H(WZj?SCjy7}=Vm9jTgA Ye=zcAf;G%XcmMzZ07*qoM6N<$f=gsx0{{R3 literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..69d63cea798937340ba88bb956c97592b3acd6b7 GIT binary patch literal 1257 zcmV=P)z>GtUlK24zdtt`$VwbU$c1zO@vRT$%pL6fIZ*8G3_qKhKvwO}x zchCLh|Gb==^2ne)UTZ6S{>RSmkbr8(-4{B%?h6-<`qUb4)PeKFJ1&gSMg)JV+g?58 zJvUN=CML{a6U`9d>h7jiOL5#rC7#*E4!NCu-30}#ootAAjXjN zmJy)iqcNH6Fg8r3v9tk;YHf>3Uvqqc62MUt@~U9fBIG!}>ln zWeO=T69Pm(<+1LpQBXZB+DIOiL-{RZm;WsX;B(Ja}#2V?Mch>!&^_o`_`rDGdBvZ^K`i27~7Jz z$6T}-cE;|?#9@(h*~v0%@jS*@z#Kv1AnXc*a2#AQTXV{NagXQdv-JNar}~G!oc?8S zEDo@8`}!BG_0G66HdQOADA~l77868YSir&Hr5AG?Tf-dIgy*F--GgU1<-P=6-tg>u z-tOL)b%4v8U$0%-QTGE(3o``-1)=~)FfXgc6yk{ppg{0UF$xL$h)7D)Hi~I0#kjco zz=k6VAU$I%+v|RXX;r3hqH#DXhZ6A;oT#P}N~R`LN`xW+MId6YS({kpT_YA+XtEHj5eofLdHdTWhi(&v2Ln-GOQ%?@1dL@c_v7my0hOZy^ z<{)pAzKRP>1LU|U;iD{+s$%*)BPtM4*K)Ywn=<%!r>8OO4?&1AT51-Y1W2Md5(9?i zkP>CB%{}R=Li+m#4+Va{c7yt(Irtll2J-;1kQf4qiJuUT$om-Gzv=7w_sChd?2jMq z^t@&7YWf4_Pn!Y=eNY!tZNBN&Sf?=E|IZilTz>zjw~;@j_~Qe8S10Fv!55#|zp?WP zN6lKe#~C6N&kEKLp~U)pq>$l4;quj%qiyJJNas#$GqZzU|3K4c`wW3Gv!B{M z0(n@WnC#dsoj zrUSyu7nCN9)n12n1)+|aE4SXg;X2#@Fn{I)f`W)uq*}d+Tg$wE_QX)z$*&&eFFOiq zDi*~yYBs`CGna;1kMBw5FB>_ypvyOI!Z`;7kcckdv|lXJH{bBU zj!$2jyX_CA;x8)->Ke1A*TFjY&*3whQ-#Y4AQW&!tx{dDLsR`Dho&zMkEP=;3kq@z z>c^*g_Citgj~_edPVOMffTDu&p&c6Q`Ey%1FcZl?Afi>Qww40Ha%G_T==wRYe>M|; zrUQmXeRmc+tK`ZJjDC2!F;h5drUM4g|MdaBcke-wV_D^-yRSR=`}KrpY^wG@v=t*a T9IvfK00000NkvXXu0mjfwijN* literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e47d503fa5d1bd0fac2dc539d41f34b519afe46f GIT binary patch literal 2917 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 literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..73502aff8c91719e97ee3e224e9d6fb4b0e27939 GIT binary patch literal 6107 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 literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..abb4d37291fe42f8bce626d3477f0dca981394bc GIT binary patch literal 11112 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 literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..8d81ca60ef0458bb491a17a54547b487561f10ed GIT binary patch literal 2777 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 pGw?utbE5ed?iqx!002ovPDHLkV1gV-3)27q literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/examples/flutter-user-management/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..34989d35504b68553b0886b6e017631c33c5af67 GIT binary patch literal 9902 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 Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/examples/flutter-user-management/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/examples/flutter-user-management/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/examples/flutter-user-management/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/examples/flutter-user-management/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/examples/flutter-user-management/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/examples/flutter-user-management/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000000..89c2725b70f --- /dev/null +++ b/examples/flutter-user-management/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/examples/flutter-user-management/ios/Runner/Base.lproj/LaunchScreen.storyboard b/examples/flutter-user-management/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000000..f2e259c7c93 --- /dev/null +++ b/examples/flutter-user-management/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/flutter-user-management/ios/Runner/Base.lproj/Main.storyboard b/examples/flutter-user-management/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000000..f3c28516fb3 --- /dev/null +++ b/examples/flutter-user-management/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/flutter-user-management/ios/Runner/Info.plist b/examples/flutter-user-management/ios/Runner/Info.plist new file mode 100644 index 00000000000..fb546c6d4ba --- /dev/null +++ b/examples/flutter-user-management/ios/Runner/Info.plist @@ -0,0 +1,57 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Supabase Demo + 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 + + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + + io.supabase.flutterdemo + + + + + diff --git a/examples/flutter-user-management/ios/Runner/Runner-Bridging-Header.h b/examples/flutter-user-management/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000000..308a2a560b4 --- /dev/null +++ b/examples/flutter-user-management/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/examples/flutter-user-management/lib/components/auth_required_state.dart b/examples/flutter-user-management/lib/components/auth_required_state.dart new file mode 100644 index 00000000000..5e72a96042d --- /dev/null +++ b/examples/flutter-user-management/lib/components/auth_required_state.dart @@ -0,0 +1,10 @@ +import 'package:flutter/material.dart'; +import 'package:supabase_flutter/supabase_flutter.dart'; + +class AuthRequiredState + extends SupabaseAuthRequiredState { + @override + void onUnauthenticated() { + Navigator.pushNamedAndRemoveUntil(context, '/signIn', (route) => false); + } +} diff --git a/examples/flutter-user-management/lib/components/auth_state.dart b/examples/flutter-user-management/lib/components/auth_state.dart new file mode 100644 index 00000000000..6ba3c67425b --- /dev/null +++ b/examples/flutter-user-management/lib/components/auth_state.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; +import 'package:supabase/supabase.dart' as supabase; +import 'package:supabase_flutter/supabase_flutter.dart'; + +class AuthState extends SupabaseAuthState { + @override + void onUnauthenticated() { + Navigator.pushNamedAndRemoveUntil(context, '/signIn', (route) => false); + } + + @override + void onAuthenticated(supabase.Session session) { + Navigator.pushNamedAndRemoveUntil(context, '/profile', (route) => false); + } + + @override + void onPasswordRecovery(supabase.Session session) { + Navigator.pushNamedAndRemoveUntil( + context, '/profile/changePassword', (route) => false); + } + + @override + void onErrorAuthenticating(String message) { + print('***** onErrorAuthenticating: $message'); + } +} diff --git a/examples/flutter-user-management/lib/main.dart b/examples/flutter-user-management/lib/main.dart new file mode 100644 index 00000000000..2e18a081cbb --- /dev/null +++ b/examples/flutter-user-management/lib/main.dart @@ -0,0 +1,37 @@ +import 'package:supabase_demo/screens/profile_screen.dart'; +import 'package:flutter/material.dart'; +import 'package:supabase_demo/screens/signin_screen.dart'; +import 'package:supabase_demo/screens/splash_screen.dart'; +import 'package:supabase_demo/utils/constants.dart'; +import 'package:supabase_flutter/supabase_flutter.dart'; + +void main() { + WidgetsFlutterBinding.ensureInitialized(); + + // init Supabase singleton + Supabase( + url: supabaseUrl, + anonKey: supabaseAnnonKey, + authCallbackUrlHostname: 'login-callback', + debug: true, + ); + + runApp(MyApp()); +} + +class MyApp extends StatelessWidget { + // This widget is the root of your application. + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Supabase Demo', + theme: ThemeData.dark(), + initialRoute: '/', + routes: { + '/': (_) => SplashScreen(), + '/signIn': (_) => SignInScreen(), + '/profile': (_) => ProfileScreen(), + }, + ); + } +} diff --git a/examples/flutter-user-management/lib/screens/profile_screen.dart b/examples/flutter-user-management/lib/screens/profile_screen.dart new file mode 100644 index 00000000000..6d67fab114c --- /dev/null +++ b/examples/flutter-user-management/lib/screens/profile_screen.dart @@ -0,0 +1,294 @@ +import 'dart:io'; +import 'dart:typed_data'; + +import 'package:supabase_demo/components/auth_required_state.dart'; +import 'package:supabase_demo/utils/helpers.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:gotrue/gotrue.dart'; +import 'package:path/path.dart'; +import 'package:rounded_loading_button/rounded_loading_button.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:supabase_flutter/supabase_flutter.dart'; + +class ProfileScreen extends StatefulWidget { + @override + _ProfileScreenState createState() => _ProfileScreenState(); +} + +class _ProfileScreenState extends AuthRequiredState { + _ProfileScreenState(); + + final scaffoldKey = GlobalKey(); + + final RoundedLoadingButtonController _signOutBtnController = + RoundedLoadingButtonController(); + final RoundedLoadingButtonController _updateProfileBtnController = + RoundedLoadingButtonController(); + + final _picker = ImagePicker(); + + User? user; + bool loadingProfile = true; + String _appBarTitle = ''; + String username = ''; + String website = ''; + String avatarUrl = ''; + + @override + void initState() { + super.initState(); + + final _user = Supabase().client.auth.user(); + if (_user != null) { + setState(() { + _appBarTitle = 'Welcome ${_user.email}'; + user = _user; + }); + loadProfile(_user.id); + } + } + + Future loadProfile(String userId) async { + final response = await Supabase() + .client + .from('profiles') + .select('username, website, avatar_url') + .eq('id', userId) + .single() + .execute(); + if (response.error == null && response.data != null) { + setState(() { + username = response.data['username'] as String? ?? ''; + website = response.data['website'] as String? ?? ''; + avatarUrl = response.data['avatar_url'] as String? ?? ''; + loadingProfile = false; + }); + } else { + setState(() { + loadingProfile = false; + }); + } + return true; + } + + final picker = ImagePicker(); + + Future updateAvatar(BuildContext context) async { + final pickedFile = await _picker.getImage(source: ImageSource.camera); + if (pickedFile != null) { + final file = File(pickedFile.path); + final fileExt = extension(file.path); + final fileName = '${randomString(15)}$fileExt'; + + final response = await Supabase() + .client + .storage + .from('avatars') + .upload(fileName, file); + if (response.error == null) { + setState(() { + avatarUrl = fileName; + }); + _onUpdateProfilePress(context); + } else { + print(response.error!.message); + } + } + } + + Future _onSignOutPress(BuildContext context) async { + await Supabase().client.auth.signOut(); + Navigator.pushNamedAndRemoveUntil(context, '/signIn', (route) => false); + return true; + } + + Future _onUpdateProfilePress(BuildContext context) async { + FocusScope.of(context).unfocus(); + + final updates = { + 'id': user?.id, + 'username': username, + 'website': website, + 'avatar_url': avatarUrl, + 'updated_at': DateTime.now().toString(), + }; + + final response = + await Supabase().client.from('profiles').upsert(updates).execute(); + if (response.error != null) { + showMessage("Update profile failed: ${response.error!.message}"); + _updateProfileBtnController.reset(); + return false; + } else { + _updateProfileBtnController.reset(); + showMessage("Profile updated!"); + return true; + } + } + + void showMessage(String message) { + final snackbar = SnackBar(content: Text(message)); + ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(snackbar); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + key: scaffoldKey, + resizeToAvoidBottomInset: false, + appBar: AppBar( + title: Text(_appBarTitle), + ), + body: loadingProfile + ? SizedBox( + height: MediaQuery.of(context).size.height / 1.3, + child: const Center( + child: CircularProgressIndicator(), + ), + ) + : Padding( + padding: const EdgeInsets.all(15.0), + child: Column( + children: [ + AvatarContainer( + url: avatarUrl, + onUpdatePressed: () => updateAvatar(context), + key: Key(avatarUrl), + ), + TextFormField( + onChanged: (value) => setState(() { + username = value; + }), + initialValue: username, + keyboardType: TextInputType.emailAddress, + decoration: const InputDecoration( + labelText: 'Username', + hintText: '', + ), + ), + TextFormField( + onChanged: (value) => setState(() { + website = value; + }), + initialValue: website, + keyboardType: TextInputType.emailAddress, + decoration: const InputDecoration( + labelText: 'Website', + hintText: '', + ), + ), + const SizedBox(height: 35.0), + RoundedLoadingButton( + color: Colors.green, + controller: _updateProfileBtnController, + onPressed: () { + _onUpdateProfilePress(context); + }, + child: const Text('Update profile', + style: TextStyle(fontSize: 20, color: Colors.white)), + ), + const SizedBox(height: 35.0), + RoundedLoadingButton( + color: Colors.red, + controller: _signOutBtnController, + onPressed: () { + _onSignOutPress(context); + }, + child: const Text( + 'Sign out', + style: TextStyle(fontSize: 20, color: Colors.white), + ), + ), + ], + ), + ), + ); + } +} + +class AvatarContainer extends StatefulWidget { + final String url; + final void Function() onUpdatePressed; + const AvatarContainer( + {required this.url, required this.onUpdatePressed, Key? key}) + : super(key: key); + + @override + _AvatarContainerState createState() => _AvatarContainerState(); +} + +class _AvatarContainerState extends State { + _AvatarContainerState(); + + bool loadingImage = true; + Uint8List? image; + + @override + void initState() { + super.initState(); + + if (widget.url != '') { + downloadImage(widget.url); + } + } + + Future downloadImage(String path) async { + setState(() { + loadingImage = true; + }); + + final response = + await Supabase().client.storage.from('avatars').download(path); + if (response.error == null) { + setState(() { + image = response.data; + loadingImage = false; + }); + } else { + print(response.error!.message); + setState(() { + loadingImage = false; + }); + } + return true; + } + + ImageProvider _getImage() { + if (image != null) { + return MemoryImage(image!); + } else { + return const AssetImage('assets/images/noavatar.jpeg'); + } + } + + @override + Widget build(BuildContext context) { + if (loadingImage) { + return const CircleAvatar( + radius: 65, + child: Align( + child: CircularProgressIndicator(), + ), + ); + } else { + return CircleAvatar( + radius: 65, + backgroundImage: _getImage(), + child: Stack(children: [ + Align( + alignment: Alignment.bottomRight, + child: IconButton( + icon: const CircleAvatar( + radius: 18, + backgroundColor: Colors.white70, + child: Icon(CupertinoIcons.camera), + ), + onPressed: () => widget.onUpdatePressed(), + ), + ), + ]), + ); + } + } +} diff --git a/examples/flutter-user-management/lib/screens/signin_screen.dart b/examples/flutter-user-management/lib/screens/signin_screen.dart new file mode 100644 index 00000000000..5e75d259d37 --- /dev/null +++ b/examples/flutter-user-management/lib/screens/signin_screen.dart @@ -0,0 +1,99 @@ +import 'package:supabase_demo/components/auth_state.dart'; +import 'package:supabase_demo/utils/helpers.dart'; +import 'package:flutter/material.dart'; +import 'package:supabase_demo/utils/constants.dart'; +import 'package:rounded_loading_button/rounded_loading_button.dart'; +import 'package:supabase/supabase.dart' as supabase; +import 'package:supabase_flutter/supabase_flutter.dart'; + +class SignInScreen extends StatefulWidget { + @override + _SignInState createState() => _SignInState(); +} + +class _SignInState extends AuthState { + final formKey = GlobalKey(); + final scaffoldKey = GlobalKey(); + + final RoundedLoadingButtonController _magicLinkController = + RoundedLoadingButtonController(); + + String _email = ''; + + @override + void onErrorAuthenticating(String message) { + showMessage(message); + } + + Future _onMagicLinkPress(BuildContext context) async { + final form = formKey.currentState; + + if (form != null && form.validate()) { + form.save(); + FocusScope.of(context).unfocus(); + + final response = await Supabase().client.auth.signIn( + email: _email, + options: supabase.AuthOptions( + redirectTo: authRedirectUri, + ), + ); + if (response.error != null) { + showMessage(response.error!.message); + _magicLinkController.reset(); + } else { + showMessage('Check your email for the login link!'); + } + } else { + _magicLinkController.reset(); + } + return true; + } + + void showMessage(String message) { + final snackbar = SnackBar(content: Text(message)); + ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(snackbar); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + key: scaffoldKey, + resizeToAvoidBottomInset: false, + appBar: AppBar( + title: const Text('Sign in'), + ), + body: Padding( + padding: const EdgeInsets.all(15.0), + child: Form( + key: formKey, + child: Column( + children: [ + const SizedBox(height: 25.0), + TextFormField( + onSaved: (value) => _email = value ?? '', + validator: (val) => validateEmail(val), + keyboardType: TextInputType.emailAddress, + decoration: const InputDecoration( + hintText: 'Enter your email address', + ), + ), + const SizedBox(height: 50.0), + RoundedLoadingButton( + color: Colors.green, + controller: _magicLinkController, + onPressed: () { + _onMagicLinkPress(context); + }, + child: const Text( + 'Send magic link', + style: TextStyle(fontSize: 20, color: Colors.white), + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/examples/flutter-user-management/lib/screens/splash_screen.dart b/examples/flutter-user-management/lib/screens/splash_screen.dart new file mode 100644 index 00000000000..048ee41f799 --- /dev/null +++ b/examples/flutter-user-management/lib/screens/splash_screen.dart @@ -0,0 +1,50 @@ +import 'dart:async'; + +import 'package:supabase_demo/components/auth_state.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class SplashScreen extends StatefulWidget { + @override + SplashScreenState createState() => SplashScreenState(); +} + +class SplashScreenState extends AuthState + with SingleTickerProviderStateMixin { + Timer? recoverSessionTimer; + + @override + void initState() { + super.initState(); + + /// a timer to slow down session restore + /// If not user can't really see the splash screen + const _duration = Duration(seconds: 1); + recoverSessionTimer = Timer(_duration, () { + recoverSupabaseSession(); + }); + } + + /// on received auth deeplink, we should cancel recoverSessionTimer + /// and wait for auth deep link handling result + @override + void onReceivedAuthDeeplink(Uri uri) { + if (recoverSessionTimer != null) { + recoverSessionTimer!.cancel(); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Center( + child: SizedBox( + height: 50.0, + child: Image.asset( + "assets/images/logo-dark.png", + ), + ), + ), + ); + } +} diff --git a/examples/flutter-user-management/lib/utils/constants.dart b/examples/flutter-user-management/lib/utils/constants.dart new file mode 100644 index 00000000000..bb9b08117af --- /dev/null +++ b/examples/flutter-user-management/lib/utils/constants.dart @@ -0,0 +1,6 @@ +/// TODO: update with your custom SCHEME and HOSTNAME +const authRedirectUri = 'io.supabase.flutterdemo://login-callback'; + +/// TODO: Add your SUPABASE_URL / SUPABASE_KEY here +const supabaseUrl = 'SUPABASE_URL'; +const supabaseAnnonKey = 'SUPABASE_KEY'; diff --git a/examples/flutter-user-management/lib/utils/helpers.dart b/examples/flutter-user-management/lib/utils/helpers.dart new file mode 100644 index 00000000000..27f325746ca --- /dev/null +++ b/examples/flutter-user-management/lib/utils/helpers.dart @@ -0,0 +1,21 @@ +import 'dart:math'; + +String? validateEmail(String? value) { + const String pattern = + r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]" + r"{0,253}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]" + r"{0,253}[a-zA-Z0-9])?)*$"; + final RegExp regex = RegExp(pattern); + if (value == null || !regex.hasMatch(value)) { + return 'Not a valid email.'; + } else { + return null; + } +} + +String randomString(int length) { + const ch = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'; + final Random r = Random(); + return String.fromCharCodes( + Iterable.generate(length, (_) => ch.codeUnitAt(r.nextInt(ch.length)))); +} diff --git a/examples/flutter-user-management/pubspec.lock b/examples/flutter-user-management/pubspec.lock new file mode 100644 index 00000000000..31bb178686a --- /dev/null +++ b/examples/flutter-user-management/pubspec.lock @@ -0,0 +1,537 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.2" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.1" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.15.0" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_launcher_icons: + dependency: "direct dev" + description: + name: flutter_launcher_icons + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + gotrue: + dependency: transitive + description: + name: gotrue + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.6" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.3" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.0" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + image_picker: + dependency: "direct main" + description: + name: image_picker + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.0+3" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.3" + jwt_decode: + dependency: transitive + description: + name: jwt_decode + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.1" + lint: + dependency: "direct dev" + description: + name: lint + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.3" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.10" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + path: + dependency: "direct main" + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.11.0" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "4.1.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + postgrest: + dependency: transitive + description: + name: postgrest + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.1" + realtime_client: + dependency: transitive + description: + name: realtime_client + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" + rounded_loading_button: + dependency: "direct main" + description: + name: rounded_loading_button + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + rxdart: + dependency: transitive + description: + name: rxdart + url: "https://pub.dartlang.org" + source: hosted + version: "0.26.0" + shared_preferences: + dependency: transitive + description: + name: shared_preferences + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + shared_preferences_macos: + dependency: transitive + description: + name: shared_preferences_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + storage_client: + dependency: transitive + description: + name: storage_client + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1-dev.3" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + supabase: + dependency: "direct main" + description: + name: supabase + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1-dev.27" + supabase_flutter: + dependency: "direct main" + description: + name: supabase_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1-dev.2" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.0" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + uni_links: + dependency: transitive + description: + name: uni_links + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.1" + uni_links_platform_interface: + dependency: transitive + description: + name: uni_links_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + uni_links_web: + dependency: transitive + description: + name: uni_links_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.0" + universal_io: + dependency: transitive + description: + name: universal_io + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + url_launcher: + dependency: transitive + description: + name: url_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.6" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.5" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.2" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" +sdks: + dart: ">=2.13.0 <3.0.0" + flutter: ">=2.0.0" diff --git a/examples/flutter-user-management/pubspec.yaml b/examples/flutter-user-management/pubspec.yaml new file mode 100644 index 00000000000..e4cf6abc872 --- /dev/null +++ b/examples/flutter-user-management/pubspec.yaml @@ -0,0 +1,58 @@ +name: supabase_demo +description: Supabase flutter user management. users can sign up with a magic link and then update their account with public profile information, including a profile image. +homepage: "https://supabase.io" +repository: "https://github.com/supabase/supabase" + +# The following line prevents the package from being accidentally published to +# pub.dev using `pub publish`. This is preferred for private packages. +publish_to: "none" # Remove this line if you wish to publish to pub.dev + +# 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.12.0 <3.0.0" + +dependencies: + cupertino_icons: ^1.0.3 + flutter: + sdk: flutter + image_picker: ^0.8.0+3 + path: ^1.8.0 + rounded_loading_button: ^2.0.5 + supabase: ^0.0.1-dev.27 + supabase_flutter: ^0.0.1-dev.2 + +dev_dependencies: + flutter_launcher_icons: ^0.9.0 + flutter_test: + sdk: flutter + lint: ^1.5.3 + +flutter_icons: + android: "launcher_icon" + ios: true + image_path: "assets/images/logo.png" + +# 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: + - assets/images/ diff --git a/examples/flutter-user-management/test/widget_test.dart b/examples/flutter-user-management/test/widget_test.dart new file mode 100644 index 00000000000..6693b82df58 --- /dev/null +++ b/examples/flutter-user-management/test/widget_test.dart @@ -0,0 +1,30 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility that Flutter provides. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:supabase_demo/main.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(MyApp()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +}