在颤振中调用get api时获得响应但没有获得键值,一些渲染问题,直到我搜索到相同的[重复]

Posted

技术标签:

【中文标题】在颤振中调用get api时获得响应但没有获得键值,一些渲染问题,直到我搜索到相同的[重复]【英文标题】:getting response but not getting key value while calling get api in flutter ,some rendering issue till i seached for the same [duplicate] 【发布时间】:2021-02-17 21:00:53 【问题描述】:

成功:真 E/flutter(16591):[错误:flutter/lib/ui/ui_dart_state.cc(157)]未处理的异常:NoSuchMethodError:方法'[]'在null上调用。 E/颤振(16591):接收器:空 E/flutter (16591):尝试调用:

未来 _onSubmitClick(String ifscdataa) 异步

//String profile = url+ifscdataa;
final uri = url+ifscdataa;

paramsToken = widget._token;

final headers = 
  'Content-Type': 'application/x-www-form-urlencoded',
  'X-Requested-With': 'XMLHttpRequest',
  //'Authorization': 'Bearer $paramsToken',
  'Authorization': widget._token,
;

print('Bearer $paramsToken');

Response response = await get(
  uri,
  headers: headers,
);
var res = json.decode(response.body);
print(res);

if (response.statusCode == 200) 
  setState(() 
    bank_name = res['data']['BankName'].toString() ?? "";
    distrcit_name = res['data']['DistrictName'] ?? "";
    branch_name = res['data']['BranchName'] ?? "";
    state_name = res['data']['StateName'] ?? "";

    print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$distrcit_name');
    print(bank_name);

  );

 else if (response.statusCode == 401) 
  Fluttertoast.showToast(msg: res['message'], timeInSecForios: 3);

 else 
  Fluttertoast.showToast(msg: res['message'], timeInSecForIos: 3);

【问题讨论】:

随问题附上代码会很有帮助 这是我对 api 的回应 - "success": true, "data": "BankName": "///// BANK OF ////", "StateName": " Rajasthan", "DistrictName": "//// city", "BranchName": "//// /// ROAD, //// city" @SriDattaYalla 请检查我添加我的代码 @nvoigt 对我没有帮助 medium.com/@diegoveloper/…这个解决方案与我的情况有关吗? 【参考方案1】:

我认为这里出现了错误

bank_name = res['data']['BankName'].toString() ?? "";
distrcit_name = res['data']['DistrictName'] ?? "";
branch_name = res['data']['BranchName'] ?? "";
state_name = res['data']['StateName'] ?? "";

不要直接访问 res['data'],而是首先检查它是否存在

bool hasData = res['data']!=null;
if(hasData)
  bank_name = res['data']['BankName'].toString() ?? "";
  distrcit_name = res['data']['DistrictName'] ?? "";
  branch_name = res['data']['BranchName'] ?? "";
  state_name = res['data']['StateName'] ?? "";

else
  bank_name = "";
  distrcit_name = "";
  branch_name = "";
  state_name = "";

【讨论】:

好的,我用更新的试试这个。 我已经编辑了答案,请尝试一下 好的,能不能详细分享一下 你试过上面的答案吗?现在我已经根据您的需要对其进行了编辑。 告诉我这是否解决了您的问题

以上是关于在颤振中调用get api时获得响应但没有获得键值,一些渲染问题,直到我搜索到相同的[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Alamofire 的 Swift 3 中的 Web 服务的 PATCH API 调用中获得响应

如何使用 POST 方法在颤振中获得 json 响应?

有没有办法在环境光变化时获得通知?

颤振飞镖get.http响应给出html而不是json api

$http.get 和 $http.JSONP 未能获得 google api 响应

在颤振加载中加载更多列表,但用户界面没有改变