首页 > 解决方案 > 上下文第二次为空

问题描述

我刚刚开始构建一个新应用程序,并且我正在使用 Firebase 通过 google 登录。如果用户已经登录,它会自动将用户带到 user_page。当我第一次尝试登录时一切正常,但如果我注销并尝试再次登录,我会收到此异常:NoSuchMethodError (NoSuchMethodError: The method 'onGoogleSignIn' was called on null. Receiver: null 尝试调用: onGoogleSignIn('StatelessElement'的实例)) 在我的登录页面中。这是我的代码:我的退出按钮:

 RaisedButton(
              color: Colors.red,
              onPressed: () {
                widget._googleSignIn.signOut();
                Navigator.pushReplacement(
                    context,
                    MaterialPageRoute(
                        builder: (BuildContext) =>
                            SignInPage(widget._signInRepo)));
              },

我的登录服务:

    import 'package:eventorganiser/ui/pages/user_page.dart';
    import 'package:firebase_auth/firebase_auth.dart';
    import 'package:flutter/material.dart';
    
    import 'google_sign_in_service.dart';
    
    class SignInService{
      final GoogleSignInService _googleSignInService;
    
      SignInService(this._googleSignInService);
    
      Future<void> onGoogleSignIn(BuildContext context) async {
        FirebaseUser user = await _googleSignInService.handleSignIn();
        Navigator.push(context, MaterialPageRoute(builder: (context)=> UserPage(user, _googleSignInService.googleSignIn)));
      }
    }
my sign_in_page:

    import 'package:eventorganiser/repos/sign_in_repo.dart';
import 'package:flutter/material.dart';

class SignInPage extends StatelessWidget {
  final SignInRepo signInRepo;
  SignInPage(this.signInRepo);
  @override
  Widget build(BuildContext context) {
    return Material(
      color: Colors.red[900],
      child: Container(
        height: MediaQuery.of(context).size.height,
        width: MediaQuery.of(context).size.width,
        child: Center(
          child: Column(
            children: <Widget>[
              SizedBox(
                height: 425,
              ),
              RaisedButton(
                onPressed: () {
                  signInRepo.onGoogleSignIn(context);
                },
                child: Text("Bejelentkezés Google-lel"),
              )
            ],
          ),
        ),
      ),
    );
  }
}

我能做些什么来解决这个问题?谢谢!

标签: flutterdartfirebase-authenticationgoogle-signin

解决方案


推荐阅读