我想首先说说我对Flutter非常陌生。我正在尝试在Flutter应用上实施BLoC。当我运行该应用程序时,它说它尝试对AsyncSnapshot的数据调用null。
StreamBuilder<List<String>>(
stream: bloc.messages_stream,
builder: (BuildContext context, AsyncSnapshot<List<String>> snapshot){
if(snapshot.data == null) return CircularProgressIndicator();
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context, index){
return Text('${snapshot.data[index]}');
},
);
}
)
这是我的BLoC的代码:
class MessageBloc{
List<String> _messages = ['hello',];
//Streamcontroller for messages
final _messagesStreamController = StreamController<List<String>>();
StreamSink<List<String>> get messages_sink => _messagesStreamController.sink;
Stream<List<String>> get messages_stream => _messagesStreamController.stream;
//streamController for events
final _messageEventController = StreamController<MessageEvent>();
Sink<MessageEvent> get message_event_sink => _messageEventController.sink;
_addMessage(MessageEvent event){
_messages.add(event.message);
messages_sink.add(_messages);
}
MessageBloc(){
_messageEventController.stream.listen(_addMessage);
}
dispose(){
_messagesStreamController.close();
_messageEventController.close();
}
}
应该从流中获取数据。也许这也是我的BLoC错误?我尝试调试它,它表明快照为空。我该如何解决?为什么我的快照没有任何数据?
这是完整代码的链接,你们可能有一些建议或其他建议:https://raw.githubusercontent.com/freanuperiaa/flutter_app/ 我真的希望你们能帮忙...