【发布时间】:2021-07-15 02:33:24
【问题描述】:
Flutter 抱怨 _isSelected,因为它不是 final。问题是 must not 是最终的,因为它是在 buttonPressed 上更改的...
class SelectionButton extends StatefulWidget {
final String title;
final Function(String) onSelectionButtonTap;
bool isSelected;
SelectionButton({
required this.title,
required this.onSelectionButtonTap,
required this.isSelected,
});
@override
_SelectionButtonState createState() => _SelectionButtonState();
}
class _SelectionButtonState extends State<SelectionButton> {
@override
Widget build(BuildContext context) {
return Expanded(
child: GestureDetector(
onTap: () {
setState(() {
widget.onSelectionButtonTap(widget.title);
widget.isSelected = !widget.isSelected;
});
},
child: Container(
decoration: BoxDecoration(
color: widget.isSelected ? AppColors.primary : AppColors.white,
borderRadius: BorderRadius.circular(
scaleWidth(10),
),
),
child: Center(
child: Text(
widget.title,
textAlign: TextAlign.center,
style: widget.isSelected
? AppTextStyles.h5White
: AppTextStyles.h5Light,
),
),
),
),
);
}
}
这是 Flutter 给我的警告:
该类(或该类继承自的类)被标记为“@immutable”,但它的一个或多个实例字段不是最终的:SelectionButton.isSelected
如您所见,我正在更改widget.isSelected。我对颤振很陌生,不知道为什么颤振在这里抱怨。一切都按预期工作,但我想这不是最佳实践?我该如何解决这个问题?我在这里错过了什么?
【问题讨论】:
标签: flutter dart widget final stateful