如何从对象数组中显示单个项目 - 颤振

时间:2021-07-12 09:28:34

标签: flutter dart flutter-dependencies

您好,我需要帮助解决一个有点棘手的问题。我在下面有一组对象。这些对象是我向端点发出的 get http 请求的结果。端点需要一些 Id,这些 Id 也在响应对象中返回,它们是:anchorOid、providerOid 和 StateOid。因此,在此响应之前,用户将选择一个锚点、状态和提供者,然后向端点发出请求并返回用户 Stocks 对象,即下面的对象。因此,无论用户在 http 请求之前选择什么,这些都是将在响应中返回的 ID。所以我的挑战是在得到响应之后,在我遍历整个对象并使用数据表的行和列显示它们之前,如何在迭代整个对象之前只显示锚点状态,只是为了向用户显示这是您选择的锚点和状态,因为锚点和状态在所有对象中都相同,因此源自用户选择。请问怎么办?


  _getStocksByProviderIdByAnchorIdBySeasonId() async {
    try {
      _prefs = await SharedPreferences.getInstance();
      var _stockService = StockService();
      var result =
          await _stockService.getStocksByProviderIdByAnchorIdBySeasonId(
              _prefs.getInt('providerOid'),
              widget.anchorOid,
              widget.seasonOid,
              widget.stateOid);
      var stocks = await json.decode(result.body);

      _stocks = <Stock>[];
      stocks.forEach((stock) {
        var _stock = Stock();

        _stock.oid = stock['oid'];
        _stock.date = DateTime.parse(stock['date']);
        _stock.anchor = stock['anchor'];
        _stock.state = stock['state'];

        setState(() {
          _stocks.add(_stock);
        });
      });
      print("Stocks");
      print(stocks);

      setState(() {
        data = stocks;
        _isLoading = false;
      });
    } catch (e) {
      setState(() {
        _isLoading = false;
      });
      return e.toString();
    }
  }

我尝试这样做:

stocks[0]['anchor]

but its only picking the first index so how do I make the index dynamic I don't know what to do.

[
  {
    "oid": 3,
    "anchor": "MAIZE ASSOCIATION OF NIGERIA",
    "anchorOid": 1,
    "date": "2021-07-09T14:37:00.403",
    "provider": "ERG Agro Solutions",
    "providerOid": 1,
    "season": "WET SEASON - 2020",
    "seasonOid": 1,
    "stateOid": 1,
    "state": "Abia",
    "stockItems": [],
    "totalStockItems": 0
  },


  {
    "oid": 4,
    "anchor": "MAIZE ASSOCIATION OF NIGERIA",
    "anchorOid": 1,
    "date": "2021-08-09T14:39:00.403",
    "provider": "ERG Agro Solutions",
    "providerOid": 1,
    "season": "WET SEASON - 2020",
    "seasonOid": 1,
    "stateOid": 1,
    "state": "Abia",
    "stockItems": [],
    "totalStockItems": 0
  }
]

1 个答案:

答案 0 :(得分:0)

你可以像这样在List上尝试first方法,

void main() {
 List data = [
  {
    "oid": 3,
    "anchor": "MAIZE ASSOCIATION OF NIGERIA",
    "anchorOid": 1,
    "date": "2021-07-09T14:37:00.403",
    "provider": "ERG Agro Solutions",
    "providerOid": 1,
    "season": "WET SEASON - 2020",
    "seasonOid": 1,
    "stateOid": 1,
    "state": "Abia",
    "stockItems": [],
    "totalStockItems": 0
  },


  {
    "oid": 4,
    "anchor": "MAIZE ASSOCIATION OF NIGERIA",
    "anchorOid": 1,
    "date": "2021-08-09T14:39:00.403",
    "provider": "ERG Agro Solutions",
    "providerOid": 1,
    "season": "WET SEASON - 2020",
    "seasonOid": 1,
    "stateOid": 1,
    "state": "Abia",
    "stockItems": [],
    "totalStockItems": 0
  }
];
  print(data.first['anchor']);
}

它总是选择数组的第一个元素。