【问题标题】:How I can get value from class extends ChangeNotifier我如何从类扩展 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; => 用户为空

【问题讨论】:

  • 请将代码以纯文本(格式为代码)的形式发布在这里,而不是外部图像的链接。

标签: flutter api future provider


【解决方案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(context, listen: false).getUser(); User user = Provider.of(context,听:false).user; if (user == null){ log('User null !'); } else{ log('Name user : ${user.fullName}'); }, }, child: Text( '获取个人资料'), ) `
猜你喜欢
  • 1970-01-01
  • 2018-02-12
  • 2017-07-26
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多