微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无状态小部件会再次重建吗?

如何解决无状态小部件会再次重建吗?

我正在制作一个无状态小部件列表,如下所示,并将 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 举报,一经查实,本站将立刻删除。