我想做的是将每个项目的列表显示为Card小部件。因此,每张卡片都将包含图片,标题,文本,按钮。类似于此:
步骤是:
1-使用StreamBuilder(完成)从Firebase-Store加载产品数据。
2-产品的缩略图URL从数据库加载,然后使用NetworkImage(完成)从Firebase-Storage加载图像。
3-我认为这是错误的加载图像的方法,因为在更改了预期的Firebase-Storage的安全规则后,该方法将不起作用。
我的新FirebaseStorage规则:allow read, write: if request.auth != null;
4-要解决此问题,我正在使用getData()
将图像加载到内存中final FirebaseStorage storage = FirebaseStorage(
app: Firestore.instance.app,
storageBucket: 'gs://...'
);
Uint8List imageBytes;
String errorMsg;
SOME_CONSTRUCTOR() {
storage
.ref()
.child(imageTitle)
.getData(10000000)
.then(..)..
}
然后从内存中加载图像:
Image.memory(imageBytes, fit: BoxFit.cover,)
这很好,但是,我正在寻找最佳实践,这是我的问题:
A-此(获取图像)代码应为load-from-db(streamBuilder的“流”的一部分)或更高版本的从db获取的数据创建卡片( streamBuilder的“生成器”)?
B-从db加载时是否有可能加载图像,假设db中的每个记录都有一个image(1-to-1),所以它将像这样:
fetch row-> download its image
fetch row-> download its image
THEN NEXT ROWs...
?
C-还是最好先加载项目然后构建卡,然后在用户可见卡之后加载图像?
D-还有其他建议可以帮助我解决这个问题吗?
您是否找到从Firebase加载多个图像的最佳方法是什么?