How to call Future method before StreamBuilder on Flutter?

Viewed 256

I am trying to get the current user position before get the stream data using that info. So using Flutter 1.17.5 and geolocator: ^5.3.2+2 I am getting the Positionusing the follow util class

class LocationProvider {

Future<Position> getPosition() async {
    Position position = await Geolocator()
        .getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
    return position;
  }
}

then I have to pass the info to bloc in order to retreive the Stream data with the marker

Widget _getAllProducts(ProductBloc productBloc, LocationProvider locationProvider) async{
Position position = locationProvider.getPosition();
var longitude = position.longitude;
var latitude = position.latitude;
int meter = 50;
productBloc.allByRange(meter, latitude, longitude);

return StreamBuilder(
  stream: productBloc.productsByRangeStream,

How ever I got this message

A value of type 'StreamBuilder<List<ProductModel>>' can't be returned from method '_getAllProducts' because it has a return type of 'Widget'

Edit 1

class ProductBloc {

Stream<List<ProductModel>> get productsByRangeStream =>
  _allByRangeProductsController.stream;



void allByRange(double range, double lat, double lon) async {
    final products = await _productFirebaseService.allByRange(range, lat, lon);
    _allByRangeProductsController.sink.add(products);
  }

}

How can I fix it??

0 Answers
Related