Flutter:http请求中的响应变量空白

Flutter: response variable blank in http request

我正在尝试为我的 flutter 应用程序创建个人资料页面 这是一个片段

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';

class MyProfile extends StatefulWidget {


  @override
  _MyProfileState createState() => _MyProfileState();
}

class _MyProfileState extends State<MyProfile> {
  bool visible=false;
  var postData=List();
  var jsonData;
  Future accountInfo()async{
    
    var url ='http://192.168.0.107/get_account.php';
    var response= await http.get(url);
    var jsonData= json.decode(response.body);
    setState(() { 
      postData=jsonData;
    });
    debugPrint(jsonData);
    return jsonData;
    }
    
    @override
    void initState(){
      super.initState();
      accountInfo();
    }

但是,变量 postData 和 jsonData 返回为 null。 postData=[]

的值

API 运行良好,用 postman 试过,也试过用代理工具拦截。 我得到一个有效的 json 响应正文。但是这些值不会传递到 jsonData 或 postData。

当我在文本小部件中使用 postData 时出现此错误:- RangeError(index):索引超出范围:没有有效的索引:0

您定义了两个 json 数据。这可能是原因。另外,在 setState() 中也设置 json 数据。试试这个:

var jsonData;
Future accountInfo()async{
  setState(() {
    visible=true;
  });
  var url ='http://192.168.0.107/get_account.php';
  var response = await http.get(url);
  
  setState(() { 
    jsonData = json.decode(response.body); // Here we changed!
    postData = jsonData;
  });

解决方案是将jsonData定义为

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