gpt4 book ai didi

object - 如何在提供者 ChangeNotifier 中设置和获取对象值

转载 作者:行者123 更新时间:2023-12-03 04:11:21 29 4
gpt4 key购买 nike

当我在提供程序类中调用此对象的一个​​项目时,我调用一个 api 并将其结果放入一个对象中,但是当我从提供程序类中调用此变量时,有时它被填充但有时它为空。如何?
我这样称呼这个提供者类

 await Provider.of<StudentProfile>(context, listen: false).setProfile(
false, username, context);
我的课是
 class StudentProfile extends ChangeNotifier {
StdProfile _info;
int _val;
setProfile(statefetch, username, context) async {
String ip = await getServerIP();

_info =
await fetchProfilestudent("$ip/users/getUser/$username", context);
print(_info.result[0].firstname);
_val=2;

notifyListeners();
}

set info(val) {
_info = val;
notifyListeners();
}

StdProfile get info => _info;
}
并调用提供者结果
Provider.of<StudentProfile >(context).info.name;

最佳答案

StudentProfile 的参数 _info在开始时为 null,当您在异步调用中初始化它时 setProfile ,在它初始化之前它将为空。
Provider.of<StudentProfile>(context)在 Provider 小部件下方的小部件树中永远不应为 null。

但是Provider.of<StudentProfile >(context).info.name开头为空,如果 setProfile功能失败;

为了防止它,您可以使用 ?可空运算符:Provider.of<StudentProfile >(context).info?.name这将返回 null 但不会引发错误。

您也可以使用 ??运算符在 info?.name 的情况下给出默认值一片空白Provider.of<StudentProfile >(context).info?.name ?? 'Default Value' ;

您可以在本文 https://medium.com/@thinkdigitalsoftware/null-aware-operators-in-dart-53ffb8ae80bb 中了解有关可空运算符的更多信息

关于object - 如何在提供者 ChangeNotifier 中设置和获取对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59692940/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com