我如何从类扩展 ChangeNotifier 中获取价值
Posted
技术标签:
【中文标题】我如何从类扩展 ChangeNotifier 中获取价值【英文标题】:How I can get value from class extends ChangeNotifier 【发布时间】:2021-11-28 17:31:16 【问题描述】:[我的代码]。当我使用 User user = Provider.of(context, listen: false).user; => 用户空 My code here
class UserController extends ChangeNotifier
User _user;
User get user => _user;
Future<void> getUser() async
String token = await AppValue.getToken();
Uri uri = Uri.parse('http://20.89.111.129/api/user/getProfileUser');
Map<String, String> headers = 'Authorization': 'Bearer $token';
try
final response = await http.get(
uri,
headers: headers,
);
final data = jsonDecode(response.body);
User newUser = new User(
address: (data['address'] == null) ? '' : data['address'],
birthday: (data['birthday'] == null) ? '' : data['birthday'],
email: (data['email'] == null) ? '' : data['email'],
fullName: (data['fullName'] == null) ? '' : data['fullName'],
);
_user = newUser; // _user is not null
notifyListeners();
catch (error)
log('ST WRONG!');
throw (error);
// 当我使用用户时 user = Provider.of(context, listen: false).user; => 用户为空
【问题讨论】:
请将代码以纯文本(格式为代码)的形式发布在这里,而不是外部图像的链接。 【参考方案1】:我认为您需要告诉提供者您想要采取行动的确切类别,
//so instead of this;
User user = Provider.of(context, listen: false).user;
// do this
User user = Provider.of< UserController>(context, listen: false).user;
【讨论】:
我跟着了,还是不行 你在尝试访问_user之前是否调用了getUser方法? 是的,我称之为 UserController().getUser(); ElevatedButton( onPressed: () UserController().getUser(); User user = UserController().user; if (user == null) log('User null !'); else log ('Name user : $user.fullName'); , child: Text('GET PROFILE'), ) 你不能这样做。您必须像这样通过提供者调用该函数:` ElevatedButton( onPressed: () await Provider.of以上是关于我如何从类扩展 ChangeNotifier 中获取价值的主要内容,如果未能解决你的问题,请参考以下文章