Flutter 一行Row中显示RadioListTile

简介: Flutter 一行Row中显示RadioListTile

在使用RadioListTile的时候一般都是竖着显示的,也就是Column里面嵌套RadioListTile,如下代码所示:

Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Text('RadioGroupValue:$_radioGroupA'),
                SizedBox(height: 32.0),
               RadioListTile(
                 value: 0,
                 groupValue: _radioGroupA,
                 onChanged: _handleRadioValueChanged,
                 title:Text('Option A') ,
                 subtitle: Text('Description'),
                 secondary: Icon(Icons.filter_1),//右侧图标
                 selected: _radioGroupA == 0,
               ),
               RadioListTile(
                 value: 1,
                 groupValue: _radioGroupA,
                 onChanged: _handleRadioValueChanged,
                 title:Text('Option B') ,
                 subtitle: Text('Description'),
                 secondary: Icon(Icons.filter_2),//右侧图标
                 selected: _radioGroupA == 1,
               ),
          ],
        ),

效果图如下:

这是一行显示一个RadioListTile,如果需要一行显示两个或者更多RadioListTile怎么办呢?

把上面代码的Column直接改成Row可以吗?答案是否定的,运行会报错。

       Consider setting mainAxisSize to MainAxisSize.min and using FlexFit.loose fits for the flexible children (using Flexible rather than Expanded). This will allow the flexible children to size themselves to less than the infinite remaining space they would otherwise be forced to take, and then will cause the RenderFlex to shrink-wrap the children rather than expanding to fit the maximum constraints provided by the parent.

如下修改就可以解决问题了。

 Widget _radioDemo() {
    return Row(
      children: <Widget>[
        Flexible(
          child: RadioListTile(
            value: 0,
            groupValue: _radioGroupA,
            onChanged: _handleRadioValueChanged,
            title: Text('数据看板'),
            selected: _radioGroupA == 0,
          ),
        ),
        Flexible(
          child: RadioListTile(
            value: 1,
            groupValue: _radioGroupA,
            onChanged: _handleRadioValueChanged,
            title: Text('团队列表'),
            selected: _radioGroupA == 1,
          ),
        ),
 
      ],
    );
  }

下面再列举个RadioListTile示例:

List checkboxList;
String _radioListTitleValue;
 
List<Widget> _getRadioListTitle() {
    return checkboxList.map((item) =>
        Flexible(
          child: RadioListTile(
            title: Text(item['text']),
            subtitle: Text(item['text']),
            secondary: Icon(Icons.add),
            isThreeLine: false,
            dense: false,
            selected: false,
            value: item['text'],
            controlAffinity: ListTileControlAffinity.platform,
            groupValue: _radioListTitleValue,
            onChanged: (data){
              setState(() {
                _radioListTitleValue = data;
              });
            },
          ),
        )
    ).toList();
  }
@override
  void initState() {
    super.initState();
    this.checkboxList = [
      {
        'text': 'Java',
        'value': false
      },
      {
        'text': 'Dart',
        'value': true
      }
    ];
    this._radioListTitleValue = checkboxList[0]['text'];
  }
@override
Widget build(BuildContext context){
  return Row(
    children: _getRadioListTitle(),
  );
}

运行后如图所示:

 

相关文章
关于 Flutter中的TextFiled不可以直接在Row中使用的问题
TextFiled不可以直接在Row中使用的问题,报错简单修改方法
|
4月前
flutter- Row Column Expanded ListView
flutter- Row Column Expanded ListView
|
Java Android开发 iOS开发
Flutter(六)——多子元素组件:ListView,Scaffold,AppBar,Row,Column
Flutter(六)——多子元素组件:ListView,Scaffold,AppBar,Row,Column
355 1
Flutter(六)——多子元素组件:ListView,Scaffold,AppBar,Row,Column
|
Dart 开发者
【Flutter】Flutter 布局组件 ( 布局组件简介 | Row 组件 | Column 组件 | SizedBox 组件 | ClipOval 组件 )(二)
【Flutter】Flutter 布局组件 ( 布局组件简介 | Row 组件 | Column 组件 | SizedBox 组件 | ClipOval 组件 )(二)
171 0
【Flutter】Flutter 布局组件 ( 布局组件简介 | Row 组件 | Column 组件 | SizedBox 组件 | ClipOval 组件 )(二)
|
Android开发
Flutter基础widgets教程-Row篇
Flutter基础widgets教程-Row篇
220 0
|
Android开发
flutter之Row
flutter之Row
107 0
|
容器
【Flutter】Flutter 布局组件 ( 布局组件简介 | Row 组件 | Column 组件 | SizedBox 组件 | ClipOval 组件 )(一)
【Flutter】Flutter 布局组件 ( 布局组件简介 | Row 组件 | Column 组件 | SizedBox 组件 | ClipOval 组件 )(一)
117 0
Flutter中Row中的子控件左右两端对齐
Flutter中Row中的子控件左右两端对齐
317 0
flutter开发教程之Row使用
Row是一个用于水平展示多个子控件的控件。row这个控件不会滚动。
220 0