Hala kafamı çırpınarak devlet yönetimi tekniklerine sarıyorum ve ne zaman ve neden Provider.of<X>
vs kullanacağım konusunda biraz kafam karıştı Consumer<X>
. Bu ikisi arasında seçim yaparken verilere erişmek istediğimizde Provider.of'u kullanacağınızı, ancak değiştirmek için kullanıcı arayüzüne ihtiyacınız olmadığını (sanırım) belgelerden anlıyorum . Böylece aşağıdakiler (dokümanlardan alınmıştır) verilere erişir ve yeni etkinliklerde kullanıcı arayüzünü günceller:
return HumongousWidget(
// ...
child: AnotherMonstrousWidget(// <- This widget will rebuild on new data events
// ...
child: Consumer<CartModel>(
builder: (context, cart, child) {
return Text('Total price: ${cart.totalPrice}');
},
),
),
);
Bununla birlikte, yalnızca verilere ihtiyaç duyduğumuz yerde, kullanıcı arayüzü ile yeniden oluşturmak istemiyorsak , aşağıdaki gibi ayarlanmış parametre Provider.of<X>
ile kullanırız :listen
false
Provider.of<CartModel>(context, listen: false).add(item); \\Widget won't rebuild
Ancak, listen
zorunlu değildir ve bu nedenle aşağıdakiler de çalışır:
Provider.of<CartModel>(context).add(item); \\listener optional
Bu da beni birkaç soruya getiriyor:
- Bu ayırt etmek için doğru bir yol mu
Provider.of<X>
veConsumer<X>
. Eski kullanıcı arayüzünü güncellemez, ikincisi yapar? - Eğer
listen
olarak ayarlanmamışfalse
yeniden varsayılan olarak veya değil yeniden inşa edilmesi Widget,? Yalisten
ayarlanırsatrue
? - Neden sahip
Provider.of
olduğumuzda UI'yi yeniden oluşturma seçeneğiyleConsumer
?