【问题标题】:How to trigger radio button when text or another widget is tapped?点击文本或其他小部件时如何触发单选按钮?
【发布时间】:2020-04-17 04:41:36
【问题描述】:

我用 2 个这样的小部件创建 Row

Row(
   children: [
      new Radio(
        value: 0,
        groupValue: rv0,
        onChanged: _handleRadioValueChange1,
      ),

      GestureDetector(
         onTap: (){ //trigger radio button },
         child: Text('Tap Me')
      )
   ],
)

所以,当我点击文本时,将触发收音机,例如在带有 jquery 的 javascript 中

$('#radio').click()

如何在飞镖颤动中做到这一点?谢谢

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    如果您想在单击 textview 时选择单选按钮值,那么您需要在单击 textview 时更改单选按钮的 groupValue

    示例代码

    class MyApp extends StatefulWidget {
      @override
      _State createState() => _State();
    }
    
    class _State extends State<MyApp> {
      int _radioValue1 = 0;
    
      void _handleRadioValueChange1(int value) {
        setState(() {
          _radioValue1 = value;
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('RadioListTile Demo'),
          ),
          //hit Ctrl+space in intellij to know what are the options you can use in flutter widgets
          body: SingleChildScrollView(
            child: Container(
              padding: EdgeInsets.all(32.0),
              child: Column(
                children: <Widget>[
                  Radio(
                    value: 0,
                    groupValue: _radioValue1,
                    onChanged: _handleRadioValueChange1,
                  ),
                  Radio(
                    value: 1,
                    groupValue: _radioValue1,
                    onChanged: _handleRadioValueChange1,
                  ),
                  Radio(
                    value: 2,
                    groupValue: _radioValue1,
                    onChanged: _handleRadioValueChange1,
                  ),
                  GestureDetector(
                    onTap: () {
                      setState(() {
                        _radioValue1 = 0;
                      });
                    },
                    child: Text("Select First Radio Button"),
                  ),
                  GestureDetector(
                    onTap: () {
                      setState(() {
                        _radioValue1 = 1;
                      });
                    },
                    child: Text("Select Second Radio Button"),
                  ),
                  GestureDetector(
                    onTap: () {
                      setState(() {
                        _radioValue1 = 2;
                      });
                    },
                    child: Text("Select Third Radio Button"),
                  )
                ],
              ),
            ),
          ),
        );
      }
    }
    

    【讨论】:

      【解决方案2】:
          Row(
         children: [
            new Radio(
              value: 0,
              groupValue: rv0,
              onChanged: _handleRadioValueChange1,
            ),
      
            GestureDetector(
               onTap: (){ 
              //trigger radio button
      //you can pass any value which is the value of respective radio button
      _handleRadioValueChange1(0)
       },
               child: Text('Tap Me')
            )
         ],
      )
      

      或者您可以选择 RadioListTile 小部件。

      【讨论】:

        猜你喜欢
        • 2015-03-28
        • 2012-07-22
        • 2019-07-05
        • 1970-01-01
        • 2021-02-04
        • 2020-12-14
        • 1970-01-01
        • 1970-01-01
        • 2012-06-02
        相关资源
        最近更新 更多