Firebase UI Auth
Firebase UI Auth widgets for Flutter, ported to Forui. Drop in sign-in, registration, profile, and related auth screens.
Requires Dart ^3.13.0, Flutter 3.47+, and an FTheme ancestor.
Migrating from firebase_ui_auth
See Migrating from upstream Firebase UI in the repository README (firebase_ui_* → forui_firebase_ui_*).
Platform support
Auth UI support follows FlutterFire Authentication (macOS beta; Windows development-only). Linux is not supported by FlutterFire.
| Feature/platform | Android | iOS | Web | macOS | Windows |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ (1) | |
| Phone | ✓ | ✓ | ✓ | ╳ | ╳ |
| Email link | ✓ | ✓ | ╳ | ╳ | ╳ |
| Email verification | ✓ | ✓ | ✓ (2) | ✓ (2) | ✓ (1) |
| Sign in with Apple | ✓ | ✓ | ✓ | ✓ | ╳ |
| Google Sign in | ✓ | ✓ | ✓ | ✓ | ✓ (1) |
| Twitter Login | ✓ | ✓ | ✓ | ✓ | ✓ (1) |
| Facebook Sign in | ✓ | ✓ | ✓ | ✓ | ✓ (1) |
- Windows via FlutterFire is development-only; production is not supported
- No deep-linking into app, so email verification link opens a web page
Installation
flutter pub add forui_firebase_ui_auth forui
Example
import 'package:flutter/material.dart';
import 'package:forui/forui.dart';
import 'package:firebase_auth/firebase_auth.dart' hide EmailAuthProvider;
import 'package:forui_firebase_ui_auth/forui_firebase_ui_auth.dart';
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
final providers = [EmailAuthProvider()];
return MaterialApp(
builder: (context, child) => FTheme(
data: FTheme.neutral.light.touch,
child: child!,
),
initialRoute:
FirebaseAuth.instance.currentUser == null ? '/sign-in' : '/profile',
routes: {
'/sign-in': (context) {
return SignInScreen(
providers: providers,
actions: [
AuthStateChangeAction<UserCreated>((context, state) {
Navigator.pushReplacementNamed(context, '/profile');
}),
AuthStateChangeAction<SignedIn>((context, state) {
Navigator.pushReplacementNamed(context, '/profile');
}),
],
);
},
'/profile': (context) {
return ProfileScreen(
providers: providers,
actions: [
SignedOutAction((context) {
Navigator.pushReplacementNamed(context, '/sign-in');
}),
],
);
},
},
);
}
}
Profile screen icons
If you're using ProfileScreen, add:
fonts:
- family: SocialIcons
fonts:
- asset: packages/forui_firebase_ui_auth/fonts/SocialIcons.ttf
OAuth
This package owns OAuthProvider, OAuth button widgets, and styles. Concrete providers come from forui_firebase_ui_oauth_* (they depend on forui_firebase_ui_oauth, which depends on this package — not the reverse). See OAuth package layout.