在我的flutter应用程序中有一个FutureBuilder,它应该获取可能为空的数据。
FutureBuilder(
future: model.fetchIsCheckedInAsync(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasData) {
如果某些参数匹配,这将从后端加载模型,但如果不匹配,则返回null。
现在我面临的问题是,如果后端返回状态码204,并且null作为数据,则
snapshot.hasData
总是错误的,因为该属性的实现是:
bool get hasData => data != null;
那么,即使数据为空,如何输入hasData部分呢?如果这不是一个好习惯,那么哪种更好的方法呢?
答案 0 :(得分:1)
您可以切换快照的连接状态。未来的构建者会在此状态下跟踪“发生了什么”。连接状态完成后,您知道您的未来已经结束。看一下代码片段:
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text('Press button to start.');
case ConnectionState.active:
case ConnectionState.waiting:
return Text('Awaiting result...');
case ConnectionState.done:
if (snapshot.hasError)
return Text('Error: ${snapshot.error}');
return Text('Result: ${snapshot.data}');
}
return null; // unreachable
},