可空值使FutureBuilder颤抖

时间:2019-10-01 18:54:40

标签: flutter dart

在我的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部分呢?如果这不是一个好习惯,那么哪种更好的方法呢?

1 个答案:

答案 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
  },