为什么当我点击“颤振”时仅在拖动时才不切换它的值?

时间:2019-07-04 07:15:07

标签: user-interface flutter

当我尝试从“ examples / flutter_gallery”切换时,可以点击它来更改值。

bool switchOn = false;

    void _onSwitchChanged(bool value) {
      switchOn = false;
    }

body: ListView(
              children: <Widget>[
                Row(
                  children: <Widget>[
                    Switch(
                      onChanged: _onSwitchChanged,
                      value: switchOn,
                    ),
                  ],
                ),
              ],
            ),

3 个答案:

答案 0 :(得分:0)

这个想法是,每当要刷新屏幕时,都需要使用setState()方法。因此,实际上switchOn的值实际上是在变化,但是由于您没有使用setState(),所以未在屏幕上呈现此更改,您可以详细了解here

 bool switchOn = false;

   void _onSwitchChanged(bool value) {
      setState(() {
        switchOn = false;
      });
    }

body: ListView(
              children: <Widget>[
                Row(
                  children: <Widget>[
                    Switch(
                      onChanged: _onSwitchChanged,
                      value: switchOn,
                    ),
                  ],
                ),
              ],
            ),

答案 1 :(得分:0)

您应该更新状态以更改值

void _onSwitchChanged(bool value) {
   setState((){
      switchOn = false;
   });      
}

答案 2 :(得分:0)

在为网络构建时,我也遇到了同样的问题,很难切换开关,您需要某种方式来点按它来更新它,以便您可以在开关上使用AbsorbPointer并通过{{1 }或构建这样的自定义开关(使代码变面糊):

GestureDetector