【发布时间】:2021-02-27 19:51:48
【问题描述】:
所以我试图在 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”
此消息将出现在旋转按钮类中的命名构造函数旁边。
非常感谢任何帮助。
【问题讨论】:
-
在
RotateButton类中添加IconData icon;,例如使用RotateButton.left() : icon = Icons.arrow_back;,然后在_RotateButtonState中使用widget.icon -
太棒了!这可行,但唯一的问题是我现在收到一条消息,上面写着:此类(或此类继承自的类)被标记为“@immutable”,但它的一个或多个实例字段不是最终的:RotateButton。图标
-
"[...] 但它的一个或多个实例字段不是最终的:RotateButton.icon" - 进来,消息是自我解释...
标签: flutter