最初,颤振开关小部件的值为false。滑动后,开关为真。但是,如果我再次滑动,则不会触发onChange方法。
我使用setState()将开关的值更改为onChanged方法。我试图移交BuildContext,但没有成功。
bool value = false;
void _setValue(bool value) {
print('before: ' + this.value.toString());
setState(() => this.value = value);
print('after: ' + this.value.toString());
}
Widget _getSwitch() {
return Switch(
value: this.value,
onChanged: _setValue,
);
}
最初为false,然后切换为true。
I / flutter(20662):之前:false
I / flutter(20662):之后:是
切换为假
I / flutter(20662):之前:是
I / flutter(20662):之后:false
切换为真
I / flutter(20662):之前:false
I / flutter(20662):之后:是
最初为false,现在我切换为true。
I / flutter(20662):之前:false
I / flutter(20662):之后:是
到目前为止非常棒!
现在,我切换为假...什么都没发生。 =>没有onChanged呼叫
现在,我切换到true,这是输出:
I / flutter(20662):之前:是
I / flutter(20662):之后:是
毫无意义!?
答案 0 :(得分:0)
我创建了一个对象
Switch switch2;
@override
void initState() {
super.initState();
switch2 = _getSwitch();
}
然后我尝试对开关进行build(),而是直接在build()中直接调用_getSwitch方法。