Flatter удалить, увидев страницу входа в систему всего за доли секунды после того, как вы вошли в систему - PullRequest
0 голосов
/ 30 апреля 2019

Я ввел вход в Google через Firebase и остался в системе, но мне кажется, что я продолжаю видеть страницу входа в систему всего за доли секунды.Может, мне стоит добавить индикатор загрузки?Если так, то как мне это сделать, кстати, я добавил загрузку, но она не отображается.Или в моем коде реализована проблема?Ниже мой код и GIF.

enter image description here

final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn _googleSignIn = new GoogleSignIn();

class LoginPage extends StatefulWidget {
@override
_LoginPageState createState() => _LoginPageState();
}

class _LoginPageState extends State<LoginPage> {
FirebaseUser user;

bool loading = false;
bool isLoggedIn = false;

void onLoginStatusChanged(bool isLoggedIn) {
setState(() {
  this.isLoggedIn = isLoggedIn;
});
}

@override
void initState() {
super.initState();
isSignedIn();
}

void isSignedIn() async {
setState(() {
  loading = true;
});

isLoggedIn = await _googleSignIn.isSignedIn();

if (isLoggedIn) {
  Navigator.pushReplacement(
      context, MaterialPageRoute(builder: (context) => HomePage()));
}

setState(() {
  loading = false;
});
}

Future _testSignInWithGoogle() async {
setState(() {
  loading = true;
});
final GoogleSignInAccount _currentUser = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleAuth =
    await _currentUser.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
  accessToken: googleAuth.accessToken,
  idToken: googleAuth.idToken,
);
final FirebaseUser user = await _auth.signInWithCredential(credential);
assert(user.email != null);
assert(user.displayName != null);
assert(!user.isAnonymous);
assert(await user.getIdToken() != null);

final FirebaseUser currentUser = await _auth.currentUser();
assert(user.uid == currentUser.uid);
if (user != null) {
  setState(() {
    loading = false;
  });
  Navigator.pushReplacement(
      context, MaterialPageRoute(builder: (context) => HomePage()));
} else {
  Fluttertoast.showToast(msg: "Login failed :(");
}

return currentUser;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...