Flutter:Streambuilder卡在ConnectionState.waiting(BLOC)上

时间:2019-11-11 08:37:54

标签: flutter

我正在尝试使用BLOC将图像加载到StreamBuilder中,但是Streambuilder无限期挂在ConnectionState.waiting上。仅当文档不存在时才会发生这种情况-尽管我使用的是初始值(空列表),所以我不确定为什么它仍然挂起?

galleryBloc.dart:

class GalleryBloc {
  final _multipleImageController = StreamController<List<File>>.broadcast();
  Stream<List<File>> get multipleImageStream => _multipleImageController.stream;

// -----------------------------------------------------------------------------
// Load existing gallery images
// -----------------------------------------------------------------------------
   Future<void> getGalleryImages({DocumentReference docRef, List<File> tmpGalleryImages, Function callback}) async {
    try {
      DocumentSnapshot snap = await docRef.get();
      if (snap.exists) {
        for (var img in snap.data['gallery_images']) {
          File fetchedFile = await DefaultCacheManager().getSingleFile(img);
          tmpGalleryImages.add(fetchedFile);
        }
      }
     } catch (e) {
      print(e.toString());
    }
    callback(tmpGalleryImages);
    _multipleImageController.sink.add(tmpGalleryImages);
  }

gallery.dart:

@override
Widget build(BuildContext context) {
  GalleryBloc _galleryBloc = GalleryBloc();

return StreamBuilder<List<File>>(
  stream: _galleryBloc.multipleImageStream,
  initialData: <File>[],
  builder: (context, snapshot) {
    if (snapshot.connectionState == ConnectionState.waiting) print(snapshot.connectionState);
    if (!snapshot.hasData) print("No Data");
    return Column(....

0 个答案:

没有答案