【发布时间】:2020-08-12 14:17:56
【问题描述】:
我正在使用这个需要纬度和经度才能获取天气的天气 API。我能够获得我所在位置的纬度和经度(尝试打印它们并且它们是正确的)但是当我在我的 API 链接中输入它们时,它会显示其他纬度和经度的天气。我已经尝试将我的位置的经纬度手动放入链接中,它工作得非常好。有什么问题?
import 'package:flutter/material.dart';
import 'package:clima/services/location.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
double key;
class LoadingScreen extends StatefulWidget {
@override
_LoadingScreenState createState() => _LoadingScreenState();
}
class _LoadingScreenState extends State<LoadingScreen> {
var lati;
var longi;
@override
void initState() {
super.initState();
}
void getData() async {
http.Response r = await http.get('http://api.weatherstack.c'
'om/current?access_key=41eb36e0c5f82e3ddce66ef01af877a1&query=$lati,$longi');
String s = r.body;
var data1 = jsonDecode(s)['location']['lat'];
var data2 = jsonDecode(s)['location']['lon'];
print(data1);
print(data2);
print(lati);
print(longi);
}
void getlocation() async {
location a = location();
await a.getclocation();
lati = a.lat;
longi = a.long;
}
Widget build(BuildContext context) {
getlocation();
getData();
return Scaffold();
}
}
另一个名为 location 的类
import 'package:geolocator/geolocator.dart';
class location{
double lat;
double long;
Future<void> getclocation() async{
// this function is defined in another class
Position position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.low);
lat=position.latitude;
long=position.longitude;
}
}
输出是
41.250
1.300
28.7041
77.1025
【问题讨论】:
-
你能打印这个吗:var query = jsonDecode(s)['request']['query'];
-
null,null 是输出
-
检查我的答案