mirror of
https://github.com/Iconica-Development/flutter_login_widget.git
synced 2025-05-19 13:43:44 +02:00
refactor
This commit is contained in:
parent
dab2b7fb6e
commit
f0be8a8c79
5 changed files with 122 additions and 115 deletions
|
@ -8,8 +8,18 @@ abstract class LoginRepository {
|
||||||
String loginError = '';
|
String loginError = '';
|
||||||
String getLoginError() => loginError;
|
String getLoginError() => loginError;
|
||||||
Future<bool> login(String username, String password);
|
Future<bool> login(String username, String password);
|
||||||
Future<LoginUser?> signInWithSocial(SocialLoginBundle bundle);
|
|
||||||
Future sendLoginEmail(String input);
|
Future sendLoginEmail(String input);
|
||||||
|
|
||||||
|
Future<bool> forgotPassword(String email);
|
||||||
|
Future<bool> isRegistrationRequired(LoginUser user);
|
||||||
|
Future<void> reLogin({required VoidCallback onLoggedIn});
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class LoginRespositoryWithAnonymous extends LoginRepository {
|
||||||
|
Future<LoginUser?> signInAnonymous();
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class LoginRespositoryWithPhoneNumber extends LoginRepository {
|
||||||
Future<void> trySignInWithPhoneNumber({
|
Future<void> trySignInWithPhoneNumber({
|
||||||
required String phoneNumber,
|
required String phoneNumber,
|
||||||
void Function(
|
void Function(
|
||||||
|
@ -27,8 +37,8 @@ abstract class LoginRepository {
|
||||||
String phoneNumber, {
|
String phoneNumber, {
|
||||||
LoginConfirmationResult? resultWeb,
|
LoginConfirmationResult? resultWeb,
|
||||||
});
|
});
|
||||||
Future<bool> forgotPassword(String email);
|
}
|
||||||
Future<bool> isRegistrationRequired(LoginUser user);
|
|
||||||
Future<void> reLogin({required VoidCallback onLoggedIn});
|
abstract class LoginRepositoryWithSocial extends LoginRepository {
|
||||||
Future<LoginUser?> signInAnonymous();
|
Future<LoginUser?> signInWithSocial(SocialLoginBundle bundle);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
import 'dart:async';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_login/flutter_login_view.dart';
|
import 'package:flutter_login/flutter_login_view.dart';
|
||||||
import '../../extensions/widget.dart';
|
import '../../extensions/widget.dart';
|
||||||
|
|
||||||
import 'resend.dart';
|
import 'resend.dart';
|
||||||
|
|
||||||
class LoginAwaitEmailScreen extends StatefulWidget {
|
class LoginAwaitEmailScreen extends StatefulWidget {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_login/backend/login_repository.dart';
|
||||||
import 'package:flutter_login/flutter_login_view.dart';
|
import 'package:flutter_login/flutter_login_view.dart';
|
||||||
import 'package:intl_phone_number_input/intl_phone_number_input.dart';
|
import 'package:intl_phone_number_input/intl_phone_number_input.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
@ -30,6 +31,10 @@ class LoginPhoneNumberState extends State<LoginPhoneNumber>
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
var config = FlutterLogin.of(context).config;
|
||||||
|
var repository =
|
||||||
|
context.loginRepository() as LoginRespositoryWithPhoneNumber;
|
||||||
|
|
||||||
return Material(
|
return Material(
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
backgroundColor: Theme.of(context).backgroundColor,
|
backgroundColor: Theme.of(context).backgroundColor,
|
||||||
|
@ -99,12 +104,7 @@ class LoginPhoneNumberState extends State<LoginPhoneNumber>
|
||||||
],
|
],
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(top: 10),
|
padding: const EdgeInsets.only(top: 10),
|
||||||
child: context
|
child: config.appTheme.buttons.primaryButton(
|
||||||
.login()
|
|
||||||
.config
|
|
||||||
.appTheme
|
|
||||||
.buttons
|
|
||||||
.primaryButton(
|
|
||||||
context: context,
|
context: context,
|
||||||
isLoading: _loading,
|
isLoading: _loading,
|
||||||
isDisabled: _loading,
|
isDisabled: _loading,
|
||||||
|
@ -121,9 +121,7 @@ class LoginPhoneNumberState extends State<LoginPhoneNumber>
|
||||||
errorMsg = null;
|
errorMsg = null;
|
||||||
_loading = true;
|
_loading = true;
|
||||||
});
|
});
|
||||||
context
|
repository.trySignInWithPhoneNumber(
|
||||||
.loginRepository()
|
|
||||||
.trySignInWithPhoneNumber(
|
|
||||||
phoneNumber: phoneNumber!,
|
phoneNumber: phoneNumber!,
|
||||||
onCodeSent: (
|
onCodeSent: (
|
||||||
verificationId,
|
verificationId,
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_login/flutter_login_view.dart';
|
import 'package:flutter_login/flutter_login_view.dart';
|
||||||
import 'package:pinput/pinput.dart';
|
import 'package:pinput/pinput.dart';
|
||||||
|
import '../../backend/login_repository.dart';
|
||||||
import '../../extensions/widget.dart';
|
import '../../extensions/widget.dart';
|
||||||
|
|
||||||
class LoginPhoneNumberVerify extends StatefulWidget {
|
class LoginPhoneNumberVerify extends StatefulWidget {
|
||||||
|
@ -35,6 +36,10 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
var config = FlutterLogin.of(context).config;
|
||||||
|
var repository =
|
||||||
|
context.loginRepository() as LoginRespositoryWithPhoneNumber;
|
||||||
|
|
||||||
return Material(
|
return Material(
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
backgroundColor: Theme.of(context).backgroundColor,
|
backgroundColor: Theme.of(context).backgroundColor,
|
||||||
|
@ -48,7 +53,7 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
|
||||||
top: 10,
|
top: 10,
|
||||||
left: 5,
|
left: 5,
|
||||||
),
|
),
|
||||||
child: context.login().config.appTheme.buttons.backButton(
|
child: config.appTheme.buttons.backButton(
|
||||||
context: context,
|
context: context,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -81,8 +86,7 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
|
||||||
errorMsg = false;
|
errorMsg = false;
|
||||||
}),
|
}),
|
||||||
onCompleted: (String code) async {
|
onCompleted: (String code) async {
|
||||||
var user =
|
var user = await repository.signInWithSMSCode(
|
||||||
await context.loginRepository().signInWithSMSCode(
|
|
||||||
widget.verificationId,
|
widget.verificationId,
|
||||||
code,
|
code,
|
||||||
widget.phoneNumber,
|
widget.phoneNumber,
|
||||||
|
@ -129,7 +133,7 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
|
||||||
style: Theme.of(context).textTheme.bodyText1,
|
style: Theme.of(context).textTheme.bodyText1,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
context.login().config.appTheme.buttons.tertiaryButton(
|
config.appTheme.buttons.tertiaryButton(
|
||||||
context: context,
|
context: context,
|
||||||
child: Text(
|
child: Text(
|
||||||
context.translate(
|
context.translate(
|
||||||
|
@ -138,9 +142,7 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
|
||||||
style: Theme.of(context).textTheme.bodyText1,
|
style: Theme.of(context).textTheme.bodyText1,
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
context
|
repository.trySignInWithPhoneNumber(
|
||||||
.loginRepository()
|
|
||||||
.trySignInWithPhoneNumber(
|
|
||||||
phoneNumber: widget.phoneNumber,
|
phoneNumber: widget.phoneNumber,
|
||||||
onCodeSent: (
|
onCodeSent: (
|
||||||
verificationId,
|
verificationId,
|
||||||
|
@ -150,8 +152,7 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
|
||||||
this.verificationId = verificationId;
|
this.verificationId = verificationId;
|
||||||
this.resultWeb = resultWeb;
|
this.resultWeb = resultWeb;
|
||||||
pinPutController.clear();
|
pinPutController.clear();
|
||||||
ScaffoldMessenger.of(context)
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
.showSnackBar(
|
|
||||||
SnackBar(
|
SnackBar(
|
||||||
content: Text(
|
content: Text(
|
||||||
context.translate(
|
context.translate(
|
||||||
|
@ -161,8 +162,7 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
onAutoLogin: (user) =>
|
onAutoLogin: (user) => widget.onLogin.call(user),
|
||||||
widget.onLogin.call(user),
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_login/backend/login_repository.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import '../../flutter_login_view.dart';
|
import '../../flutter_login_view.dart';
|
||||||
|
|
||||||
|
@ -15,7 +16,7 @@ class LoginSocialButtons extends StatelessWidget {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var config = FlutterLogin.of(context).config;
|
var config = FlutterLogin.of(context).config;
|
||||||
var repository = context.loginRepository();
|
var repository = context.loginRepository() as LoginRepositoryWithSocial;
|
||||||
|
|
||||||
return Column(
|
return Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
|
Loading…
Reference in a new issue