feat: Implement Twitter (X) login using OAuth 2.0 PKCE flow via webview.

This commit is contained in:
pradeepkumar
2026-03-26 11:53:36 +05:30
parent 22187c8b13
commit 0466341f62
8 changed files with 272 additions and 49 deletions

View File

@@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:real_estate_mobile/core/constants/app_colors.dart';
import 'package:real_estate_mobile/features/auth/presentation/providers/auth_provider.dart';
import 'package:real_estate_mobile/features/auth/presentation/screens/twitter_login_screen.dart';
class SocialLoginButtons extends ConsumerWidget {
const SocialLoginButtons({super.key});
@@ -17,6 +18,16 @@ class SocialLoginButtons extends ConsumerWidget {
);
}
Future<void> _handleTwitterLogin(BuildContext context, WidgetRef ref) async {
final result = await Navigator.push<Map<String, dynamic>?>(
context,
MaterialPageRoute(builder: (_) => const TwitterLoginScreen()),
);
if (result != null) {
ref.read(authProvider.notifier).completeTwitterLogin(result);
}
}
@override
Widget build(BuildContext context, WidgetRef ref) {
final authState = ref.watch(authProvider);
@@ -51,7 +62,7 @@ class SocialLoginButtons extends ConsumerWidget {
_SocialButton(
onTap: isLoading
? null
: () => ref.read(authProvider.notifier).signInWithTwitter(),
: () => _handleTwitterLogin(context, ref),
child: SvgPicture.asset(
'assets/icons/x.svg',
width: 24,