【问题标题】:How to send variable value into an API using Flutter and Dart如何使用 Flutter 和 Dart 将变量值发送到 API
【发布时间】:2021-03-14 09:50:12
【问题描述】:

我正在尝试将变量值发送到 API 以获取用户详细信息(仅限登录后的特定用户)

这是我正在使用的代码(只是试图将该 uid 发送到 api 链接):

final FirebaseAuth _auth = FirebaseAuth.instance;
getCurrentUser() async {
  final FirebaseUser user = await _auth.currentUser();
  final uid = user.uid;
  print(uid);
}

Future<List<User>> _getUsers() async {
  var data = await http.get("https://api.example.com/get/myuserid=$uid");
  var jsonData = json.decode(data.body);
  List<User> users = [];
  for (var u in jsonData) {
    User user = User(u["customer_id"]]);
    users.add(user);
  }
  print(users.length);
  return users;
}

但我收到此错误: 错误:flutter/shell/common/shell.cc(210)] Dart 未处理异常:类型 '_InternalLinkedHashMap' 不是类型 'Iterable' 的子类型

【问题讨论】:

    标签: android flutter dart


    【解决方案1】:

    问题不在于在 API 中发送 UID 工作正常, 问题出在

    for (var u in jsonData) {
        User user = User(u["customer_id"]]);
        users.add(user);
      }
    

    jsonData 是一个 Map&lt;String, dynamic&gt;,你不能像在 map 中那样使用 for 循环

    【讨论】:

    • 你的意思是循环工作正常??
    • 添加 uid 变量值后,我收到此错误
    • 没听懂,但是当我们尝试使用 Map 代替 Iterable 时,会出现此错误 ` type '_InternalLinkedHashMap' is not a subtype of type 'Iterable` /跨度>
    • 你能把你得到的内容包含在 jsonData 中吗??
    • 在 api 中如果我像这样使用它:api.example.com/get/myuserid=test 那么我会得到一切完美,但是当我尝试将 uid 作为变量值发送时:api.example.com/get/myuserid=$uid 出现该错误
    【解决方案2】:

    你可以像那样使用 _getUsers;

      Future<List<User>> _getUsers() async {
    final response = await http.get("https://api.example.com/get/myuserid=$uid");
    if (response.statusCode == 200) {
      return json.decode(response.body);
    } else {
      throw Exception("error");
    }
    

    } 而且,您可以在 FutureBuilder 中使用 _getUser() 来访问您的数据;

    FutureBuilder<List<User>>(
              future: _getUsers(),
              builder: (context, snapshot) {
                if (snapshot.hasData) {
                       snapshot.data.customer_id 
    

    但是现在,你不能以这种方式使用customer_id。在使用customer_id之前,你应该映射你所有的数据作为key使用

    【讨论】:

      猜你喜欢
      • 2018-12-12
      • 2021-04-04
      • 2021-10-21
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      相关资源
      最近更新 更多