【问题标题】:Null Check Operator used on a null value due to provider class由于提供程序类,空值检查运算符用于空值
【发布时间】:2022-06-26 14:00:07
【问题描述】:

当我尝试访问特定屏幕时,我得到了“用于空值的空检查运算符”。

我屏蔽了我的“user_provider”自定义类以及使用它的部分代码,它正常显示(没有红屏)但没有这些屏幕。

这是自定义类

import 'package:flutter/widgets.dart';
import 'package:purple/models/user.dart';
import 'package:purple/resources/auth_methods.dart';

class UserProvider with ChangeNotifier {
  User? _user;
  final AuthMethods _authMethods = AuthMethods();

  User get getUser => _user!;

  Future<void> refreshUser() async {
    User user = await _authMethods.getUserDetails();
    _user = user;
    notifyListeners();
  }
}

我知道这可能是第 9 行中 bang 运算符的结果,但我是 Fluttr 新手,不知道如何去做。

【问题讨论】:

  • 您的getUserDetails 在您的应用程序中某处返回null,因为您在尝试访问_user 时遇到了该错误。如果不是null,您只需要访问_user 即。 if (getUser != null) {...} 并告诉应用程序如果它为空该怎么办。我能告诉你的就是你分享的代码量。
  • 试试这个。添加 ?在第 9 行的 User 之后,比如 User?获取 getUser => _user!;

标签: firebase flutter dart provider state-management


【解决方案1】:

试试这个:

import 'package:flutter/widgets.dart';
import 'package:purple/models/user.dart';
import 'package:purple/resources/auth_methods.dart';

class UserProvider with ChangeNotifier {
  User _user;
  final AuthMethods _authMethods = AuthMethods();

  User get getUser => _user;

  Future<void> refreshUser() async {
    User user = await _authMethods.getUserDetails();
    _user = user;
    notifyListeners();
  }
}

【讨论】:

    猜你喜欢
    • 2021-12-03
    • 2021-01-24
    • 2022-07-06
    • 2022-01-18
    • 2021-11-03
    • 2022-01-16
    • 2021-07-09
    • 2021-04-29
    • 1970-01-01
    相关资源
    最近更新 更多