Skip to content

Commit

Permalink
feat(ui_shared): extract common widgets to a shared library (#10620)
Browse files Browse the repository at this point in the history
* feat(ui_shared): ThemedColor added

* add more widgets

* drop comments from pubspec

* more tests

* release preparations

* more API docs

* lower sdk constraint to match everything else
  • Loading branch information
lesnitsky authored Mar 22, 2023
1 parent 39d77c4 commit 15c1e85
Show file tree
Hide file tree
Showing 65 changed files with 857 additions and 115 deletions.
1 change: 1 addition & 0 deletions packages/firebase_ui_auth/example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ dependencies:
firebase_ui_oauth_twitter: ^1.0.24
dev_dependencies:
drive: ^1.0.0-1.0.nullsafety.1
firebase_ui_shared: ^1.0.0
flutter_facebook_auth: ^4.4.1
flutter_driver:
sdk: flutter
Expand Down
4 changes: 3 additions & 1 deletion packages/firebase_ui_auth/example/pubspec_overrides.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# melos_managed_dependency_overrides: _flutterfire_internals,firebase_auth,firebase_auth_platform_interface,firebase_auth_web,firebase_core,firebase_core_platform_interface,firebase_core_web,firebase_dynamic_links,firebase_dynamic_links_platform_interface,firebase_ui_auth,firebase_ui_localizations,firebase_ui_oauth,firebase_ui_oauth_apple,firebase_ui_oauth_facebook,firebase_ui_oauth_google,firebase_ui_oauth_twitter
# melos_managed_dependency_overrides: _flutterfire_internals,firebase_auth,firebase_auth_platform_interface,firebase_auth_web,firebase_core,firebase_core_platform_interface,firebase_core_web,firebase_dynamic_links,firebase_dynamic_links_platform_interface,firebase_ui_auth,firebase_ui_localizations,firebase_ui_oauth,firebase_ui_oauth_apple,firebase_ui_oauth_facebook,firebase_ui_oauth_google,firebase_ui_oauth_twitter,firebase_ui_shared
dependency_overrides:
intl: ^0.18.0
_flutterfire_internals:
Expand Down Expand Up @@ -33,3 +33,5 @@ dependency_overrides:
path: ../../firebase_ui_oauth_google
firebase_ui_oauth_twitter:
path: ../../firebase_ui_oauth_twitter
firebase_ui_shared:
path: ../../firebase_ui_shared
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
Expand Down
4 changes: 2 additions & 2 deletions packages/firebase_ui_auth/lib/firebase_ui_auth.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_ui_oauth/firebase_ui_oauth.dart';
import 'package:flutter/widgets.dart';

export 'package:firebase_ui_shared/firebase_ui_shared.dart' show ButtonVariant;

import 'src/actions.dart';
import 'src/oauth_providers.dart';
import 'src/providers/auth_provider.dart';
Expand Down Expand Up @@ -37,7 +39,6 @@ export 'src/flows/phone_auth_flow.dart';
export 'src/flows/universal_email_sign_in_flow.dart';
// ignore_for_file: use_build_context_synchronously

export 'src/loading_indicator.dart';
export 'src/mfa.dart' show startMFAVerification;
export 'src/navigation/authentication.dart';
export 'src/navigation/forgot_password.dart';
Expand Down Expand Up @@ -84,7 +85,6 @@ export 'src/widgets/error_text.dart' show ErrorText;
export 'src/widgets/forgot_password_button.dart';
export 'src/widgets/internal/oauth_provider_button.dart'
show OAuthProviderButton, OAuthButtonVariant;
export 'src/widgets/internal/universal_button.dart' show ButtonVariant;
export 'src/widgets/layout_flow_aware_padding.dart';
export 'src/widgets/password_input.dart';
export 'src/widgets/phone_input.dart' show PhoneInputState, PhoneInput;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_auth/firebase_auth.dart' hide EmailAuthProvider;
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/widgets.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';

import 'internal/provider_screen.dart';
import 'internal/responsive_page.dart';
import '../widgets/internal/universal_scaffold.dart';

/// {@template ui.auth.screens.email_link_sign_in_screen}
/// A screen that provides a UI for authentication using email link.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,13 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/material.dart' hide Title;
import 'package:flutter/scheduler.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';

import '../widgets/internal/loading_button.dart';
import '../widgets/internal/title.dart';
import '../widgets/internal/universal_button.dart';
import '../widgets/internal/universal_scaffold.dart';

import 'internal/responsive_page.dart';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';

import '../widgets/internal/universal_scaffold.dart';
import 'internal/responsive_page.dart';

/// A password reset screen.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/widgets.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_auth/firebase_auth.dart' show FirebaseAuth;

import '../../widgets/internal/universal_scaffold.dart';

import 'responsive_page.dart';

class LoginScreen extends StatelessWidget {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@

import 'package:firebase_auth/firebase_auth.dart'
show FirebaseAuth, MultiFactorSession, PhoneMultiFactorInfo;
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/widgets.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';

import '../widgets/internal/universal_button.dart';
import '../widgets/internal/universal_page_route.dart';
import '../widgets/internal/universal_scaffold.dart';

import 'internal/responsive_page.dart';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import 'package:firebase_auth/firebase_auth.dart'
PhoneAuthCredential,
PhoneMultiFactorGenerator,
User;
import 'package:firebase_ui_auth/src/widgets/internal/universal_icon.dart';
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/cupertino.dart' hide Title;
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';
import 'package:flutter/material.dart' hide Title;
Expand All @@ -20,8 +20,6 @@ import 'package:firebase_ui_oauth/firebase_ui_oauth.dart'
hide OAuthProviderButtonBase;
import 'package:flutter/services.dart';

import '../widgets/internal/loading_button.dart';
import '../widgets/internal/universal_button.dart';
import '../widgets/internal/rebuild_scope.dart';
import '../widgets/internal/subtitle.dart';
import '../widgets/internal/universal_icon_button.dart';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_auth/firebase_auth.dart' show FirebaseAuth;
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/material.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';

import '../widgets/internal/universal_button.dart';
import '../widgets/internal/universal_scaffold.dart';
import '../screens/internal/responsive_page.dart';

/// A screen displaying a UI which allows users to enter an SMS validation code
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/material.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import '../widgets/internal/universal_page_route.dart';
import '../widgets/internal/universal_scaffold.dart';
import 'internal/multi_provider_screen.dart';

/// A screen that allows to resolve previously used providers for a given email.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/widgets.dart' hide Title;
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';

import '../widgets/internal/loading_button.dart';
import '../widgets/internal/title.dart';

/// {@template ui.auth.views.email_link_sign_in_view}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/material.dart' hide Title;
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';
import '../widgets/internal/loading_button.dart';

import '../widgets/internal/title.dart';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,13 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/material.dart' hide Title;

import 'package:firebase_auth/firebase_auth.dart'
show ActionCodeSettings, FirebaseAuth, FirebaseAuthException;
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';
import '../widgets/internal/universal_button.dart';

import '../widgets/internal/loading_button.dart';
import '../widgets/internal/title.dart';

/// {@template ui.auth.views.forgot_password_view}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/widgets.dart' hide Title;
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';
import '../widgets/internal/universal_button.dart';

import '../widgets/internal/title.dart';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/material.dart';

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';

import '../widgets/internal/universal_button.dart';

typedef SMSCodeSubmitCallback = void Function(String smsCode);

/// {@template ui.auth.views.sms_code_input_view}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@ import 'package:firebase_auth/firebase_auth.dart'
show FirebaseAuth, FirebaseAuthException;
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

import '../widgets/internal/loading_button.dart';

typedef DeleteFailedCallback = void Function(Exception exception);
typedef SignInRequiredCallback = Future<bool> Function();

Expand All @@ -29,16 +28,16 @@ class DeleteAccountButton extends StatefulWidget {
/// A callback that is called if the account deletion fails.
final DeleteFailedCallback? onDeleteFailed;

/// {@macro ui.auth.widgets.button_variant}
final ButtonVariant? variant;
/// {@macro ui.shared.widgets.button_variant}
final ButtonVariant variant;

/// {@macro ui.auth.widgets.delete_account_button}
const DeleteAccountButton({
Key? key,
this.auth,
this.onSignInRequired,
this.onDeleteFailed,
this.variant,
this.variant = ButtonVariant.filled,
}) : super(key: key);

@override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/material.dart' hide Title;
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';

import '../widgets/internal/title.dart';
import 'internal/universal_button.dart';

/// {@template ui.auth.widgets.different_method_sign_in_dialog}
/// A dialog that is shown when the user tries to sign in with a provider that
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_auth/firebase_auth.dart' show FirebaseAuth;
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/cupertino.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';
import 'package:flutter/material.dart';

Expand Down
4 changes: 2 additions & 2 deletions packages/firebase_ui_auth/lib/src/widgets/email_form.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
import 'package:firebase_auth/firebase_auth.dart' show FirebaseAuth;
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/material.dart';

import '../widgets/internal/loading_button.dart';
import '../validators.dart';

/// {@template ui.auth.widgets.email_form.forgot_password_action}
Expand Down Expand Up @@ -56,7 +56,7 @@ typedef EmailFormSubmitCallback = void Function(String email, String password);
/// {@endtemplate}
class EmailFormStyle extends FirebaseUIStyle {
/// A [ButtonVariant] that should be used for the sign in button.
final ButtonVariant? signInButtonVariant;
final ButtonVariant signInButtonVariant;

/// An override of the global [ThemeData.inputDecorationTheme].
final InputDecorationTheme? inputDecorationTheme;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';

import 'internal/universal_button.dart';
import 'internal/universal_page_route.dart';

/// {@template ui.auth.widget.email_link_sign_in_button}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';

import 'internal/universal_button.dart';

/// {@template ui.auth.widget.forgot_password_button}
/// A button that has a localized "Forgot password" label.
/// {@endtemplate}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_auth/firebase_auth.dart' hide OAuthProvider;
import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/material.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

import 'platform_widget.dart';

class Subtitle extends PlatformWidget {
final String text;
final FontWeight? fontWeight;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

import 'platform_widget.dart';

class Title extends PlatformWidget {
final String text;
const Title({Key? key, required this.text}) : super(key: key);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:firebase_ui_shared/firebase_ui_shared.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

import 'platform_widget.dart';

class UniversalIconButton extends PlatformWidget {
final IconData cupertinoIcon;
final IconData materialIcon;
Expand Down
Loading

0 comments on commit 15c1e85

Please sign in to comment.