This expression has type 'void' and can't be used. await widget.model.chargingStationDist.add(

47 Views Asked by At

error explanation in android studio This expression has a type of 'void' so its value can't be used. (Documentation) Try checking to see if you're using the correct API; there might be a function or call that returns void you didn't expect. Also check type parameters and variables which might also be void.

void getFreeMarkers() async {
    try {
      double destLat, destLng;
      String destCoords = "";
      int parkingListLength = widget.model.freeParkingPlaces.length;
      widget.model.freeMarkerDist.clear();
      print("parking list length : $parkingListLength");
      if (parkingListLength != 0) {
        for (int i = 0; i < parkingListLength; i++) {
          if (widget.model.freeParkingPlaces[i].latitude != null) {
            destLat = double.parse(
                (widget.model.freeParkingPlaces[i].latitude).toString());
            destLng = double.parse(
                (widget.model.freeParkingPlaces[i].longitude).toString());
             ** //i am having error on .add here**
            await widget.model.freeMarkerDist.add(  
              Conversion.coordinateDistance(widget.model.userCoords[0],
                  widget.model.userCoords[1], destLat, destLng),
            );
            final Uint8List markerIcon = await Conversion.getBytesFromAsset(
                'assets/images/freeParking.png', 100);
            if (i < parkingListLength - 1)
              destCoords +=
                  (widget.model.freeParkingPlaces[i].latitude).toString() +
                      "," +
                      (widget.model.freeParkingPlaces[i].longitude).toString() +
                      "|";
            else
              destCoords +=
                  (widget.model.freeParkingPlaces[i].latitude).toString() +
                      "," +
                      (widget.model.freeParkingPlaces[i].longitude).toString();
            _parkingmarkers.add(
              Marker(
                flat: true,
                markerId:
                    MarkerId("${i + widget.model.multipleParking.length}"),
                icon: BitmapDescriptor.fromBytes(markerIcon),
                onTap: () {
                  showinfo(
                      i + widget.model.multipleParking.length, true, false);
                  c.animateCamera(CameraUpdate.newLatLngZoom(
                      LatLng(
                        double.parse(
                            (widget.model.freeParkingPlaces[i].latitude)
                                .toString()),
                        double.parse(
                            (widget.model.freeParkingPlaces[i].longitude)
                                .toString()),
                      ),
                      14));
                },
                // if converting to double like this doesn't work then use double.parse(var.toString())
                position: LatLng(
                  double.parse(
                      (widget.model.freeParkingPlaces[i].latitude).toString()),
                  double.parse(
                      (widget.model.freeParkingPlaces[i].longitude).toString()),
                ),
              ),
            );
          }
        }
        // call api to get timings
        await getFreeTimings(destCoords);
      } else {
        print("length = 0");
      }
    } catch (e) {
      print("inside get markers catch");
      print(e);
      print("Catch block of getMarkers finished");
    }
    setState(() {});
    print("\n outside get markers\n");
  }
**Feteching FreeMarketDist from here**

 mixin ConnectedModel on Model {
  bool _isloading = false;
  late User _authenticatedUser;
  PublishSubject<HomePageMode> _usermode = PublishSubject();
  late Timer _authtimer;
  List<dynamic> multipleParking = [];
  List<dynamic>? allParking = [];
  List<dynamic>? rentParking = [];
  List<dynamic> parkingTransitTime = [];
  List<dynamic> rentParkingTransitTime = [];
  List<dynamic> freeParkingTransitTime = [];
  List<dynamic> serviceTransitTime = [];
  List<dynamic> carwashTransitTime = [];
  List<dynamic> carrepairTransitTime = [];
  List<dynamic> chargingTransitTime = [];
  //List<dynamic> hospitalTransitTime = [];
  List<FreeParking> freeParkingPlaces = [];
  List<dynamic>? service = [];
  List<dynamic> serviceStation = [];
  List<dynamic> carWashStation = [];
  List<dynamic> carRepairStation = [];
  List<dynamic>? chargingStation = [];
  //List<dynamic> hospital = [];
  late int selectedParking;
  List<double> markerDist = [];
  List<double> freeMarkerDist = [];
  List<double> rentParkingDist = [];
  List<double> serviceStationDist = [];
  List<double> carWashDist = [];
  List<double> carRepairDist = [];
  List<double> chargingStationDist = [];
  //List<double> hospitalDist = [];
  List<double> userCoords = [];
  late Map<String, dynamic> confirmed_booking;
  late Map<String, dynamic> registration_details;
  late Map<String, dynamic> coords;
  late Map<String, dynamic> place;
  int bookingIndex = -1;
  int vehicleIndex = 0;
}`

I am new to flutter but i tried removing void and adding Future instead

1

There are 1 best solutions below

0
Sujan Gainju On

To use await, the function must return future.

Update

void getFreeMarkers() async

to

Future<void> getFreeMarkers() async