This commit is contained in:
Stein Milder 2022-09-21 16:11:23 +02:00
parent dab2b7fb6e
commit f0be8a8c79
5 changed files with 122 additions and 115 deletions

View file

@ -8,8 +8,18 @@ abstract class LoginRepository {
String loginError = '';
String getLoginError() => loginError;
Future<bool> login(String username, String password);
Future<LoginUser?> signInWithSocial(SocialLoginBundle bundle);
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({
required String phoneNumber,
void Function(
@ -27,8 +37,8 @@ abstract class LoginRepository {
String phoneNumber, {
LoginConfirmationResult? resultWeb,
});
Future<bool> forgotPassword(String email);
Future<bool> isRegistrationRequired(LoginUser user);
Future<void> reLogin({required VoidCallback onLoggedIn});
Future<LoginUser?> signInAnonymous();
}
abstract class LoginRepositoryWithSocial extends LoginRepository {
Future<LoginUser?> signInWithSocial(SocialLoginBundle bundle);
}

View file

@ -1,8 +1,6 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_login/flutter_login_view.dart';
import '../../extensions/widget.dart';
import 'resend.dart';
class LoginAwaitEmailScreen extends StatefulWidget {

View file

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_login/backend/login_repository.dart';
import 'package:flutter_login/flutter_login_view.dart';
import 'package:intl_phone_number_input/intl_phone_number_input.dart';
import 'package:shared_preferences/shared_preferences.dart';
@ -30,6 +31,10 @@ class LoginPhoneNumberState extends State<LoginPhoneNumber>
@override
Widget build(BuildContext context) {
var config = FlutterLogin.of(context).config;
var repository =
context.loginRepository() as LoginRespositoryWithPhoneNumber;
return Material(
child: Scaffold(
backgroundColor: Theme.of(context).backgroundColor,
@ -99,12 +104,7 @@ class LoginPhoneNumberState extends State<LoginPhoneNumber>
],
Padding(
padding: const EdgeInsets.only(top: 10),
child: context
.login()
.config
.appTheme
.buttons
.primaryButton(
child: config.appTheme.buttons.primaryButton(
context: context,
isLoading: _loading,
isDisabled: _loading,
@ -121,9 +121,7 @@ class LoginPhoneNumberState extends State<LoginPhoneNumber>
errorMsg = null;
_loading = true;
});
context
.loginRepository()
.trySignInWithPhoneNumber(
repository.trySignInWithPhoneNumber(
phoneNumber: phoneNumber!,
onCodeSent: (
verificationId,

View file

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_login/flutter_login_view.dart';
import 'package:pinput/pinput.dart';
import '../../backend/login_repository.dart';
import '../../extensions/widget.dart';
class LoginPhoneNumberVerify extends StatefulWidget {
@ -35,6 +36,10 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
@override
Widget build(BuildContext context) {
var config = FlutterLogin.of(context).config;
var repository =
context.loginRepository() as LoginRespositoryWithPhoneNumber;
return Material(
child: Scaffold(
backgroundColor: Theme.of(context).backgroundColor,
@ -48,7 +53,7 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
top: 10,
left: 5,
),
child: context.login().config.appTheme.buttons.backButton(
child: config.appTheme.buttons.backButton(
context: context,
),
),
@ -81,8 +86,7 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
errorMsg = false;
}),
onCompleted: (String code) async {
var user =
await context.loginRepository().signInWithSMSCode(
var user = await repository.signInWithSMSCode(
widget.verificationId,
code,
widget.phoneNumber,
@ -129,7 +133,7 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
style: Theme.of(context).textTheme.bodyText1,
),
),
context.login().config.appTheme.buttons.tertiaryButton(
config.appTheme.buttons.tertiaryButton(
context: context,
child: Text(
context.translate(
@ -138,9 +142,7 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
style: Theme.of(context).textTheme.bodyText1,
),
onPressed: () {
context
.loginRepository()
.trySignInWithPhoneNumber(
repository.trySignInWithPhoneNumber(
phoneNumber: widget.phoneNumber,
onCodeSent: (
verificationId,
@ -150,8 +152,7 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
this.verificationId = verificationId;
this.resultWeb = resultWeb;
pinPutController.clear();
ScaffoldMessenger.of(context)
.showSnackBar(
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
context.translate(
@ -161,8 +162,7 @@ class LoginPhoneNumberVerifyState extends State<LoginPhoneNumberVerify>
),
);
},
onAutoLogin: (user) =>
widget.onLogin.call(user),
onAutoLogin: (user) => widget.onLogin.call(user),
);
},
),

View file

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_login/backend/login_repository.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../flutter_login_view.dart';
@ -15,7 +16,7 @@ class LoginSocialButtons extends StatelessWidget {
@override
Widget build(BuildContext context) {
var config = FlutterLogin.of(context).config;
var repository = context.loginRepository();
var repository = context.loginRepository() as LoginRepositoryWithSocial;
return Column(
crossAxisAlignment: CrossAxisAlignment.center,