我有一个FutureBuilder
FutureBuilder<bool>(
future: getFuture(),
builder: (context, snapshot) {
if (snapshot.hasData) {
if (snapshot.data) {
//Data is true and should show something
}
//Data is false and should show something
}
return CircularProgressIndicator();
},
);
Future<bool> getFuture() async {
var myList = [];
//Intentionally makes an error
if (myList.first == 'foo') {
//This should no be fired
}
return true;
}
当我在Flutter中运行此设置时,CircularProgressIndicator会愉快地旋转,而没有其他任何反应。控制台中没有显示错误,所以如果我没有故意植入该错误,我将不知道为什么代码无法正常工作。如果getFuture()
方法非常复杂,则需要很长时间才能找到错误,而不会在控制台中显示。
有人知道为什么错误不会显示在控制台中吗?有没有办法显示错误?
编辑
感谢一些评论,我现在知道我应该在FutureBuilder的开头添加以下内容
if (snapshot.hasError) {
print(snapshot.error); //Output: Bad state: No element
//Handle error
}
现在控制台输出
Bad state: No element
在我现在可以通过控制台获取一些信息之前,该命令对不起,但错误输出没有那么大的帮助。它没有告诉我错误发生在哪里,这使得调试变得更加困难。假设我有一个非常复杂的getFuture()
方法,要花很长时间才能找出错误发生的地方。
我不是很幸运,这将是控制台可以给我的最佳输出吗?还是我有办法使控制台的错误输出更加详细?