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);
我正在尝试为我的 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);