Am getting this error and can’t find the why, the app shows a google map calling hospital from google map places api, api call returns fine when used in chrome, but the app fail to build showing the “NoSuchMethodError: The getter ‘length’ was called on null” error. Thanks for your help.
`
class Search extends StatelessWidget {
@override
Widget build(BuildContext context) {
final currentPosition = Provider.of<Position>(context);
final placesProvider = Provider.of<Future<List<Place>>>(context);
return FutureProvider(
create: (context) => placesProvider,
child: Scaffold(
body: (currentPosition != null)
? Consumer<List<Place>>(
builder: (_, places, __) {
return Column(
children: <Widget>[
Container(
height: MediaQuery.of(context).size.height / 3,
width: MediaQuery.of(context).size.width,
child: GoogleMap(
initialCameraPosition: CameraPosition(
target: LatLng(currentPosition.latitude,
currentPosition.longitude),
zoom: 16.0),
zoomGesturesEnabled: true,
mapToolbarEnabled: true,
myLocationEnabled: true,
scrollGesturesEnabled: true,
),
),
SizedBox(
height: 10.0,
),
Expanded(
child: ListView.builder(
itemCount: places.length,
itemBuilder: (context, index) {
return Card(
child: ListTile(
title: Text(places[index]?.name),
),
);
}),
)
],
);
},
)
: Center(
child: CircularProgressIndicator(),
),
),
);
}
}
`
The api request works fine when called in chrome, problem is when building the app. This is my places_service.dart file:
`
class PlacesService {
final key = ‘AIzaSyD-vLS7lrciD2Qzcy-0Q_hkKJy1GOR_DnE’;
Future<List<Place>> getPlaces(double lat, double lng) async {
var response = await http.get(‘https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=$lat,$lng&type=hospital&rankby=distance&key=$key’);
var json = convert.jsonDecode(response.body);
var jsonResults = json[‘results’] as List;
return jsonResults.map((place) => Place.fromJson(place)).toList();
}
}
`
Problem is this line:
itemCount: places.length,
Thank you all!