我一直在試圖找出觀察StateNotifierPovider物件與觀察它暴露的通知程式之間的區別。正如我們在檔案的下一節中看到的那樣,當狀態更改時,監視通知程式物件不會觸發物件的構建方法。出于實驗,看起來提供者物件暴露了通知者中的狀態,就像ref.read(provider.notifier). 國家會。我真的無法區分直接觀看提供者與provider.notifier為什么在觀看通知程式和更改其狀態時它不觸發構建方法。
uj5u.com熱心網友回復:
希望的檔案.notifier應該清楚:
獲取與此提供程式關聯的 StateNotifier,而不監聽狀態更改。
這通常用于呼叫 StateNotifier 上的方法。例如:
Button( onTap: () => ref.read(stateNotifierProvider.notifer).increment(), )如果 StateNotifier 實體發生更改,此可監聽器將通知其通知程式。如果重繪 提供者或其依賴項之一發生更改,則可能會發生這種情況。
https://pub.dev/documentation/riverpod/latest/riverpod/AutoDisposeStateNotifierProvider/notifier.html
所以ref.watch(provider)聽狀態變化。
并且ref.watch(provider.notifier)只獲取通知器但不監聽狀態變化。相反,它會監聽實體何時StateNotifier被重新創建——比如如果你這樣做了ref.refresh(provider),這將重新創建StateNotifier
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/535417.html
