flutter - 根据键值以 Dart/Dart 查询 map 对象数据

标签 flutter dart

我从服务器收到以下API响应

{
_embedded: [
    {
    _id: {
        $oid: "5e26c4d32c9da790ea1c4b7a"
    },
    storeName: "ggagav",
    phone: "+919654846950",
    pincode: "ahhahbba",
    area: "qhhahs",
    city: "whahhw",
    state: "whahhw",
    _etag: {
        $oid: "5e26c4d3462ceb46c79b7439"
    }
    },
    {
    _id: {
        $oid: "5e26c48f2c9da790ea1c4b67"
    },
    storeName: "gggg",
    phone: "+919654846440",
    pincode: "161161",
    area: "gvqvvavav",
    city: "vavavav",
    state: "qvavava",
    _etag: {
        $oid: "5e26c48f462ceb46c79b7438"
    }
    },
    {
    _id: {
        $oid: "5e26c1152c9da790ea1c4add"
    },
    storeName: "rajprakash",
    phone: "+919654846230",
    pincode: "shshsbs",
    area: "hshsbsba",
    city: "ahahshhs",
    state: "shshsbs",
    _etag: {
        $oid: "5e26c115462ceb46c79b7437"
    }
    }

],
_id: "stores",
_returned: 5
}

我想知道函数中提供电话号码时如何获取任何元素的oid。

我可以通过以下请求获取Api信息
 Future<Stores> getStore() async {
    try {
      Response response = await _dio.get(_endPoint, options: Options(
        headers: <String, String>{'authorization': _b},
      )
      );
      if(response.statusCode == 200){
        print(response.data);
      return Stores.fromJson(response.data);}else{return null;}
    } catch (error, stacktrace) {
      print("Exception occured: $error stackTrace: $stacktrace");
      return (error);
    }
  }

我只想显示具有选定电话号码的商店
Future <Stores> getStoresData() async{
    final r = await _repository.getStores();
    return r;
}

在这里r提供了整个响应。如何从响应数据中选择特定的商店。

最佳答案

您应该只为一个商店创建一个类,然后将JSON数组中的所有商店添加到List类型的变量中。然后,您可以使用以下代码。

String getOidFromPhoneNumber(List<Store> stores, String phoneNumber) {
  Store store = stores.firstWhere((store) => store.number == phoneNumber);

  return store.id ?? "No store matching with that phone number";
}

关于flutter - 根据键值以 Dart/Dart 查询 map 对象数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59855547/

相关文章:

mongodb - 两次调用Future后出现NoSuchMethodError

flutter - 在_WidgetsAppState中找不到路由RouteSettings的生成器(“/”(null)

Flutter GetX 路由历史

firebase - 在我的 Flutter Web 应用程序中按 Altright 时出错

flutter - 从主题更改 RaisedButton 的颜色不起作用

dart - 无法在 DART 1.9.3、Polymer 0.16.1+2 中使用 initPolymer().run

Flutter Web : Lottie Animation is cropped on Android Chrome, 但 Windows Chrome 没问题

flutter - 如何创建IOS模拟器Flutter

android - flutter 的google_maps地点在搜索后不显示地点

dart - 是否有任何功能可以从DART中的给定字符串中选择随机字符