Flutter 如何在颤振中为CustomRadioButton赋予形状?
如何在颤振中为CustomRadioButton赋予形状? 我发现它有一个customshape属性,它将采用布尔值。但我想给一个形状根据我的要求,也希望按钮应该是一个颜色和图标填充。我该怎么做?请给我任何建议Flutter 如何在颤振中为CustomRadioButton赋予形状?,flutter,dart,Flutter,Dart,如何在颤振中为CustomRadioButton赋予形状? 我发现它有一个customshape属性,它将采用布尔值。但我想给一个形状根据我的要求,也希望按钮应该是一个颜色和图标填充。我该怎么做?请给我任何建议 您可以使用两个容器,并使用boxdecorator为其指定形状,通过在墨水池上包装容器并为逻辑设置属性onTap,为逻辑部分使用自定义侦听器,而不是使用自定义单选按钮。如第一个答案中所述。下面是一个示例小部件 import 'package:flutter/material.dart';
您可以使用两个容器,并使用boxdecorator为其指定形状,通过在墨水池上包装容器并为逻辑设置属性onTap,为逻辑部分使用自定义侦听器,而不是使用自定义单选按钮。如第一个答案中所述。下面是一个示例小部件
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
body: Center(
child: GenderSwitch(
onToggle: (Gender gender) {
print('>>>>>>>>>> Gender = $gender');
},
),
),
),
);
}
}
enum Gender {
MALE,
FEMALE,
}
class GenderSwitch extends StatefulWidget {
GenderSwitch({
@required this.onToggle,
this.initialState = Gender.MALE,
this.backgroundColor = Colors.black38,
this.selectedColor = Colors.blue,
this.selectedTextColor = Colors.white,
this.unselectedTextColor = Colors.black87,
});
final ValueChanged<Gender> onToggle;
final Gender initialState;
final Color backgroundColor;
final Color selectedColor;
final Color selectedTextColor;
final Color unselectedTextColor;
@override
_GenderSwitch createState() => _GenderSwitch();
}
class _GenderSwitch extends State<GenderSwitch> {
Gender _gender;
@override
void initState() {
super.initState();
_gender = widget.initialState;
}
@override
Widget build(BuildContext context) {
return Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
_buildButton(Gender.MALE, Icons.add, 'MALE'),
const SizedBox(width: 10),
_buildButton(Gender.FEMALE, Icons.ac_unit, 'FEMALE'),
],
);
}
Widget _buildButton(
Gender value,
IconData icon,
String text,
) =>
FlatButton(
onPressed: () {
setState(() => _gender = value);
widget.onToggle(value);
},
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(10)),
side: BorderSide(
color: Colors.black45,
width: 1,
),
),
color: _gender == value ? widget.selectedColor : null,
child: Row(
children: <Widget>[
Icon(icon),
const SizedBox(width: 10),
Text(
text,
style: TextStyle(
color: _gender == value
? widget.selectedTextColor
: widget.unselectedTextColor,
),
),
],
),
);
}
导入“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主题:主题数据(
主样本:颜色。蓝色,
),
家:脚手架(
正文:中(
孩子:性别女巫(
onToggle:(性别){
打印(“>>>>>性别=$SEXT”);
},
),
),
),
);
}
}
枚举性别{
男,,
女,,
}
类GenderSwitch扩展StatefulWidget{
性别女巫({
@需要这一点,
this.initialState=Gender.MALE,
this.backgroundColor=Colors.black38,
this.selectedColor=Colors.blue,
this.selectedTextColor=Colors.white,
this.unselectedTextColor=Colors.black 87,
});
最终价值因变更而变更;
最终性别国家;
最终颜色背景色;
最终颜色选择颜色;
选择最终颜色TEXTCOLOR;
最终颜色未选择TextColor;
@凌驾
_GenderSwitch createState();
}
类_GenderSwitch扩展状态{
性别(性别);;
@凌驾
void initState(){
super.initState();
_性别=widget.initialState;
}
@凌驾
小部件构建(构建上下文){
返回行(
mainAxisSize:mainAxisSize.min,
儿童:[
_buildButton(Gender.MALE,Icons.add,'MALE'),
常量大小框(宽度:10),
_buildButton(Gender.FEMALE,Icons.ac_单位,“FEMALE”),
],
);
}
小部件构建按钮(
性别价值,
Iconda图标,
字符串文本,
) =>
扁平按钮(
已按下:(){
设置状态(()=>_性别=值);
widget.onToggle(值);
},
形状:const RoundedRectangleBorder(
borderRadius:borderRadius.all(半径圆形(10)),
边线(
颜色:颜色。黑色45,
宽度:1,
),
),
颜色:_性别==值?小部件。selectedColor:null,
孩子:排(
儿童:[
图标(图标),
常量大小框(宽度:10),
正文(
文本,
样式:TextStyle(
颜色:_性别==值
?widget.selectedTextColor
:widget.unselectedTextColor,
),
),
],
),
);
}
你能提供你的单选按钮设计吗?@rickimaru,我已经分享了。你可以听从@Jay Dangar的建议。如果你不知道怎么做。我可以给你一个示例代码。如果你能给出@rickimaru@abhipsabiswal,那将是我的荣幸。祝你好运