Flutter单选按钮组件插件matertino_radio的使用
Flutter单选按钮组件插件matertino_radio的使用
Matertino Radio
完全可自定义的单选按钮组包,由 1 More Code 开发。
开发
一个美丽且简单的自定义单选按钮组小部件,适用于 Flutter。它可以完全自定义标签、标题、标签样式、标题样式、单选图标等。它还包含单个单选列表项。您可以使用此库与带有搜索功能的现代下拉菜单结合使用。
Demo 截图
图片1 | 图片2 | 图片3 |
---|---|---|
如何使用
如何使用 MatertinoRadio
- 在您的
pubspec.yaml
文件中添加matertino_radio
:
dependencies:
matertino_radio: ^1.0.5
- 导入
matertino_radio
包:
import 'package:matertino_radio/matertino_radio.dart';
如何使用 MatertinoBottomSheetRadio
属性
- 创建列表和选定项变量:
List<String> items = [
"Adventure", "Agility", "Cultural Influence", "Entrepreneurship", "Heritage",
"Movers", "Open for Business", "Power", "Quality of Life", "Social Purpose"
];
String? selectedItem;
- 创建
MatertinoBottomSheetRadio
:
MatertinoBottomSheetRadio(
list: items,
selected: selectedItem,
onSelect: (val) {
setState(() {
selectedItem = val;
});
},
child: CupertinoTextField(
onTap: null,
controller: TextEditingController(text: selectedItem),
placeholder: "Select Item",
enabled: false,
suffix: const Icon(Icons.arrow_drop_down),
)
)
- 输出效果:
如何使用 MatertinoRadio
水平自定义单选按钮组
- 创建列表和选定项变量:
List<Map<String, dynamic>> lists = [
{"title": "Male", "iconData": Icons.male_rounded},
{"title": "Female", "iconData": Icons.female_rounded},
{"title": "Other", "iconData": Icons.alt_route_rounded}
];
String? selectedItem;
- 使用
MatertinoRadioListTile
:
Row(
children: List.generate(
lists.length,
(index) => Expanded(
child: MatertinoRadioListTile(
value: lists[index]['title'],
groupValue: selectedItem,
title: lists[index]['title'],
onChanged: (val) {
setState(() {
selectedItem = val!;
});
}
)
)
)
)
- 输出效果:
如何使用 MatertinoRadio
列表与自定义单选按钮组
- 创建列表和选定项变量:
List<Map<String, dynamic>> lists = [
{"title": "India", "rank": "#1", "color": Colors.cyan.withOpacity(0.3)},
{"title": "Germany", "rank": "#2", "color": Colors.green.withOpacity(0.3)},
{"title": "Canada", "rank": "#3", "color": Colors.blue.withOpacity(0.3)},
{"title": "United States", "rank": "#4", "color": Colors.redAccent.withOpacity(0.3)},
{"title": "Switzerland", "rank": "#5", "color": Colors.amber.withOpacity(0.3)},
{"title": "China", "rank": "#6", "color": Colors.teal.withOpacity(0.3)}
];
String? selectedItem;
- 使用
MatertinoRadioListTile
:
Column(
children: List.generate(
lists.length,
(index) => MatertinoRadioListTile(
value: lists[index]['title'],
groupValue: selectedItem,
title: lists[index]['title'],
tileColor: lists[index]['color'],
trailingWidget: Text(lists[index]['rank']),
selectedRadioIconData: CupertinoIcons.checkmark_seal_fill,
unselectedRadioIconData: CupertinoIcons.checkmark_seal,
onChanged: (val) {
setState(() {
selectedItem = val!;
});
}
)
)
)
- 输出效果:
示例用法
更多详细信息请参阅 示例代码。
问题与反馈
如果您想发送反馈或报告错误,请提交 issue。如果您有疑问或建议,请 开启讨论。感谢您的支持!
贡献
欢迎所有拉取请求 🤝。
支持
如果此包节省了您的时间,您可以买我一杯咖啡!
扫描下方二维码或点击链接,并不要忘记留下消息:
更多关于Flutter单选按钮组件插件matertino_radio的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter单选按钮组件插件matertino_radio的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter应用中使用material_radio
(实际上在Flutter标准库中已经包含了Radio按钮组件,因此这里假设你是指使用Flutter自带的Radio组件)的示例代码。
使用Flutter内置的Radio组件
Flutter的Radio
组件通常与RadioListTile
一起使用,后者提供了一个更加用户友好的界面。下面是一个简单的示例,展示了如何使用RadioListTile
来创建一个单选按钮组。
示例代码:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Radio Button Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _selectedValue = 0; // 初始选择值
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Radio Button Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: <Widget>[
ListTile(
leading: Radio(
value: 0,
groupValue: _selectedValue,
onChanged: (value) {
setState(() {
_selectedValue = value;
});
},
),
title: Text('Option 1'),
),
ListTile(
leading: Radio(
value: 1,
groupValue: _selectedValue,
onChanged: (value) {
setState(() {
_selectedValue = value;
});
},
),
title: Text('Option 2'),
),
ListTile(
leading: Radio(
value: 2,
groupValue: _selectedValue,
onChanged: (value) {
setState(() {
_selectedValue = value;
});
},
),
title: Text('Option 3'),
),
SizedBox(height: 20),
Text('Selected Value: $_selectedValue'),
],
),
),
);
}
}
代码解释:
-
MyApp 类:
- 定义了应用的主入口,设置了主题并指定了
MyHomePage
作为首页。
- 定义了应用的主入口,设置了主题并指定了
-
MyHomePage 类:
- 这是一个有状态的组件,用于存储当前选中的单选按钮值。
-
_MyHomePageState 类:
- 包含UI逻辑,使用
Radio
组件创建单选按钮,并将它们包裹在ListTile
中以提供更好的布局。 Radio
组件的value
属性用于标识每个按钮,groupValue
属性用于标识当前选中的按钮值,onChanged
回调函数用于处理按钮点击事件。- 当按钮被点击时,
setState
方法会更新UI以反映新的选择。
- 包含UI逻辑,使用
-
显示选中的值:
- 使用
Text
组件显示当前选中的单选按钮值。
- 使用
注意:
- 在实际项目中,你可能会希望将单选按钮封装在一个更复杂的组件中,或者与表单字段等其他组件结合使用。
- 如果你确实在寻找一个名为
material_radio
的第三方插件,通常Flutter社区提供的插件都会有详细的文档和示例代码,你可以参考该插件的README文件或官方文档来获取更多信息。不过,大多数情况下,Flutter标准库中的组件已经足够满足需求。