如何在Flutter中取Future<List>item的某个数据索引?

How to take a certain data index of Future<List> item in Flutter?

我在获取最新数据索引时遇到问题

class User {
  final String idUser,
  name,
  phone;

  User(
    {this.idUser,
    this.name,
    this.phone});

  factory User.fromJson(Map<String, dynamic> json) {
    return User(
    idUser: json['_id'],
    name: json['name'],
    phone: json['phone']);
  }
}

List<User> userFromJson(jsonData) {
  List<User> result =
    List<User>.from(jsonData.map((item) => User.fromJson(item)));

  return result;
}

// index
Future<List<User>> fetchUser() async {
  String route = AppConfig.API_ENDPOINT + "userdata";
  final response = await http.get(route);
  if (response.statusCode == 200) {
    var jsonResp = json.decode(response.body);

    return userFromJson(jsonResp);
  } else {
    throw Exception('Failed load $route, status : ${response.statusCode}');
  }
}

调用方法是这样的

user = fetchUser();

“response.body”的值是这样的

[{"_id":"4136425eb8d9320f4822c554","name":"John","phone":"90643755394"},{"_id":"62766b2eb45s3w0g4662ftd3","name":"Anna","timestamp":"90345765791"}]

我希望是如何获取第一个索引来获取最新数据,但我不知道代码会怎样。另外,如果有其他解决方案可以获取最新数据,请告诉我,非常感谢

您可以使用数组索引号来获取数组中的第一个对象。

 if (response.statusCode == 200) {
    var jsonResp = json.decode(response.body);

    return List<User>.from(jsonResp.map((user) => User.fromJson(user)));
  } else {
    throw Exception('Failed load $route, status : ${response.statusCode}');
  }

如果你只想获得一个用户

 if (response.statusCode == 200) {
    var jsonResp = json.decode(response.body);

    return User.fromJson(jsonResp[0]);
  } else {
    throw Exception('Failed load $route, status : ${response.statusCode}');
  }

其他方法是使用 LIMIT 1

修改查询

使用索引从列表中获取特定值

userFromJson(jsonResp[0]); /// For first record

因为它的未来你必须使用 await 关键字来获得完成的结果所以通过添加 await

修改你的代码
users = await fetchUser();

现在您可以访问用户列表

var firstUser = users.first;
var firstUser = users[0];

有关 await 和 async 的更多信息,您可以阅读此 Asynchronous programming