是否可以執行一個函式,myFunction()如果變數_myString發生更改,讓我們呼叫它,但是這種情況會即時發生嗎?
我所擁有的是textfield一個controller
var _myString;
const TextField(
controller:_controller
)
現在在我的小部件樹的其他地方,我有一個可以更改 值的按鈕_myString,在這種情況下,我將 '_myString' 更改為 'Testing'
GestureDetector(
onTap:(){ _myString = 'Testing'; }
child: Text('Testing')
)
現在我希望實作的是,當價值_myString以任何方式發生變化時,我可以執行我選擇的一些操作。在這種情況下,我想使用 編輯 TextField _controller,但我不僅想這樣做,還想做其他一些事情,所以我認為最好聽聽該變數的變化,然后執行一個函式
void myFunction(){
///Do some stuff
}
我riverpod在我的應用程式中使用狀態管理,我想我可以嘗試使用它,但不知道如何使用它來觀察單個變數,我更熟悉將它用于整個小部件。或者使用riverpod來做這樣的事情可能是矯枉過正。
我只是不知道如何解決這個問題,所以任何指導將不勝感激!
uj5u.com熱心網友回復:
我相信您可以ValueNotifier為此使用 a ,值通知器是一個持有某些值并在該值更改時“通知”其偵聽器的類。這是一個更簡單的版本ChangeNotifier:
ValueNotifier<String> _myString = ValueNotifier<String>('');
有了上面,每當你想讀取或寫入值時,使用值 getter/setter:
print(_myString.value);
_myString.value = 'some value';
現在,要收聽更改,您應該使用以下addListener方法:
@override
initState() {
// update _controller with value whenever _myString changes
_myString.addListener(() => _controller.text = _myString.value);
// print value on change
_myString.addListener(() => print(_myString.value));
// do stuff
_myString.addListener(myFunction)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/420301.html
標籤:
上一篇:了解未來,在Flutter中等待
下一篇:下拉按鈕失敗
