flutter 如何在StreamBuilder中使用try/catch?

jfewjypa  于 2023-02-05  发布在  Flutter
关注(0)|答案(1)|浏览(152)

我想做登录页面,当我使用streamBuilder〈user?〉并想涵盖所有情况(如果帐户存在或不存在)时,编译器提示我构建器内部有错误,您必须将其设为异步。当我尝试将其设为编译器所述内容时,还显示另一个编译错误
我的密码是:

ElevatedButton(
  onPressed: logIn,
  child: StreamBuilder<User?>(
    stream: FirebaseAuth.instance.authStateChanges(),
    builder: (context, snapshot) {
      try {
        print('inside bulder method');
        if (snapshot.hasData) {
          print('have account');
          return home();
        }
      } catch (e) {
        print("dont have acc");
        return login();
      }
      //checkIn(context, snapshot);
    },
  ),
)

我试着把它作为一个方法,但也有同样的错误
我想解决这个问题,向用户显示一条消息(有错误)

e3bfsja2

e3bfsja21#

您将从snapshot.hasError获得错误。

ElevatedButton(
  onPressed: logIn,
  child: StreamBuilder<User?>(
    stream: FirebaseAuth.instance.authStateChanges(),
    builder: (context, snapshot) {
      if (snapshot.hasError) {

      } else if (snapshot.connectionState ==
          ConnectionState.waiting) {

      } else if (snapshot.hasData) {

      }else {
        
      }
    },
  ),
)

有关flutter.dev的更多信息

相关问题