В настоящее время я испытываю трудности с необходимостью go повторной аутентификации при входе и выходе из системы.
Существующий метод входа в Firebase, похоже, изменил много информации, поэтому также трудно получить доступ.
страница входа
import 'package:firebase_auth/firebase_auth.dart';
import 'package:aciel_pro/screens/home_screen.dart';
import 'package:flutter/material.dart';
class LoginPage extends StatelessWidget {
final _phoneController = TextEditingController();
final _codeController = TextEditingController();
Future<bool> loginUser(String phone, BuildContext context) async{
FirebaseAuth _auth = FirebaseAuth.instance;
_auth.verifyPhoneNumber(
phoneNumber: phone,
timeout: Duration(seconds: 60),
verificationCompleted: (AuthCredential credential) async{
Navigator.of(context).pop();
AuthResult result = await _auth.signInWithCredential(credential);
FirebaseUser user = result.user;
if(user != null){
Navigator.push(context, MaterialPageRoute(
builder: (context) => HomeScreen(user: user,)
));
}else{
print("Error");
}
//This callback would gets called when verification is done auto maticlly
},
verificationFailed: (AuthException exception){
print(exception);
},
codeSent: (String verificationId, [int forceResendingToken]){
showDialog(
context: context,
barrierDismissible: false,
builder: (context) {
return AlertDialog(
title: Text("Give the code?"),
content: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
TextField(
controller: _codeController,
),
],
),
actions: <Widget>[
FlatButton(
child: Text("Confirm"),
textColor: Colors.white,
color: Colors.blue,
onPressed: () async{
final code = _codeController.text.trim();
AuthCredential credential = PhoneAuthProvider.getCredential(verificationId: verificationId, smsCode: code);
AuthResult result = await _auth.signInWithCredential(credential);
FirebaseUser user = result.user;
if(user != null){
Navigator.push(context, MaterialPageRoute(
builder: (context) => HomeScreen(user: user,)
));
}else{
print("Error");
}
},
)
],
);
}
);
},
codeAutoRetrievalTimeout: null
);
}
HomeScreen
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:aciel_pro/sidebar/sidebar_layout.dart';
class HomeScreen extends StatelessWidget {
final FirebaseUser user;
HomeScreen({this.user});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Custom Navigation Drawer Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
debugShowCheckedModeBanner: false,
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
scaffoldBackgroundColor: Colors.white,
primaryColor: Colors.white
),
home: SideBarLayout(),
);
}
}
Мне нужна помощь.
Я буду публиковать, если есть более сложные или понятные материалы.