我是颤振的新手,所以如果我错了,请告诉我。在我的应用程序中,我必须使用 facebook 登录,所以我在使用下面的代码中使用了一个RawMaterialButton
和函数onPressed
child: RawMaterialButton(
onPressed: () {
FutureBuilder<String>(
future:
_login(), // function where you call your api
builder: (BuildContext context,
AsyncSnapshot<String> snapshot) {
// AsyncSnapshot<Your object type>
print(snapshot);
if (snapshot.connectionState ==
ConnectionState.done) {
print('${snapshot.data}');
}
if (snapshot.connectionState ==
ConnectionState.waiting) {
return Center(
child: Text('Please wait its loading...'));
} else {
if (snapshot.hasError)
return Center(
child: Text('Error: ${snapshot.error}'));
else
return Center(
child: new Text(
'${snapshot.data}')); // snapshot.data :- get your object which is pass from your downloadData() function
}
},
);
return CircularProgressIndicator();
},
当我按下按钮调用该方法并且我正在获取数据但在获取这些数据之后,未来的构建不会更新或显示该数据。Text
这里是我的数据获取方法。
Future<String> _login() async {
final result = await FacebookAuth.instance.login();
var tokenString;
switch (result.status) {
case FacebookAuthLoginResponse.ok:
_printCredentials(result);
// get the user data
// final userData = await FacebookAuth.instance.getUserData();
tokenString = result.accessToken.token;
break;
case FacebookAuthLoginResponse.cancelled:
print("login cancelled");
tokenString = "User cancelled";
break;
default:
tokenString = "Login failed";
}
return tokenString;
}
出于调试目的,我也设置了断点,但它没有针对asynchronous snapshot
条件状态检查。我找不到原因。我还检查了以下堆栈问题。
为什么 FutureBuilder 在 Flutter 中没有被调用? Flutter FutureBuilder 未更新