我有一个使用Firebase身份验证的Flutter应用程序,并且可以运行。我需要从后端检索图像,但是它们需要授权,因此我需要发送Firebase authToken作为授权标头。我在获取Firebase authToken时遇到问题,因此可以将其设置为CachedNetworkImage。
我是Flutter的新手,它专门针对Flutter,因为我确实在iOS-Swift中使用了它。
当我对正确的authToken进行硬编码时,我已经成功检索了图像。这证明我的后端工作正常。
我还可以异步检索authToken,但是无法将其连接到CachedNetworkImage。
这正在工作
class RemoteImage extends StatelessWidget {
@override
Widget build(BuildContext context) {
String tripId = 'TXt1XIvqUDzBP6T11xTF';
String url = 'http://localhost:8080/api/trips/$tripId/images/$tripId.jpg';
String token = 'a correct secret token';
Map<String, String> headers = {"Authorization": "Bearer " + token};
return CachedNetworkImage(
placeholder: (context, url) => CircularProgressIndicator(),
imageUrl: url,
httpHeaders: headers,
);
}
}
这是我尝试过的,但是图像从未显示
class RemoteImage extends StatelessWidget {
@override
Widget build(BuildContext context) {
String tripId = 'TXt1XIvqUDzBP6T11xTF';
String url = 'http://localhost:8080/api/trips/$tripId/images/$tripId.jpg';
FirebaseAuth.instance.currentUser().then((FirebaseUser user) {
user.getIdToken().then((String token) {
Map<String, String> headers = {"Authorization": "Bearer " + token};
return CachedNetworkImage(
// placeholder: (context, url) => CircularProgressIndicator(),
imageUrl: url,
httpHeaders: headers,
);
});
});
return CircularProgressIndicator();
}
}
我知道问题所在,但是我一直在寻找解决方案。如果有人可以提示我需要搜索的方向,我将不胜感激。
Thx