Skip to content

Commit 3f5ca80

Browse files
authored
fix(ui_auth): allow to pass actions to the RegisterScreen (#10025)
1 parent a0910a1 commit 3f5ca80

File tree

1 file changed

+49
-15
lines changed

1 file changed

+49
-15
lines changed

packages/firebase_ui_auth/lib/src/screens/register_screen.dart

+49-15
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,36 @@ class RegisterScreen extends MultiProviderScreen {
3232
/// {@macro ui.auth.screens.responsive_page.desktop_layout_direction}
3333
final TextDirection? desktopLayoutDirection;
3434

35+
/// [RegisterScreen] could invoke these actions:
36+
///
37+
/// * [EmailLinkSignInAction]
38+
/// * [VerifyPhoneAction]
39+
/// * [AuthStateChangeAction]
40+
///
41+
/// These actions could be used to trigger route transtion or display
42+
/// a dialog.
43+
///
44+
/// ```dart
45+
/// SignInScreen(
46+
/// actions: [
47+
/// VerifyPhoneAction((context, _) {
48+
/// Navigator.pushNamed(context, '/phone');
49+
/// }),
50+
/// AuthStateChangeAction<SignedIn>((context, state) {
51+
/// if (!state.user!.emailVerified) {
52+
/// Navigator.pushNamed(context, '/verify-email');
53+
/// } else {
54+
/// Navigator.pushReplacementNamed(context, '/profile');
55+
/// }
56+
/// }),
57+
/// EmailLinkSignInAction((context) {
58+
/// Navigator.pushReplacementNamed(context, '/email-link-sign-in');
59+
/// }),
60+
/// ],
61+
/// )
62+
/// ```
63+
final List<FirebaseUIAction>? actions;
64+
3565
/// An email that [EmailForm] should be pre-filled with.
3666
final String? email;
3767

@@ -62,6 +92,7 @@ class RegisterScreen extends MultiProviderScreen {
6292
Key? key,
6393
FirebaseAuth? auth,
6494
List<AuthProvider>? providers,
95+
this.actions,
6596
this.headerMaxExtent,
6697
this.headerBuilder,
6798
this.sideBuilder,
@@ -78,21 +109,24 @@ class RegisterScreen extends MultiProviderScreen {
78109

79110
@override
80111
Widget build(BuildContext context) {
81-
return LoginScreen(
82-
styles: styles,
83-
action: AuthAction.signUp,
84-
providers: providers,
85-
resizeToAvoidBottomInset: resizeToAvoidBottomInset,
86-
auth: auth,
87-
headerMaxExtent: headerMaxExtent,
88-
headerBuilder: headerBuilder,
89-
sideBuilder: sideBuilder,
90-
desktopLayoutDirection: desktopLayoutDirection,
91-
oauthButtonVariant: oauthButtonVariant,
92-
email: email,
93-
showAuthActionSwitch: showAuthActionSwitch,
94-
subtitleBuilder: subtitleBuilder,
95-
footerBuilder: footerBuilder,
112+
return FirebaseUIActions(
113+
actions: actions ?? [],
114+
child: LoginScreen(
115+
styles: styles,
116+
action: AuthAction.signUp,
117+
providers: providers,
118+
resizeToAvoidBottomInset: resizeToAvoidBottomInset,
119+
auth: auth,
120+
headerMaxExtent: headerMaxExtent,
121+
headerBuilder: headerBuilder,
122+
sideBuilder: sideBuilder,
123+
desktopLayoutDirection: desktopLayoutDirection,
124+
oauthButtonVariant: oauthButtonVariant,
125+
email: email,
126+
showAuthActionSwitch: showAuthActionSwitch,
127+
subtitleBuilder: subtitleBuilder,
128+
footerBuilder: footerBuilder,
129+
),
96130
);
97131
}
98132
}

0 commit comments

Comments
 (0)