我试图从Facebook获取数据。 http.get()返回future
如何在我的代码中返回变量graphResponse,这是一个未来的<;http.response>; 并将其传递给jsonExtractor函数。 以下各项
class FetchFB {
final String url;
final String token;
FetchFB({@required this.url, @required this.token});
Future<http.Response> fetchData() async {
http.Response graphResponse = await http.get('$url$token');
print(graphResponse);
return graphResponse;
}
dynamic jsonExtractor(dynamic dataResponse) async {
return await jsonDecode(dataResponse);
}
}
内主省道
String url = 'https://graph.facebook.com/v7.0/me?fields=';
String tok = '0BTkTGrLtBgsp35WQZDZD';
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final bool _loggedIn = false;
final fbLogin = FacebookLogin();
void flogin() async {
final result = await fbLogin.logIn(['email']);
final token = result.accessToken.token; // Not used for the the time being
FetchFB data = FetchFB(url: url, token: tok);
var fb = data.fetchData();
var fb1 = data.jsonExtractor(fb);
print(fb1);
}
@override
Widget build(BuildContext context) {
return Center(
child: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Center(
child: OutlineButton(
onPressed: () {
flogin();
},
child: Text('FaceBook'),
),
)
],
),
),
);
}
}
你需要等待未来来完成。 同样要解码JSON,您需要从response.body获取JSON。
String url = 'https://graph.facebook.com/v7.0/me?fields=';
String tok = '0BTkTGrLtBgsp35WQZDZD';
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final bool _loggedIn = false;
final fbLogin = FacebookLogin();
void flogin() async {
final result = await fbLogin.logIn(['email']);
final token = result.accessToken.token;
FetchFB data = FetchFB(url: url, token: tok);
var fb = await data.fetchData(); // wait for the future to complete.
var fb1 = data.jsonExtractor(fb);
print(fb1);
}
@override
Widget build(BuildContext context) {
return Center(
child: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Center(
child: OutlineButton(
onPressed: () {
flogin();
},
child: Text('FaceBook'),
),
)
],
),
),
class FetchFB {
final String url;
final String token;
FetchFB({@required this.url, @required this.token});
Future<http.Response> fetchData() async {
http.Response graphResponse = await http.get('$url$token');
print(graphResponse);
return graphResponse;
}
dynamic jsonExtractor(dynamic dataResponse) async {
return jsonDecode(dataResponse.body);
}
}