0

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

4

0 に答える 0