title: Flutter `itemBuilder` not called when controller.rx data changed [ListItem.builder] [GetX]
body: <p>This is a follow up question to the <code>Obx/Streams version</code> of the answer provided in the Question here:</p>
  <p><a href="https://stackoverflow.com/a/65745977/474330">https://stackoverflow.com/a/65745977/474330</a></p>
  <p>I am using similar structure, but inside my <code>itemBuilder</code> I am calling a controller's function to retrieve my <code>RxProductData</code> based on the <code>index</code>, however the <code>itemBuilder</code> itself is not triggered when it is modified. Is there a way to force the <code>itemBuilder</code> to be called?</p>
  <pre><code>class ProductListTab extends GetWidget&lt;PriceListController&gt; {
    ProductListTab({Key? key}) : super(key: key);
  
    late final _priceListController = Get.find&lt;PriceListController&gt;();
    late final _cartListController = Get.find&lt;CartListController&gt;();
  
    @override
    Widget build(BuildContext context) {
      print('ProductListTab.build');
      return Scaffold(
        appBar: AppBar(
          actions: &lt;Widget&gt;[
            IconButton(
                onPressed: () {
                  _cartListController.cartRetrieved.value = false;
                },
                icon: const Icon(Icons.refresh))
          ],
          title: const Text('Product List Tab'),
        ),
        body: Container(
            child: Column(children: &lt;Widget&gt;[
              Expanded(
                  child: Obx(() =&gt; ListView.builder(
                      key: ValueKey(_cartListController.currentCart.id),
                      itemCount: controller.productGroup.length,
                      itemBuilder: (context, index) {
                        RxProductData pim =
                           _productListController.productList.elementAt(index);
                        RxCartEntryModel cartEntry =
                            _cartListController.getCartEntry(pim.id);
                        print(
                            'plt pid: ${pim.id} qty: ${cartEntry.quantity.value}');
                        return ProductItemBanner(
                          index: index,
                          productData: pim,
                          cartEntry: cartEntry,
                        ); // This CANNOT refresh correctly because itemBuilder is only called once
                      }))),
              Obx(() =&gt;
                  Text('currentCart id: ${_cartListController.currentCart.id}')), // This CAN refresh correctly
            ])),
      );
    }
  }
  </code></pre>
  <p>Can anybody see any mistakes I made? I am assuming that each <code>Obx</code> can only listen to one controller because the next <code>Obx</code> is working and the <code>currentCart.id</code> is always updated, however, the <code>itemBuilder</code> function relies on both <code>_productListController</code> and <code>_cartListController</code>. But I am also not sure because they are actually calling functions of those controllers. It could also be issue with the <code>itemBuilder</code> function itself that I didn't understand (maybe the function is <code>memoized (javascript)</code> and thus assumed as unchanged? I am new to dart, hope someone can enlighten me)</p>