问题描述
我正在制作一个无状态小部件列表,如下所示,并将 id 作为参数传递给小部件。
cartPage 代码:-
class Cart extends StatefulWidget {
@override
_CartState createState() => _CartState();
}
class _CartState extends State<Cart> {
bool loading=true;
List<CartTile> cartTiles=[];
@override
void initState() {
super.initState();
if(currentUser!=null)
getData();
}
getData()async
{
QuerySnapshot snapshot=await cartReference.doc(currentUser.id).collection('cartItems').limit(5).get();
snapshot.docs.forEach((doc) {
cartTiles.add(CartTile(id: doc.data()['id'],index: cartTiles.length,));
});
setState(() {
loading=false;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.transparent,body: loading?Center(child:CircularProgressIndicator():SingleChildScrollView(
child: Column(
children: cartTiles,),);
}
}
CartTile 代码:-
class CartTile extends StatelessWidget {
final String id;
CartTile({this.id,});
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: productReference.doc(id).snapshots(),builder: (context,snapshot)
{
//here am using the snapshot to build the cartTile.
},);
}
}
所以,我的问题是,每当我在主页中调用 setState 时,是否会重建无状态小部件并增加我的文档读取量。因为我在某处读到,当我们将相同的参数或参数传递给无状态小部件时,由于其缓存机制,它不会重新构建。如果它会增加我的阅读量,那么还有其他方法可以解决这个问题吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)