我已将Flutter应用程序连接到MYSQL。在我的php文件中,我编写了一个查询以从MYSQL检索数据。如果查询成功执行,则数据将返回并能够在我的列表中显示。但是,如果查询失败(如果所需的列在我的表中不可用),我只想显示“未找到数据”。但是正在收到“错误格式异常”。如何隐藏此错误格式异常。请帮我。
_getUsers() async {
var data = await http
.post("http://10.0.2.2/Flutter/count.php", body: {
"dat": count,
});
var jsonData = json.decode(data.body);
return jsonData;
}
我的构建是
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
backgroundColor: Colors.teal,
),
body: Padding(
padding: const EdgeInsets.all(0.0),
child: Container(
color: Colors.teal,
child: new FutureBuilder(
future: _getUsers(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(),
);
}
if (snapshot.hasError) {
return Center(
child: new Text('Error ${snapshot.error}'),
);
}
else {
return Center(
child: Padding(
padding: const EdgeInsets.fromLTRB(56.0, 8.0, 56.0, 8.0),
child: ListView.builder(
itemCount: snapshot.data?.length ?? 0,
itemBuilder: (BuildContext context, int index) {
return ListTile(
leading: new Text(
'${snapshot.data[index]["branch"]}',
style: TextStyle(
color: Colors.white,
fontSize: 25.0,
),
),
trailing: new Text(
'${snapshot.data[index]["count(`branch`)".toString()]}',
style: TextStyle(
color: Colors.white,
fontSize: 25.0,
),
),
);
}),
),
);
}
}),
),
),
);
}
}
答案 0 :(得分:0)
在使用以下解决方案之前,请确保您获得了map / json列表作为响应。即结构必须类似于:
[
{
'branch': 'abc',
'count(`branch`)' : n //a number
},
{
'branch': 'xyz',
'count(`branch`)' : x //a number
},
]
如果结构与上述结构不同,请同时发布json结构。
答案代码:
String leadingText = 'No Data Found';
String trailingText = '';
try {
leadingText = '${snapshot.data[index]["branch"]}';
trailingText = '${snapshot.data[index]["count(`branch`)".toString()]}';
} catch (e, s) {
print('Exception while fetching data: $e stacktrace: $s );
}
将字符串用作Text
中的常规字符串数据:
leading: new Text(
leadingText,
style: TextStyle(
color: Colors.white,
fontSize: 25.0,
),
),
trailing: new Text(
trailingText,
style: TextStyle(
color: Colors.white,
fontSize: 25.0,
),
),
这将允许您处理format exception
并返回自定义字符串作为响应。但是,如果遇到任何异常,您将得到相同的字符串,因此,我建议您以自己的方式处理它。