当我试图访问特定的屏幕时,我得到了“在空值上使用的空检查操作符”。
我屏蔽了我的“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行的爆炸操作符的结果,但我对fluttr并不熟悉,也不知道该怎么做。
发布于 2022-06-28 09:59:26
如果getUser返回null,则不应该调用它。也许您没有从_authMethods.getUserDetails()加载用户。
因此,这里有一个想法,检查用户是否先登录,然后调用getUser
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();
}
}然后在屏幕或小部件中:
if (userProvider.isLoggedIn) {
// TODO: do what you want such as returning user's name
return userProvider.getUser.name;
}发布于 2022-03-29 07:05:30
试试这个:
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();
}
}https://stackoverflow.com/questions/71655005
复制相似问题