将流用作FirebaseAuth.instance.onAuthStateChanged时,快照连接状态始终处于等待状态

时间:2019-07-22 18:58:03

标签: android flutter dart

我正在尝试使用 firebase_auth 使用电子邮件和密码创建身份验证,该代码有3页。1.主页,用于检查连接是否已建立或用户是否已登录。并导航到由功能_handleWidnowDisplay()完成的各个页面。

但是由于某种原因,该应用卡在了if (snapshot.connectionState == ConnectionState.waiting){}块中,无法连接到firebase。

在添加Firebase依赖项时,我遇到了一些问题,可以通过在 gradel.properties 中添加android.useAndroidX=trueandroid.enableJetifier=true来解决。

import 'package:flutter/material.dart';
import 'screens/MyLogin.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'screens/MainPage.dart';

void main() => runApp(new MaterialApp(
      color: Colors.red,
      home: _handleWidnowDisplay(),
    ));

Widget _handleWidnowDisplay() {
  return StreamBuilder(
    stream: FirebaseAuth.instance.onAuthStateChanged,
    builder: (BuildContext context, snapshot) {
      if (snapshot.connectionState == ConnectionState.waiting) {
        return Scaffold(
            appBar: AppBar(
              title: new Text("MyLogin"),
              backgroundColor: Colors.red.shade900,
            ),
            body: new Container(
                width: MediaQuery.of(context).size.width,
                height: MediaQuery.of(context).size.height,
                color: Colors.red.shade900,
                child: new Center(
                  child: new Text("Loding....."),
                )));
      } else if (snapshot.hasData) {
        return MainPAge();
      } else {
        return MyLogin();
      }
    },
  );
}

1 个答案:

答案 0 :(得分:0)

如果它处于等待状态,那么我的第一个直觉将是检查设备的连接性。编辑AndroidManifest.xml以允许INTERNET_PERMISSION。我看不到实际登录的方法,因此将状态更改为“不等待”,因此请确保实际正在调用该方法。