以下に示すようにステートレス ウィジェットのリストを作成し、id をパラメーターとしてウィジェットに渡します。
カートページのコード:-
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 を呼び出すたびに、ステートレス ウィジェットが再構築され、ドキュメントの読み取りが増加するかどうかです。同じ引数またはパラメーターをステートレスウィジェットに渡すと、キャッシュメカニズムのために再構築されないことをどこかで読んだためです。読み取りが増加する場合、この問題を解決する他の方法はありますか?