flutter中的错误“没有为类型'Response'定义getter 'userID',“

jfgube3f  于 2022-12-24  发布在  Flutter
关注(0)|答案(2)|浏览(209)

在我的代码中有一个文本字段,可以键入名称,然后单击按钮,应该传递到http URL,然后应该从该URL获得“用户ID”。

按钮代码

Future<void> onJoin() async {
    setState(() {
      myController.text.isEmpty
          ? _validateError = true
          : _validateError = false;
    });


    Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => loadData(myController.text)),
    );
  }

从http url获取“用户ID”

loadData(String myController) async {
    var userID = "";
    try {
      final uri =
          Uri.parse('http://github.users.com/$myController');
      final response = await http.get(uri);

      if (response.userID != null) {
        print("userID : " + userID);
      }
    } catch (e) {
      print("Invalid name entered ");
    }
  }

如果成功检索userId,则应打印,如果为空,则应显示“输入的名称无效“。

错误

y4ekin9u

y4ekin9u1#

请尝试以下代码:

final response = await http.get(uri);

final Map<String, dynamic> data = response.body;

if (data["userID"] != null) {
  print("userID : " + data["userID"]);
}
pepwfjgg

pepwfjgg2#

response.body是一个编码的json,这就是为什么你会得到

A value of type 'String' can't be assigned to a variable of type 'Map<String, dynamic>

因此请解码响应正文,如下所示

final Map<String, dynamic> data = jsonDecode(response.body);

相关问题