问题描述
我需要设置上传到AWS S3服务器的文件的直接链接。我正在使用class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: Firestore.instance.collection("events").snapshots(),builder: (BuildContext context,AsyncSnapshot snapshot) {
return snapshot.hasData
? Container(
color: Colors.grey[850],child: createListView(snapshot.data.documents),)
: Center(
child: CircularProgressIndicator(),);
});
}
Widget createListView(List<DocumentSnapshot> documentList){
// find football and move it to the start position.
DocumentSnapshot football = documentList.indexWhere((element) => element.eventName == 'football');
documentList.remove(football);
documentList.insert(0,football);
return ListView.builder(
itemCount: documentList.length,itemBuilder: (BuildContext context,int index) {
DocumentSnapshot events = snapshot.data.documents[index];
Event event = Event(
events["eventName"],events["startTime"],events["coverImageUrl"],events["location"],events["description"]);
return EventCard(event);
},);
}
}
。但是它首先链接到服务器路径,然后重定向到S3存储桶路径。
我也尝试了以下代码,但不起作用
url_for(Model.first.image)
它引发错误:
Model.first.image.service_url
解决方法
使用图像标签通过以下方式使用直接S3 URL:
<%= image_tag Model.first.image.variant(resize_to_limit: [50,50]).processed.service_url %>