Мне нужно отправить местоположение в мою базу данных, но оно не работает. Мне удалось показать его на экране, но ничего не отправлять.
- location_service.dart (я пытаюсь отправить по почте).
class LocationService {
UserLocation _currentLocation;
Location location = Location();
StreamController<UserLocation> _locationController =
StreamController<UserLocation>.broadcast();
LocationService() {
location.requestPermission().then((granted) {
if(granted != null) {
location.onLocationChanged().listen((locationData) {
if(locationData != null){
_locationController.add(UserLocation(
latitude: locationData.latitude,
longitude: locationData.longitude,
));
}
});
}
});
}
Stream<UserLocation> get locationStream => _locationController.stream;
Future<UserLocation> getLocation() async {
try {
var userLocation = await location.getLocation();
_currentLocation = UserLocation(
latitude: userLocation.latitude,
longitude: userLocation.longitude,
);
const url = 'site';
var map = new Map<String, dynamic>();
map['api_key'] = 'MyApi';
map['usuario'] = 'usuario@gmail.com';
map['codigo'] = 'AAA-0000';
map['latitude'] = '${userLocation?.latitude}';
map['longitude'] = '${userLocation?.longitude}';
map['data_hora'] = DateTime.now();
http.Response response = await http.post(url, body: map,);
print(response);
}
catch(e) {
print('Could not get the location $e');
}
return _currentLocation;
}
}
location_view.dart (Здесь я могу отобразить на экране).
class LocationView extends StatelessWidget {
const LocationView({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
var userLocation = Provider.of<UserLocation>(context);
return Center(
child: Text(
'Location: Lat${userLocation?.latitude}, Long: ${userLocation?.longitude}'),
);
}
}
main.dart
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamProvider<UserLocation>(
builder: (context) => LocationService().locationStream,
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: LocationView(),
),
);
}
}
Я сделал тест с почтальоном, и все нормально с файлом php.