Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Flutter Bloc await for response before continueing

I have following code:

class BidBloc extends Bloc<BidEvent, BidState> {
  final FirestoreRepository firestoreRepository;

  BidBloc({required this.firestoreRepository}) : super(BidsLoadingState()) {
    
    on<LoadAllBidsEvent>((event, emit) async {
      emit(BidsLoadingState());
      Item item = event.item;

      Future getBids() async {
        List<Bid> bids = [];

        item.bids?.forEach((element) async {
          Bid? bid = await firestoreRepository.getBidByBidId(bidID: element);
          if (bid != null) {
            DbUser? dbUser = await firestoreRepository.getDBUserByDBUserId(
                dbUserID: bid.bidderID);
            if (dbUser != null) {
              bid.userName = dbUser.userName;
              bids.add(bid);
            }
          }
        });
        return bids;
      }

      List<Bid> bids = await getBids();

      await getBids();

      bids.sort((a, b) => a.timestamp.compareTo(b.timestamp));
      BidsLoadedState(bids);
    });
  }
}

My bids.sort((a, b) => a.timestamp.compareTo(b.timestamp)); gets triggered before i retreive my itemss from my repository. Therefor the BidsLoadedState gets pushed with empty bids also…

How can I make my code wait before going to the next line?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Thank you,

>Solution :

You must not use forEach for async operations because its callback is a VoidCallback and not an AsyncCallback so it cannot return any value.

Effective Dart propose to use for loops instead:


for (final element in item.bids) {
  final bid = await firestoreRepository.getBidByBidId(bidID: element);
}
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading