diff --git a/.gitignore b/.gitignore index 98a0412..d25db5a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ packages pubspec.lock example/ios/Flutter/flutter_export_environment.sh +example/.flutter-plugins-dependencies diff --git a/CHANGELOG.md b/CHANGELOG.md index d14afb8..013a4aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## [1.0.10] - 31/12/2019 +* allow guest login + +## [1.0.9] - 30/12/2019 +* update dependencies + ## [1.0.8] - 02/10/2019 * update dependencies @@ -44,10 +50,10 @@ * improve UI ## [0.0.7] - 04/07/2018 -* fixe sign in with mail +* fixe sign in with mail ## [0.0.6] - 30/05/2018 -* improve show dialog error +* improve show dialog error ## [0.0.5] - 29/05/2018 * show error occured on unknown errors @@ -64,9 +70,8 @@ ## [0.0.2] - 20/03/2018 * improve ui -* change firebase_auth version +* change firebase_auth version ## [0.0.1] - 19/03/2018 * initial release - diff --git a/README.md b/README.md index 0ad924b..63839b2 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,10 @@ Fork of https://pub.dartlang.org/packages/flutter_firebase_ui -Old package wasnt being maintained so i created this one to update. +Old package wasn't being maintained so I created this one to update. firebase_ui is a library that helps you to quickly implement firebase authentication. -It provides UI for the common identity providers like Facebook, Google, Twitter and email. +It provides UI for the common identity providers like Facebook, Google, Twitter and email. Note: this plugin use firebase_auth you must configure it as describe [here](https://pub.dartlang.org/packages/firebase_auth). diff --git a/example/android/build.gradle b/example/android/build.gradle index 3bc426c..7d6ab38 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -5,8 +5,8 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.3.0' - classpath 'com.google.gms:google-services:3.2.1' // google-services plugin + classpath 'com.android.tools.build:gradle:3.5.0' + classpath 'com.google.gms:google-services:4.3.3' // google-services plugin } } @@ -21,10 +21,9 @@ allprojects { } rootProject.buildDir = '../build' + subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { project.evaluationDependsOn(':app') } diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 53ae0ae..b6e61b6 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -1,3 +1,4 @@ android.enableJetifier=true android.useAndroidX=true org.gradle.jvmargs=-Xmx1536M +android.enableR8=true diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index b6136f9..d9ba5b1 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip diff --git a/example/flutter_01.log b/example/flutter_01.log deleted file mode 100644 index 603ce4f..0000000 --- a/example/flutter_01.log +++ /dev/null @@ -1,121 +0,0 @@ -Flutter crash report; please file at https://github.com/flutter/flutter/issues. - -## command - -flutter run --machine -t lib/main.dart -d C3A78E12-98C5-4CD6-8E3C-599D7A03250D --start-paused --track-widget-creation - -## exception - -YamlException: Error on line 38, column 3: Expected a key while parsing a block mapping. - - assets/twitter-logo.png - ^ - -``` -#0 Parser._parseBlockMappingKey (package:yaml/src/parser.dart:448:5) -#1 Parser._stateMachine (package:yaml/src/parser.dart:86:16) -#2 Parser.parse (package:yaml/src/parser.dart:47:19) -#3 Loader._loadMapping (package:yaml/src/loader.dart:171:23) -#4 Loader._loadNode (package:yaml/src/loader.dart:86:16) -#5 Loader._loadMapping (package:yaml/src/loader.dart:165:19) -#6 Loader._loadNode (package:yaml/src/loader.dart:86:16) -#7 Loader._loadDocument (package:yaml/src/loader.dart:62:20) -#8 Loader.load (package:yaml/src/loader.dart:54:20) -#9 loadYamlDocument (package:yaml/yaml.dart:51:25) -#10 loadYamlNode (package:yaml/yaml.dart:42:5) -#11 loadYaml (package:yaml/yaml.dart:34:5) -#12 _pluginFromPubspec (package:flutter_tools/src/plugins.dart:62:27) -#13 findPlugins. (package:flutter_tools/src/plugins.dart:85:27) -#14 __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.forEach (dart:collection/runtime/libcompact_hash.dart:370:8) -#15 findPlugins (package:flutter_tools/src/plugins.dart:83:12) -#16 refreshPluginsList (package:flutter_tools/src/plugins.dart:287:32) -#17 FlutterProject.ensureReadyForPlatformSpecificTooling (package:flutter_tools/src/project.dart:139:5) - -#18 FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:388:21) - -#19 FlutterCommand.run. (package:flutter_tools/src/runner/flutter_command.dart:334:33) - -#20 AppContext.run. (package:flutter_tools/src/base/context.dart:142:29) - -#21 _rootRun (dart:async/zone.dart:1124:13) -#22 _CustomZone.run (dart:async/zone.dart:1021:19) -#23 _runZoned (dart:async/zone.dart:1516:10) -#24 runZoned (dart:async/zone.dart:1463:12) -#25 AppContext.run (package:flutter_tools/src/base/context.dart:141:18) - -#26 FlutterCommand.run (package:flutter_tools/src/runner/flutter_command.dart:325:20) -#27 CommandRunner.runCommand (package:args/command_runner.dart:196:27) - -#28 FlutterCommandRunner.runCommand. (package:flutter_tools/src/runner/flutter_command_runner.dart:401:21) - -#29 AppContext.run. (package:flutter_tools/src/base/context.dart:142:29) - -#30 _rootRun (dart:async/zone.dart:1124:13) -#31 _CustomZone.run (dart:async/zone.dart:1021:19) -#32 _runZoned (dart:async/zone.dart:1516:10) -#33 runZoned (dart:async/zone.dart:1463:12) -#34 AppContext.run (package:flutter_tools/src/base/context.dart:141:18) - -#35 FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:361:19) - -#36 CommandRunner.run. (package:args/command_runner.dart:111:29) -#37 new Future.sync (dart:async/future.dart:224:31) -#38 CommandRunner.run (package:args/command_runner.dart:111:11) -#39 FlutterCommandRunner.run (package:flutter_tools/src/runner/flutter_command_runner.dart:241:18) -#40 run. (package:flutter_tools/runner.dart:60:20) - -#41 AppContext.run. (package:flutter_tools/src/base/context.dart:142:29) - -#42 _rootRun (dart:async/zone.dart:1124:13) -#43 _CustomZone.run (dart:async/zone.dart:1021:19) -#44 _runZoned (dart:async/zone.dart:1516:10) -#45 runZoned (dart:async/zone.dart:1463:12) -#46 AppContext.run (package:flutter_tools/src/base/context.dart:141:18) - -#47 runInContext (package:flutter_tools/src/context_runner.dart:44:24) - -#48 run (package:flutter_tools/runner.dart:51:10) -#49 main (package:flutter_tools/executable.dart:51:9) - -#50 main (file:///Users/kylyu/development/flutter/packages/flutter_tools/bin/flutter_tools.dart:8:3) -#51 _startIsolate. (dart:isolate/runtime/libisolate_patch.dart:287:32) -#52 _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12) -``` - -## flutter doctor - -``` -[✓] Flutter (Channel beta, v0.11.3, on Mac OS X 10.14 18A389, locale fr-FR) - • Flutter version 0.11.3 at /Users/kylyu/development/flutter - • Framework revision 72bf075e8d (6 days ago), 2018-11-09 20:36:17 -0800 - • Engine revision 5646e86a6f - • Dart version 2.1.0 (build 2.1.0-dev.9.3 9c07fb64c4) - -[✓] Android toolchain - develop for Android devices (Android SDK 28.0.3) - • Android SDK at /Users/kylyu/Library/Android/sdk - • Android NDK location not configured (optional; useful for native profiling support) - • Platform android-28, build-tools 28.0.3 - • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java - • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06) - • All Android licenses accepted. - -[✓] iOS toolchain - develop for iOS devices (Xcode 10.1) - • Xcode at /Applications/Xcode.app/Contents/Developer - • Xcode 10.1, Build version 10B61 - • ios-deploy 2.0.0 - • CocoaPods version 1.5.3 - -[✓] Android Studio (version 3.2) - • Android Studio at /Applications/Android Studio.app/Contents - ✗ Flutter plugin not installed; this adds Flutter specific functionality. - ✗ Dart plugin not installed; this adds Dart specific functionality. - • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06) - -[✓] VS Code (version 1.29.0) - • VS Code at /Applications/Visual Studio Code.app/Contents - • Flutter extension version 2.20.0 - -[✓] Connected device (1 available) - • iPhone XR • C3A78E12-98C5-4CD6-8E3C-599D7A03250D • ios • iOS 12.1 (simulator) - -• No issues found! -``` diff --git a/example/flutter_02.log b/example/flutter_02.log deleted file mode 100644 index 603ce4f..0000000 --- a/example/flutter_02.log +++ /dev/null @@ -1,121 +0,0 @@ -Flutter crash report; please file at https://github.com/flutter/flutter/issues. - -## command - -flutter run --machine -t lib/main.dart -d C3A78E12-98C5-4CD6-8E3C-599D7A03250D --start-paused --track-widget-creation - -## exception - -YamlException: Error on line 38, column 3: Expected a key while parsing a block mapping. - - assets/twitter-logo.png - ^ - -``` -#0 Parser._parseBlockMappingKey (package:yaml/src/parser.dart:448:5) -#1 Parser._stateMachine (package:yaml/src/parser.dart:86:16) -#2 Parser.parse (package:yaml/src/parser.dart:47:19) -#3 Loader._loadMapping (package:yaml/src/loader.dart:171:23) -#4 Loader._loadNode (package:yaml/src/loader.dart:86:16) -#5 Loader._loadMapping (package:yaml/src/loader.dart:165:19) -#6 Loader._loadNode (package:yaml/src/loader.dart:86:16) -#7 Loader._loadDocument (package:yaml/src/loader.dart:62:20) -#8 Loader.load (package:yaml/src/loader.dart:54:20) -#9 loadYamlDocument (package:yaml/yaml.dart:51:25) -#10 loadYamlNode (package:yaml/yaml.dart:42:5) -#11 loadYaml (package:yaml/yaml.dart:34:5) -#12 _pluginFromPubspec (package:flutter_tools/src/plugins.dart:62:27) -#13 findPlugins. (package:flutter_tools/src/plugins.dart:85:27) -#14 __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.forEach (dart:collection/runtime/libcompact_hash.dart:370:8) -#15 findPlugins (package:flutter_tools/src/plugins.dart:83:12) -#16 refreshPluginsList (package:flutter_tools/src/plugins.dart:287:32) -#17 FlutterProject.ensureReadyForPlatformSpecificTooling (package:flutter_tools/src/project.dart:139:5) - -#18 FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:388:21) - -#19 FlutterCommand.run. (package:flutter_tools/src/runner/flutter_command.dart:334:33) - -#20 AppContext.run. (package:flutter_tools/src/base/context.dart:142:29) - -#21 _rootRun (dart:async/zone.dart:1124:13) -#22 _CustomZone.run (dart:async/zone.dart:1021:19) -#23 _runZoned (dart:async/zone.dart:1516:10) -#24 runZoned (dart:async/zone.dart:1463:12) -#25 AppContext.run (package:flutter_tools/src/base/context.dart:141:18) - -#26 FlutterCommand.run (package:flutter_tools/src/runner/flutter_command.dart:325:20) -#27 CommandRunner.runCommand (package:args/command_runner.dart:196:27) - -#28 FlutterCommandRunner.runCommand. (package:flutter_tools/src/runner/flutter_command_runner.dart:401:21) - -#29 AppContext.run. (package:flutter_tools/src/base/context.dart:142:29) - -#30 _rootRun (dart:async/zone.dart:1124:13) -#31 _CustomZone.run (dart:async/zone.dart:1021:19) -#32 _runZoned (dart:async/zone.dart:1516:10) -#33 runZoned (dart:async/zone.dart:1463:12) -#34 AppContext.run (package:flutter_tools/src/base/context.dart:141:18) - -#35 FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:361:19) - -#36 CommandRunner.run. (package:args/command_runner.dart:111:29) -#37 new Future.sync (dart:async/future.dart:224:31) -#38 CommandRunner.run (package:args/command_runner.dart:111:11) -#39 FlutterCommandRunner.run (package:flutter_tools/src/runner/flutter_command_runner.dart:241:18) -#40 run. (package:flutter_tools/runner.dart:60:20) - -#41 AppContext.run. (package:flutter_tools/src/base/context.dart:142:29) - -#42 _rootRun (dart:async/zone.dart:1124:13) -#43 _CustomZone.run (dart:async/zone.dart:1021:19) -#44 _runZoned (dart:async/zone.dart:1516:10) -#45 runZoned (dart:async/zone.dart:1463:12) -#46 AppContext.run (package:flutter_tools/src/base/context.dart:141:18) - -#47 runInContext (package:flutter_tools/src/context_runner.dart:44:24) - -#48 run (package:flutter_tools/runner.dart:51:10) -#49 main (package:flutter_tools/executable.dart:51:9) - -#50 main (file:///Users/kylyu/development/flutter/packages/flutter_tools/bin/flutter_tools.dart:8:3) -#51 _startIsolate. (dart:isolate/runtime/libisolate_patch.dart:287:32) -#52 _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12) -``` - -## flutter doctor - -``` -[✓] Flutter (Channel beta, v0.11.3, on Mac OS X 10.14 18A389, locale fr-FR) - • Flutter version 0.11.3 at /Users/kylyu/development/flutter - • Framework revision 72bf075e8d (6 days ago), 2018-11-09 20:36:17 -0800 - • Engine revision 5646e86a6f - • Dart version 2.1.0 (build 2.1.0-dev.9.3 9c07fb64c4) - -[✓] Android toolchain - develop for Android devices (Android SDK 28.0.3) - • Android SDK at /Users/kylyu/Library/Android/sdk - • Android NDK location not configured (optional; useful for native profiling support) - • Platform android-28, build-tools 28.0.3 - • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java - • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06) - • All Android licenses accepted. - -[✓] iOS toolchain - develop for iOS devices (Xcode 10.1) - • Xcode at /Applications/Xcode.app/Contents/Developer - • Xcode 10.1, Build version 10B61 - • ios-deploy 2.0.0 - • CocoaPods version 1.5.3 - -[✓] Android Studio (version 3.2) - • Android Studio at /Applications/Android Studio.app/Contents - ✗ Flutter plugin not installed; this adds Flutter specific functionality. - ✗ Dart plugin not installed; this adds Dart specific functionality. - • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06) - -[✓] VS Code (version 1.29.0) - • VS Code at /Applications/Visual Studio Code.app/Contents - • Flutter extension version 2.20.0 - -[✓] Connected device (1 available) - • iPhone XR • C3A78E12-98C5-4CD6-8E3C-599D7A03250D • ios • iOS 12.1 (simulator) - -• No issues found! -``` diff --git a/example/flutter_03.log b/example/flutter_03.log deleted file mode 100644 index 603ce4f..0000000 --- a/example/flutter_03.log +++ /dev/null @@ -1,121 +0,0 @@ -Flutter crash report; please file at https://github.com/flutter/flutter/issues. - -## command - -flutter run --machine -t lib/main.dart -d C3A78E12-98C5-4CD6-8E3C-599D7A03250D --start-paused --track-widget-creation - -## exception - -YamlException: Error on line 38, column 3: Expected a key while parsing a block mapping. - - assets/twitter-logo.png - ^ - -``` -#0 Parser._parseBlockMappingKey (package:yaml/src/parser.dart:448:5) -#1 Parser._stateMachine (package:yaml/src/parser.dart:86:16) -#2 Parser.parse (package:yaml/src/parser.dart:47:19) -#3 Loader._loadMapping (package:yaml/src/loader.dart:171:23) -#4 Loader._loadNode (package:yaml/src/loader.dart:86:16) -#5 Loader._loadMapping (package:yaml/src/loader.dart:165:19) -#6 Loader._loadNode (package:yaml/src/loader.dart:86:16) -#7 Loader._loadDocument (package:yaml/src/loader.dart:62:20) -#8 Loader.load (package:yaml/src/loader.dart:54:20) -#9 loadYamlDocument (package:yaml/yaml.dart:51:25) -#10 loadYamlNode (package:yaml/yaml.dart:42:5) -#11 loadYaml (package:yaml/yaml.dart:34:5) -#12 _pluginFromPubspec (package:flutter_tools/src/plugins.dart:62:27) -#13 findPlugins. (package:flutter_tools/src/plugins.dart:85:27) -#14 __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.forEach (dart:collection/runtime/libcompact_hash.dart:370:8) -#15 findPlugins (package:flutter_tools/src/plugins.dart:83:12) -#16 refreshPluginsList (package:flutter_tools/src/plugins.dart:287:32) -#17 FlutterProject.ensureReadyForPlatformSpecificTooling (package:flutter_tools/src/project.dart:139:5) - -#18 FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:388:21) - -#19 FlutterCommand.run. (package:flutter_tools/src/runner/flutter_command.dart:334:33) - -#20 AppContext.run. (package:flutter_tools/src/base/context.dart:142:29) - -#21 _rootRun (dart:async/zone.dart:1124:13) -#22 _CustomZone.run (dart:async/zone.dart:1021:19) -#23 _runZoned (dart:async/zone.dart:1516:10) -#24 runZoned (dart:async/zone.dart:1463:12) -#25 AppContext.run (package:flutter_tools/src/base/context.dart:141:18) - -#26 FlutterCommand.run (package:flutter_tools/src/runner/flutter_command.dart:325:20) -#27 CommandRunner.runCommand (package:args/command_runner.dart:196:27) - -#28 FlutterCommandRunner.runCommand. (package:flutter_tools/src/runner/flutter_command_runner.dart:401:21) - -#29 AppContext.run. (package:flutter_tools/src/base/context.dart:142:29) - -#30 _rootRun (dart:async/zone.dart:1124:13) -#31 _CustomZone.run (dart:async/zone.dart:1021:19) -#32 _runZoned (dart:async/zone.dart:1516:10) -#33 runZoned (dart:async/zone.dart:1463:12) -#34 AppContext.run (package:flutter_tools/src/base/context.dart:141:18) - -#35 FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:361:19) - -#36 CommandRunner.run. (package:args/command_runner.dart:111:29) -#37 new Future.sync (dart:async/future.dart:224:31) -#38 CommandRunner.run (package:args/command_runner.dart:111:11) -#39 FlutterCommandRunner.run (package:flutter_tools/src/runner/flutter_command_runner.dart:241:18) -#40 run. (package:flutter_tools/runner.dart:60:20) - -#41 AppContext.run. (package:flutter_tools/src/base/context.dart:142:29) - -#42 _rootRun (dart:async/zone.dart:1124:13) -#43 _CustomZone.run (dart:async/zone.dart:1021:19) -#44 _runZoned (dart:async/zone.dart:1516:10) -#45 runZoned (dart:async/zone.dart:1463:12) -#46 AppContext.run (package:flutter_tools/src/base/context.dart:141:18) - -#47 runInContext (package:flutter_tools/src/context_runner.dart:44:24) - -#48 run (package:flutter_tools/runner.dart:51:10) -#49 main (package:flutter_tools/executable.dart:51:9) - -#50 main (file:///Users/kylyu/development/flutter/packages/flutter_tools/bin/flutter_tools.dart:8:3) -#51 _startIsolate. (dart:isolate/runtime/libisolate_patch.dart:287:32) -#52 _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12) -``` - -## flutter doctor - -``` -[✓] Flutter (Channel beta, v0.11.3, on Mac OS X 10.14 18A389, locale fr-FR) - • Flutter version 0.11.3 at /Users/kylyu/development/flutter - • Framework revision 72bf075e8d (6 days ago), 2018-11-09 20:36:17 -0800 - • Engine revision 5646e86a6f - • Dart version 2.1.0 (build 2.1.0-dev.9.3 9c07fb64c4) - -[✓] Android toolchain - develop for Android devices (Android SDK 28.0.3) - • Android SDK at /Users/kylyu/Library/Android/sdk - • Android NDK location not configured (optional; useful for native profiling support) - • Platform android-28, build-tools 28.0.3 - • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java - • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06) - • All Android licenses accepted. - -[✓] iOS toolchain - develop for iOS devices (Xcode 10.1) - • Xcode at /Applications/Xcode.app/Contents/Developer - • Xcode 10.1, Build version 10B61 - • ios-deploy 2.0.0 - • CocoaPods version 1.5.3 - -[✓] Android Studio (version 3.2) - • Android Studio at /Applications/Android Studio.app/Contents - ✗ Flutter plugin not installed; this adds Flutter specific functionality. - ✗ Dart plugin not installed; this adds Dart specific functionality. - • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06) - -[✓] VS Code (version 1.29.0) - • VS Code at /Applications/Visual Studio Code.app/Contents - • Flutter extension version 2.20.0 - -[✓] Connected device (1 available) - • iPhone XR • C3A78E12-98C5-4CD6-8E3C-599D7A03250D • ios • iOS 12.1 (simulator) - -• No issues found! -``` diff --git a/example/lib/main.dart b/example/lib/main.dart index 678b59e..bc30f29 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -77,12 +77,13 @@ class _MyHomePageState extends State { // horizontalPadding: 8, bottomPadding: 5, avoidBottomInset: true, - color: Color(0xFF363636), + color: Color(0x33363636), providers: [ ProvidersTypes.google, ProvidersTypes.facebook, ProvidersTypes.twitter, - ProvidersTypes.email + ProvidersTypes.email, + ProvidersTypes.guest, ], twitterConsumerKey: "", twitterConsumerSecret: "", horizontalPadding: 12, diff --git a/lib/l10n/localization.dart b/lib/l10n/localization.dart index 9d09bb5..807d43c 100644 --- a/lib/l10n/localization.dart +++ b/lib/l10n/localization.dart @@ -51,6 +51,7 @@ class FFULocalizations { String get signInGoogle => _translationBundle.signInGoogle; String get signInEmail => _translationBundle.signInEmail; String get signInTwitter => _translationBundle.signInTwitter; + String get signInGuest => _translationBundle.signInGuest; String get errorOccurred => _translationBundle.errorOccurred; diff --git a/lib/l10n/translations.dart b/lib/l10n/translations.dart index 9a06409..6edcf8a 100644 --- a/lib/l10n/translations.dart +++ b/lib/l10n/translations.dart @@ -44,6 +44,7 @@ class TranslationBundle { String get signInGoogle => parent?.signInGoogle; String get signInEmail => parent?.signInEmail; String get signInTwitter => parent?.signInTwitter; + String get signInGuest => parent?.signInGuest; String get errorOccurred => parent?.errorOccurred; @@ -135,6 +136,9 @@ Connectez-vous avec $providerName pour continuer.'''; @override String get signInTwitter => r'Connexion avec Twitter'; + + @override + String get signInGuest => r"Continuer en tant qu'invité"; } // ignore: camel_case_types @@ -217,6 +221,9 @@ Sign in with $providerName to continue.'''; @override String get signInTwitter => r'Sign in with Twitter'; + + @override + String get signInGuest => r"Continue as a guest"; } // ignore: camel_case_types @@ -299,6 +306,9 @@ Mit $providerName anmelden um fortzufarhen.'''; @override String get signInTwitter => r'Mit Twitter anmelden'; + + @override + String get signInGuest => r"Als Gast fortfahren"; } // ignore: camel_case_types @@ -378,6 +388,9 @@ Faça login com o $providerName para continuar.'''; @override String get signInEmail => r'Login com o e-mail'; + + @override + String get signInGuest => r"Continuar como convidado"; } // ignore: camel_case_types @@ -459,6 +472,9 @@ Entra con $providerName para continuar.'''; @override String get signInTwitter => r'Entrar con Twitter'; } + @override + String get signInGuest => r"Continua como invitado"; + TranslationBundle translationBundleForLocale(Locale locale) { switch (locale.languageCode) { diff --git a/lib/login_view.dart b/lib/login_view.dart index b980135..39d5bcf 100644 --- a/lib/login_view.dart +++ b/lib/login_view.dart @@ -33,8 +33,7 @@ class _LoginViewState extends State { Map _buttons; _handleEmailSignIn() async { - String value = await Navigator.of(context) - .push(new MaterialPageRoute(builder: (BuildContext context) { + String value = await Navigator.of(context).push(new MaterialPageRoute(builder: (BuildContext context) { return new EmailView(widget.passwordCheck); })); @@ -43,14 +42,24 @@ class _LoginViewState extends State { } } + _handleGuestSignIn() async { + try { + AuthResult authResult = await _auth.signInAnonymously(); + FirebaseUser user = authResult.user; + print(user); + } catch (e) { + showErrorDialog(context, e.details ?? e.message); + } + } + _handleGoogleSignIn() async { GoogleSignInAccount googleUser = await googleSignIn.signIn(); if (googleUser != null) { GoogleSignInAuthentication googleAuth = await googleUser.authentication; if (googleAuth.accessToken != null) { try { - AuthCredential credential = GoogleAuthProvider.getCredential( - idToken: googleAuth.idToken, accessToken: googleAuth.accessToken); + AuthCredential credential = + GoogleAuthProvider.getCredential(idToken: googleAuth.idToken, accessToken: googleAuth.accessToken); AuthResult authResult = await _auth.signInWithCredential(credential); FirebaseUser user = authResult.user; print(user); @@ -62,12 +71,10 @@ class _LoginViewState extends State { } _handleFacebookSignin() async { - FacebookLoginResult result = - await facebookLogin.logIn(['email']); + FacebookLoginResult result = await facebookLogin.logIn(['email']); if (result.accessToken != null) { try { - AuthCredential credential = FacebookAuthProvider.getCredential( - accessToken: result.accessToken.token); + AuthCredential credential = FacebookAuthProvider.getCredential(accessToken: result.accessToken.token); AuthResult authResult = await _auth.signInWithCredential(credential); FirebaseUser user = authResult.user; print(user); @@ -87,9 +94,8 @@ class _LoginViewState extends State { switch (result.status) { case TwitterLoginStatus.loggedIn: - AuthCredential credential = TwitterAuthProvider.getCredential( - authToken: result.session.token, - authTokenSecret: result.session.secret); + AuthCredential credential = + TwitterAuthProvider.getCredential(authToken: result.session.token, authTokenSecret: result.session.secret); await _auth.signInWithCredential(credential); break; case TwitterLoginStatus.cancelledByUser: @@ -105,16 +111,15 @@ class _LoginViewState extends State { Widget build(BuildContext context) { _buttons = { ProvidersTypes.facebook: - providersDefinitions(context)[ProvidersTypes.facebook] - .copyWith(onSelected: _handleFacebookSignin), + providersDefinitions(context)[ProvidersTypes.facebook].copyWith(onSelected: _handleFacebookSignin), ProvidersTypes.google: - providersDefinitions(context)[ProvidersTypes.google] - .copyWith(onSelected: _handleGoogleSignIn), + providersDefinitions(context)[ProvidersTypes.google].copyWith(onSelected: _handleGoogleSignIn), ProvidersTypes.twitter: - providersDefinitions(context)[ProvidersTypes.twitter] - .copyWith(onSelected: _handleTwitterSignin), - ProvidersTypes.email: providersDefinitions(context)[ProvidersTypes.email] - .copyWith(onSelected: _handleEmailSignIn), + providersDefinitions(context)[ProvidersTypes.twitter].copyWith(onSelected: _handleTwitterSignin), + ProvidersTypes.email: + providersDefinitions(context)[ProvidersTypes.email].copyWith(onSelected: _handleEmailSignIn), + ProvidersTypes.guest: + providersDefinitions(context)[ProvidersTypes.guest].copyWith(onSelected: _handleGuestSignIn), }; return new Container( @@ -122,8 +127,7 @@ class _LoginViewState extends State { child: new Column( children: widget.providers.map((p) { return new Container( - padding: EdgeInsets.only(bottom: widget.bottomPadding), - child: _buttons[p] ?? new Container()); + padding: EdgeInsets.only(bottom: widget.bottomPadding), child: _buttons[p] ?? new Container()); }).toList())); } diff --git a/lib/utils.dart b/lib/utils.dart index d2df431..6017f38 100644 --- a/lib/utils.dart +++ b/lib/utils.dart @@ -1,13 +1,12 @@ import 'dart:async'; import 'package:firebase_auth/firebase_auth.dart'; +import 'package:firebase_ui/l10n/localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_facebook_login/flutter_facebook_login.dart'; import 'package:google_sign_in/google_sign_in.dart'; -import 'package:firebase_ui/l10n/localization.dart'; - -enum ProvidersTypes { email, google, facebook, twitter, phone } +enum ProvidersTypes { email, google, facebook, twitter, guest, phone } final GoogleSignIn googleSignIn = new GoogleSignIn(); final FacebookLogin facebookLogin = new FacebookLogin(); @@ -17,6 +16,7 @@ ProvidersTypes stringToProvidersType(String value) { if (value.toLowerCase().contains('google')) return ProvidersTypes.google; if (value.toLowerCase().contains('password')) return ProvidersTypes.email; if (value.toLowerCase().contains('twitter')) return ProvidersTypes.twitter; + if (value.toLowerCase().contains('guest')) return ProvidersTypes.guest; //TODO if (value.toLowerCase().contains('phone')) return ProvidersTypes.phone; return null; } @@ -27,13 +27,15 @@ class ButtonDescription extends StatelessWidget { final Color labelColor; final Color color; final String logo; + final IconData icon; final String name; final VoidCallback onSelected; const ButtonDescription( - {@required this.logo, - @required this.label, + {@required this.label, @required this.name, + this.logo, + this.icon, this.onSelected, this.labelColor = Colors.grey, this.color = Colors.white}); @@ -43,6 +45,7 @@ class ButtonDescription extends StatelessWidget { Color labelColor, Color color, String logo, + IconData icon, String name, VoidCallback onSelected, }) { @@ -51,6 +54,7 @@ class ButtonDescription extends StatelessWidget { labelColor: labelColor ?? this.labelColor, color: color ?? this.color, logo: logo ?? this.logo, + icon: icon ?? this.icon, name: name ?? this.name, onSelected: onSelected ?? this.onSelected); } @@ -63,23 +67,22 @@ class ButtonDescription extends StatelessWidget { child: new Row( children: [ new Container( - padding: const EdgeInsets.fromLTRB(16.0, 16.0, 32.0, 16.0), - child: new Image.asset('assets/$logo', package: 'firebase_ui')), + padding: const EdgeInsets.fromLTRB(16.0, 16.0, 32.0, 16.0), + child: icon != null ? Icon(icon, color: labelColor, size: 30 ) : Image.asset('assets/$logo', package: 'firebase_ui'), + ), new Expanded( child: new Text( label, style: new TextStyle(color: labelColor), ), - ) + ), ], ), onPressed: _onSelected); } } -Map providersDefinitions( - BuildContext context) => - { +Map providersDefinitions(BuildContext context) => { ProvidersTypes.facebook: new ButtonDescription( color: const Color.fromRGBO(59, 87, 157, 1.0), logo: "fb-logo.png", @@ -91,7 +94,7 @@ Map providersDefinitions( logo: "go-logo.png", label: FFULocalizations.of(context).signInGoogle, name: "Google", - labelColor: Colors.grey), + labelColor: Colors.black54), ProvidersTypes.email: new ButtonDescription( color: const Color.fromRGBO(219, 68, 55, 1.0), logo: "email-logo.png", @@ -104,35 +107,40 @@ Map providersDefinitions( label: FFULocalizations.of(context).signInTwitter, name: "Twitter", labelColor: Colors.white), + ProvidersTypes.guest: new ButtonDescription( + color: const Color.fromRGBO(244, 180, 0, 1.0), + icon: Icons.person, + label: FFULocalizations.of(context).signInGuest, + name: "guest", + labelColor: Colors.white), }; -Future showErrorDialog(BuildContext context, String message, - {String title}) { +Future showErrorDialog(BuildContext context, String message, {String title}) { return showDialog( context: context, barrierDismissible: false, // user must tap button! builder: (BuildContext context) => new AlertDialog( - title: title != null ? new Text(title) : null, - content: new SingleChildScrollView( - child: new ListBody( - children: [ - new Text(message ?? FFULocalizations.of(context).errorOccurred), - ], - ), - ), - actions: [ - new FlatButton( - child: new Row( - children: [ - new Text(FFULocalizations.of(context).cancelButtonLabel), - ], - ), - onPressed: () { - Navigator.of(context).pop(); - }, - ), + title: title != null ? new Text(title) : null, + content: new SingleChildScrollView( + child: new ListBody( + children: [ + new Text(message ?? FFULocalizations.of(context).errorOccurred), ], ), + ), + actions: [ + new FlatButton( + child: new Row( + children: [ + new Text(FFULocalizations.of(context).cancelButtonLabel), + ], + ), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + ], + ), ); } diff --git a/pubspec.yaml b/pubspec.yaml index 2561f08..7c0cad9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: firebase_ui description: Firebase auth UI, dart package to mimic the firebaseUI(Google,Facebook,Twitter,Email supported) -version: 1.0.8 +version: 1.0.10 author: Nicholas Bowler homepage: https://github.com/Maliffic/firebase_ui @@ -11,11 +11,11 @@ dependencies: flutter: sdk: flutter - flutter_twitter: ^1.1.2 + flutter_twitter: ^1.1.3 - firebase_auth: ^0.14.0+5 - - google_sign_in: ^4.0.4 + firebase_auth: ^0.15.3 + + google_sign_in: ^4.1.1 flutter_facebook_login: ^3.0.0 dev_dependencies: