构建函数返回空错误被抛出

时间:2021-06-18 14:40:31

标签: flutter stream-builder

我发现了一些解决这个问题的帖子,我尝试使用他们的解决方案但没有成功。

我是 flutter 新手,所以我需要有人建议在这里做什么。

这是调试面板中的错误消息:

A build function returned null.

The offending widget is: StreamBuilder<List<Event>>
Build functions must never return null.

To return an empty space that causes the building widget to fill available room, return "Container()". To return an empty space that takes as little room as possible, return "Container(width: 0.0, height: 0.0)".

The relevant error-causing widget was: 
  StreamBuilder<List<Event>> file:///C:/Users/nkane/AndroidStudioProjects/tonnah/lib/screens/appointment_calendar.dart:166:11

这是从第 166 行开始的代码:

StreamBuilder(
            //stream: _firestoreService.getEventStream(_selectedDay),
            stream: _db.collection('agency').doc(globals.agencyId).collection('event')
          .where('eventDate', isGreaterThanOrEqualTo: Timestamp.fromDate(_selectedDay))
                .snapshots().map((snapshot) => snapshot.docs
          .map((document) => Event.fromFirestore(document.data()))
          .toList()),
            builder: (context, snapshot) {
              if (snapshot.hasData) {
                List<Event> snapData;
                return snapData = snapshot.data;
                _eventsStream = snapData;
                _eventsMap = convertToMap(snapData);
                //_selectedEventsMap = _eventsMap[_selectedDay] ?? [];
                return _buildTableCalendar();
              }
            },
          ),

我该如何解决这个问题?我知道我需要一个“回报”,但我该如何使用它?

1 个答案:

答案 0 :(得分:2)

您只需要在获取/加载数据时返回一个视图。在本例中,我使用了 CircularProgressIndicator 小部件。

StreamBuilder(
  stream: ...,
  builder: (context, snapshot) {
    if(snapshot.hasData){
      return build_your_widget;
  } else 
      return CircularProgressIndicator();
  }
)