点击文本或其他小部件时如何触发单选按钮?

Ash*_*hta 6 dart flutter

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

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

      GestureDetector(
         onTap: (){ //trigger radio button },
         child: Text('Tap Me')
      )
   ],
)
Run Code Online (Sandbox Code Playgroud)

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

$('#radio').click()
Run Code Online (Sandbox Code Playgroud)

在 dart flutter 中如何做到这一点?谢谢

Cod*_*ner 9

    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')
      )
   ],
)
Run Code Online (Sandbox Code Playgroud)

或者您可以使用 RadioListTile 小部件。


Nil*_*hod 6

如果您想在单击时选择单选按钮值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"),
              )
            ],
          ),
        ),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)