首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于提供程序类而在空值上使用的空检查操作符

由于提供程序类而在空值上使用的空检查操作符
EN

Stack Overflow用户
提问于 2022-03-29 00:04:17
回答 2查看 465关注 0票数 5

当我试图访问特定的屏幕时,我得到了“在空值上使用的空检查操作符”。

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

这是自定义类。

代码语言:javascript
复制
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行的爆炸操作符的结果,但我对fluttr并不熟悉,也不知道该怎么做。

EN

回答 2

Stack Overflow用户

发布于 2022-06-28 09:59:26

如果getUser返回null,则不应该调用它。也许您没有从_authMethods.getUserDetails()加载用户。

因此,这里有一个想法,检查用户是否先登录,然后调用getUser

代码语言:javascript
复制
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!;

  bool get isLoggedIn => _user != null; // <---------- added

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

然后在屏幕或小部件中:

代码语言:javascript
复制
if (userProvider.isLoggedIn) {
   // TODO: do what you want such as returning user's name
   return userProvider.getUser.name;
}
票数 1
EN

Stack Overflow用户

发布于 2022-03-29 07:05:30

试试这个:

代码语言:javascript
复制
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();
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71655005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档