【问题标题】:The argument type 'Null' can't be assigned to the parameter type 'FirebaseUser'.dart(argument_type_not_assignable)参数类型“Null”不能分配给参数类型“FirebaseUser”.dart(argument_type_not_assignable)
【发布时间】:2021-07-01 20:47:56
【问题描述】:

我正在开发一个颤振的身份验证应用程序,同时尝试退出我得到一个错误,类型 null 不能分配给参数类型。

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:time_tracker_app/app/home_page.dart';
import 'package:time_tracker_app/app/sign_in/sign_in_page.dart';

class LandingPage extends StatefulWidget {

  @override
  _LandingPageState createState() => _LandingPageState();
}

class _LandingPageState extends State<LandingPage> {
  FirebaseUser? _user;

  void _updateUser(FirebaseUser user) {
    setState(() {
      _user = user;
    });
  }

  @override
  Widget build(BuildContext context) {
    if (_user == null) {
      return SignInPage(onSignIn: _updateUser);
    }
    return HomePage(
      //error
      onSignOut: () => _updateUser(null),
    );
  }
}

【问题讨论】:

    标签: firebase flutter dart firebase-authentication


    【解决方案1】:

    遇到同样的问题,我尝试使用user.uid 作为字符串而不是所有用户类来稍微更改逻辑。我知道这不是最性感的解决方案,但它最终会奏效。

    class LandingPage extends StatefulWidget {
      LandingPage({Key? key}) : super(key: key);
    
      @override
      _LandingPageState createState() => _LandingPageState();
    }
    
    class _LandingPageState extends State<LandingPage> {
      String? _userId = '';
    
      void _updateUser(String userId) {
        print('User id: $userId');
        setState(() {
          _userId = userId;
        });
      }
    
      @override
      Widget build(BuildContext context) {
        if (_userId == '') {
          return SignInPage(
            onSignIn: (user) => _updateUser(user.uid),
          );
        } else {
          return HomePage(
            onSignOut: () => _updateUser(''),
          );
        }
      }
    }
    

    【讨论】:

      【解决方案2】:

      FirebaseAuth.instance.signOut() 之后获取具有 User(Firebase) 返回类型的当前用户并作为参数传递..

      示例代码:

      FirebaseAuth.instance.signOut;
      FirebaseAuth.instance.currentUser;
      onSignOut(FirebaseAuth.instance.currentUser);
      

      【讨论】:

        猜你喜欢
        • 2021-09-15
        • 2021-09-16
        • 1970-01-01
        • 2021-09-25
        • 2019-04-23
        • 2020-08-04
        • 1970-01-01
        • 2021-09-30
        • 2020-04-15
        相关资源
        最近更新 更多