Flutter中的单选按钮组件Radio

2021-01-05 12:56:13 浏览数 (1)

Flutter 中的单选按钮组件有两种。

1. Radio

单选按钮,一般用来表现一些简单的信息。

常用属性如下:

(1). value 单选的值;

(2). onChanged 选择改变触发的事件;

(3). activeColor 选中时的颜色;

(4). groupValue 多个按钮选择组的值;

2. RadioListTile

包含更多信息的单选项,提供多种配置信息的属性,可以表现更丰富的信息。

常用的属性如下:

(1). value 单选的值;

(2). onChanged 选择改变触发的事件;

(3). activeColor 选中时的颜色;

(4). groupValue 多个按钮选择组的值;

(5). title 标题;

(6). subtitle 副标题;

(7). secondary 次要的;

3. 代码示例

代码语言:javascript复制
import 'package:flutter/material.dart';


class RadioPage extends StatefulWidget {
    RadioPage({Key key}) : super(key: key);
    @override
    _RadioPageState createState() => _RadioPageState();
}

class _RadioPageState extends State<RadioPage> {

    int sex = 1;
    int status = 1;
    bool flag = true;

    @override
    Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(
                title: Text("Radio"),
            ),
            body:Padding(
                padding: EdgeInsets.all(20),
                child:Column(
                    children: <Widget>[
                        // 简易选择项
                        Row(
                            children: <Widget>[
                                Text("男"),
                                Radio(
                                    // 按钮的值
                                    value: 1,
                                    // 改变事件
                                    onChanged: (value){
                                        setState(() {
                                          this.sex = value;
                                        });
                                    },
                                    // 按钮组的值
                                    groupValue:this.sex ,
                                ),

                                SizedBox(width: 20,),
                                Text("女"),
                                Radio(
                                    value:2,
                                    onChanged: (value){
                                        setState(() {
                                          this.sex = value;
                                        });
                                    },
                                    groupValue: this.sex,
                                ),
                            ],
                        ),

                        // 组合选择项1
                        RadioListTile(
                            value:1, 
                            groupValue:this.status, 
                            onChanged:(value){
                                setState(() {
                                    this.status = value;
                                });
                            },
                            title:Text("标题"),
                            subtitle:Text("这是二级标题"),
                            secondary:Icon(Icons.help),
                            selected:this.status == 1,

                        ),

                        // 组合选择项2
                        RadioListTile(
                            value:2, 
                            groupValue:this.status, 
                            onChanged:(value){
                                setState(() {
                                    this.status = value;
                                });
                            },
                            title:Text("标题"),
                            subtitle:Text("这是二级标题"),
                            secondary:Image.network('https://www.itying.com/images/flutter/1.png'),
                            selected:this.status == 2,
                        ),

            
                    ],
                )
            )
        );
    }
}

效果图如下:

0 人点赞