SizedBox如果buttonType回傳,我正在嘗試使有條件地出現Half。但它會引發錯誤。
錯誤: Equality operator ``==`` invocation with references of unrelated types。
const List<String> buttonTypeList = ['FullButton','Half','Quarter'];
class ToolSetButton extends StatefulWidget {
final List buttonType;
const ToolSetButton(
{Key? key,this.buttonType = buttonTypeList})
Visibility(
//visible: false,
visible: widget.buttonType == 'Half'
? false
: true,
child: SizedBox();
uj5u.com熱心網友回復:
錯誤依賴于buttonType宣告為 a的事實List<String>,而==運算子將其與 a String(特別是 )進行比較'Half'。
為了解決我們的問題,我們可以使用以下小部件:
class ToolSetButton extends StatefulWidget {
const ToolSetButton({Key? key, required this.buttonType}) : super(key: key);
final String buttonType;
@override
State<ToolSetButton> createState() => _ToolSetButtonState();
}
class _ToolSetButtonState extends State<ToolSetButton> {
@override
Widget build(BuildContext context) {
return Visibility(
visible: widget.buttonType == 'Half'
? false
: true,
child: SizedBox(),
);
}
}
但是,enum在我們的案例中使用一個更好、更優雅的解決方案:
enum ButtonSize {
Full,
Half,
Quarter,
}
class ToolSetButton extends StatefulWidget {
const ToolSetButton({Key? key, required this.buttonSize}) : super(key: key);
final ButtonSize buttonSize;
@override
State<ToolSetButton> createState() => _ToolSetButtonState();
}
class _ToolSetButtonState extends State<ToolSetButton> {
@override
Widget build(BuildContext context) {
return Visibility(
visible: widget.buttonSize == ButtonSize.Half
? false
: true,
child: SizedBox(),
);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/340050.html
