Flutter 上下文第二次为空
我刚刚开始构建一个新的应用程序,我正在使用Firebase登录google。如果用户已经登录,它会自动将用户转到用户页面。当我第一次尝试登录时,一切正常,但是如果我注销并再次尝试登录,我会得到以下异常:NoSuchMethodError(NoSuchMethodError:onGoogleSignIn方法在null上被调用。 收件人:空 尝试在我的登录页面中调用:onGoogleSignIn(“无状态元素”)实例。这是我的代码: 我的注销按钮:Flutter 上下文第二次为空,flutter,dart,firebase-authentication,google-signin,Flutter,Dart,Firebase Authentication,Google Signin,我刚刚开始构建一个新的应用程序,我正在使用Firebase登录google。如果用户已经登录,它会自动将用户转到用户页面。当我第一次尝试登录时,一切正常,但是如果我注销并再次尝试登录,我会得到以下异常:NoSuchMethodError(NoSuchMethodError:onGoogleSignIn方法在null上被调用。 收件人:空 尝试在我的登录页面中调用:onGoogleSignIn(“无状态元素”)实例。这是我的代码: 我的注销按钮: RaisedButton(
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"),
)
],
),
),
),
);
}
}
import'package:eventorganizer/ui/pages/user_page.dart';
导入“包:firebase_auth/firebase_auth.dart”;
进口“包装:颤振/材料.省道”;
导入“google_sign_in_service.dart”;
类标志服务{
最终谷歌签名服务(GoogleSignInService);;
信号服务(本.\u谷歌信号服务);
未来onGoogleSignIn(构建上下文)异步{
FirebaseUser=wait_googleSignInService.handleSignIn();
push(context,materialpage(builder:(context)=>UserPage(user,_googleSignInService.googleSignIn));
}
}
我的登录页面:
导入“包:EventOrganizer/repos/sign_in_repo.dart”;
进口“包装:颤振/材料.省道”;
类签名页扩展了无状态小部件{
最终签署采购订单签署采购订单;
签名页(本签名页);
@凌驾
小部件构建(构建上下文){
退货(
颜色:颜色。红色[900],
子:容器(
高度:MediaQuery.of(context).size.height,
宽度:MediaQuery.of(context).size.width,
儿童:中心(
子:列(
儿童:[
大小盒子(
身高:425,
),
升起的按钮(
已按下:(){
SignenRepo.onGoogleSignIn(上下文);
},
儿童:文本(“Bejelentkezés Google lel”),
)
],
),
),
),
);
}
}
我能做些什么来解决这个问题?
谢谢