Flutter FutureBuilder에서 currentUser를 사용할 수 없었습니다 (Firebase Authentication)

4835 단어 FirebaseDartFlutter

환경



pubspec.yaml
environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.3
  firebase_core: ^0.7.0
  cloud_firestore: ^0.16.0+1
  firebase_auth: ^0.20.1

The argument type 'Stream' can't be assigned to the parameter type 'Future'.



이 오류는 아마 버전 문제 일 것 같습니다. . .
비동기 처리를 지정하는 future 부분에 currentUser를 넣고 싶지만 아무런 오류가 발생합니다. . .
 Widget build(BuildContext context) {
    return FutureBuilder(
        future: FirebaseAuth.instance.currentUser, // ここでエラー
        builder: (ctx, futureSnapshot) {
          if (futureSnapshot.hasData) {
            User user = futureSnapshot.data;
            return Dashboard();
          }
          return LoginScreen();
        });
  }

이유는 솔직히 잘 모르겠지만 StreamBuilder 를 사용하면 비슷한 일을 할 수 있습니다.

StreamBuilder와 authStateChanges로 대체?


 Widget build(BuildContext context) {
    return StreamBuilder(
        stream: FirebaseAuth.instance.authStateChanges(),
        builder: (ctx, futureSnapshot) {
          if (futureSnapshot.hasData) {
            User user = futureSnapshot.data;
            return Dashboard();
          }
          return LoginScreen();
        });
  }

일단 이것으로 비슷한? 처리에는 할 수 있었던 것 같습니다. .
FutureBuilder 그럼 안 되는지, 여러가지 조사했습니다만 결국 잘 모르겠습니다. 누군가 알기 쉽게 설명하십시오

좋은 웹페이지 즐겨찾기