Проведя бесчисленные часы, я наконец-то нашел правильное решение, при котором пользователь успешно проходит аутентификацию, как я вижу на idToken на firebase и на консоли. Однако пользователь не перенаправляется на другой виджет даже после написания в коде.
И как я могу получить доступ к сведениям пользователя о других классах?
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => MyApp();
}
class _MyAppState extends State<MyApp> {
final GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'email',
],
hostedDomain: '',
clientId: '',
);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: _googleSignIn.isSignedIn() != null ? Home(): SignInScreen(),
),
);
}
}
class _SignInScreenState extends State<SignInScreen> {
Future<void> _googleSignUo() async{
try{
final GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'email',
],
hostedDomain: '',
clientId: '',
);
final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignInAccount googleSignInAccount = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleSignInAuthentication = await googleSignInAccount.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
idToken: googleSignInAuthentication.idToken,
accessToken: googleSignInAuthentication.accessToken
);
final FirebaseUser user = (await (_auth.signInWithCredential(credential))) as FirebaseUser;
Fluttertoast.showToast(
msg: 'Signed in');
return Home();
}catch(e){
print(e.message);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: OutlineButton(
padding: EdgeInsets.all(10.0),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(18.0)),
onPressed: ()=> {
_googleSignUo()
},
child:Text(' Sign In with Google',
style: TextStyle(
fontSize: 20
),
)
);
}
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
final GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'email',
],
hostedDomain: '',
clientId: '',
);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
children: <Widget>[
RaisedButton(
onPressed: (){
_googleSignIn.signOut();
Navigator.push(context, MaterialPageRoute(builder: (context)=>SignInScreen()));
},
),
],
)
),
);
}
}