如何使用从共享首选项 json 文件中获取的数据返回值作为参数

How can I use the returned value of data I got from my shared preference json file as a parameter

如何将其用作我的 url 参数

用户数据['UserName']

我的共享首选项文件中有 json 数据。所以我试图获取用户名 登录用户,因为我想用作端点的参数。

我可以在控制台上打印用户名,但当我尝试添加它时 在 link 上,我得到的 statusCode 响应是:

null.
E/flutter (  906): Receiver: null
E/flutter (  906): Tried calling: []("UserName")

请问如何提取他的用户名并将其添加到端点:

这是共享首选项片段的端点 用户名:


  var q;
  var userData;
  
  void _getUserInfo() async {
    SharedPreferences localStorage = await SharedPreferences.getInstance();
    var userJson = localStorage.getString('loginRes');
    user = json.decode(userJson);
  
    setState(() {
      userData = user;
    });
    print(userData['UserName']);
  }

这是我想在下面的获取请求 link 中使用它的地方:

 Future<void> get_farmer_eop() async {
    final response = await http.get(
        'http://api.ergagro.com:112/GenerateFarmersEop?farmerBvn=${widget.result}&dcOid=${widget.dc_result}&agentName=${userData['UserName']}',
        headers: _setHeaders());

    print('${response.statusCode}popo');
    if (response.statusCode == 200) {
      final jsonStatus = jsonDecode(response.body);
      setState(() {
        q = jsonStatus['Eop'];
      });
      print('trandid');

      print('${q['TransId']}kukuk');
    } else {
      throw Exception();
    }
  }

  _setHeaders() => {
        'Content-type': 'application/json',
        'Accept': 'application/json',
      };

但是在控制台上我打印了用户名,如果我尝试硬编码 agentName 这是用户名参数示例 agentName=johndoh 它有效但是当 userData ['UserName'] 我总是收到空值,有人能帮帮我吗?

如果_getUserInfo没有返回任何东西那么为什么要创建一个单独的方法,试试下面的代码。它应该可以工作。

Future<void> get_farmer_eop() async {
  SharedPreferences localStorage = await SharedPreferences.getInstance();
    var userJson = localStorage.getString('loginRes');
    user = json.decode(userJson);
    final response = await http.get(
        'http://api.ergagro.com:112/GenerateFarmersEop?farmerBvn=${widget.result}&dcOid=${widget.dc_result}&agentName=${user['UserName']}',
        headers: _setHeaders());

您使用的 url 格式有误,试试这个:

final response = await http.get(
        "http://api.ergagro.com:112/GenerateFarmersEop?farmerBvn=${widget.result}&dcOid=${widget.dc_result}&agentName=${userData['UserName']}",
        headers: _setHeaders());