所以我尝试在 flutter 中创建一个具有多个构造函数的自定义小部件。 本质上,我正在创建一个箭头按钮,但希望能够创建箭头图标面向不同方向的按钮。
目前我的代码如下所示:
class RotateButton extends StatefulWidget {
RotateButton.left() {
_RotateButtonState createState() => _RotateButtonState.left();
}
RotateButton.right() {
_RotateButtonState createState() => _RotateButtonState.right();
}
@override
_RotateButtonState createState() => _RotateButtonState();
}
class _RotateButtonState extends State<RotateButton> {
IconData icon;
_RotateButtonState();
_RotateButtonState.left() {
icon = Icons.arrow_back;
}
_RotateButtonState.right() {
icon = Icons.arrow_forward;
}
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: kPrimaryColor,
borderRadius: BorderRadius.circular(20),
),
child: Padding(
padding: const EdgeInsets.all(15.0),
child: Icon(
icon,
size: 70,
),
),
);
}
}
每次我使用我的小部件时,它都默认为默认构造函数并且不显示图标子项。
有没有一种方法可以在不创建默认构造函数的情况下构建类。
还有一种方法可以在不使用有状态小部件的情况下构建此小部件,因为它会使它变得过于复杂。
我收到一条消息:
未引用声明“createState”
此消息出现在旋转按钮类中的命名构造函数旁边。
非常感谢任何帮助。
使用这样的东西:
class SomeWidget extends StatelessWidget {
final bool isRight;
const SomeWidget({Key key, this.isRight}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: Icon(isRight?Icons.arrow_forward:Icons.arrow_back),
);
}
}
老问题,但可以这样做:
class RotateButton extends StatelessWidget {
final Icon icon;
const RotateButton.left({super.key, required this.icon});
const RotateButton.right({super.key, required this.icon});
...
}
RotateButton 类有 2 个构造函数。 它们可以像下面这样调用:
const RotateButton.left(icon: Icons.arrow_back);
const RotateButton.right(icon: Icons.arrow_forward);