firebase - 如何处理异常“方法'onLogin'在null上被调用”
问题描述
美好的一天,我在为我的应用程序运行代码时收到以下错误:
在 null 上调用了方法“onLogin”
(6100):接收者:空
(6100):尝试调用:onLogin(“成功”)
我试图通过将我的分析内容放在不同的文件中来整理我的代码,但是这样做会引发这个错误,它现在不再向 Firebase 发送“登录”事件。我很想知道为什么我不能用这种方法来达到同样的目标。代码:
登录页面.dart
Widget _signInButton() {
return OutlineButton(
splashColor: Colors.grey,
onPressed: () async {
FireBaseAnalyticsData user;
String result = await signInWithGoogle();
if (result == "Succeed") {
Navigator.pushNamed(context, '/specials-page'); //'specials' = tab-creation page
user.onLogin(result); //track login
}
else
print("error logging in");
},
... //other code
firebase-analytics.dart
final FirebaseAnalytics analytics = FirebaseAnalytics();
class FireBaseAnalyticsData {
void onLogin(var x) {
if(x == "Succeed")
{
analytics.logLogin();
print("Log in successful");
}
else
print("Error delivering login stats");
}
}
我的实现没有任何语法错误,但我似乎遗漏了一些关于这个逻辑的东西。任何和所有的帮助将不胜感激。谢谢你。
解决方案
您只声明了user
变量。你必须在使用它之前初始化它user.onLogin(result)
Widget _signInButton() {
return OutlineButton(
splashColor: Colors.grey,
onPressed: () async {
final user = FireBaseAnalyticsData(); //TODO: Initialize user here
String result = await signInWithGoogle();
if (result == "Succeed") {
Navigator.pushNamed(context, '/specials-page'); //'specials' = tab-creation page
user.onLogin(result); //track login
}
else
print("error logging in");
},
推荐阅读
- javascript - 如何导入`isOneline`功能?
- php - 在我的图书馆管理系统中传递 id 和按钮单击参数后,我想以表格格式显示我的结果
- python - 当我们在 python 中组合两个文本列时,为什么在创建 tf-idf 矢量化器时单词会被打乱
- php - 如何使用 PHP 代码在 phpmyadmin 中创建数据库时创建用户名和密码
- javascript - 将相应的文本字段值传递给具有相同 id 的函数
- java - 如何使用两个回调停止 ProgressBar?
- angular - 'MemoizedSelector 类型的参数
' 不可分配给“字符串”类型的参数 - html - 悬停时折叠菜单的对齐方式
- angular - Angular 6 rxjs 过滤器从 Observable 中删除所有条目
- mysql - 如何避免所有存在重复的记录并仅获取唯一记录?