首页 > 解决方案 > 如何处理异常“方法'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");
  }
}

我的实现没有任何语法错误,但我似乎遗漏了一些关于这个逻辑的东西。任何和所有的帮助将不胜感激。谢谢你。

标签: firebaseflutterdart

解决方案


您只声明了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");
      },

推荐阅读