【发布时间】:2022-11-23 07:13:50
【问题描述】:
在此代码中,我尝试制作切换效果,因此当用户单击“男性”按钮时,它的颜色将为绿色而其他颜色为灰色,并且与其他颜色不同。代码使图标和文本颜色为绿色,但不切换。
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
class GenderBox extends StatefulWidget {
final String gender;
const GenderBox({super.key, required this.gender});
@override
State<GenderBox> createState() => _GenderBoxState();
}
class _GenderBoxState extends State<GenderBox> {
String selected = '';
Color maleColor = Colors.black54;
Color femaleColor = Colors.black54;
void selectGender(gender) {
setState(() {
if (gender == 'male') {
femaleColor = Colors.black45;
maleColor = Colors.green;
} else {
femaleColor = Colors.green;
maleColor = Colors.black45;
}
});
}
@override
Widget build(BuildContext context) {
return TextButton(
onPressed: () {
selectGender(widget.gender);
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
widget.gender == 'female'
? FaIcon(
FontAwesomeIcons.venus,
size: 40,
color: femaleColor,
)
: FaIcon(
FontAwesomeIcons.mars,
size: 40,
color: maleColor,
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
widget.gender == "female" ? 'Female' : 'Male',
style: TextStyle(
fontSize: 25,
color: widget.gender == "female" ? femaleColor : maleColor),
),
)
],
),
);
}
}
【问题讨论】: