Flutter 使用多个构造函数创建自定义小部件
因此,我试图在flatter中创建一个具有多个构造函数的自定义小部件。 本质上,我正在创建一个箭头按钮,但希望能够创建箭头图标朝向不同方向的按钮 当前我的代码如下所示:Flutter 使用多个构造函数创建自定义小部件,flutter,Flutter,因此,我试图在flatter中创建一个具有多个构造函数的自定义小部件。 本质上,我正在创建一个箭头按钮,但希望能够创建箭头图标朝向不同方向的按钮 当前我的代码如下所示: class RotateButton extends StatefulWidget { RotateButton.left() { _RotateButtonState createState() => _RotateButtonState.left(); } RotateButton.right()
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,
),
),
);
}
}
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扩展StatefulWidget{
RotateButton.left(){
_RotateButtonState createState()=>_RotateButtonState.left();
}
RotateButton.right(){
_RotateButtonState createState()=>\u RotateButtonState.right();
}
@凌驾
_RotateButtonState createState()=>_RotateButtonState();
}
类旋转按钮状态扩展状态{
Iconda图标;
_旋转按钮状态();
_RotateButtonState.left(){
icon=Icons.arrow\u back;
}
_RotateButtonState.right(){
icon=Icons.arrow\u向前;
}
@凌驾
小部件构建(构建上下文){
返回容器(
装饰:盒子装饰(
颜色:kPrimaryColor,
边界半径:边界半径。圆形(20),
),
孩子:填充(
填充:常数边集全部(15.0),
子:图标(
偶像
尺码:70,
),
),
);
}
}
每次我使用我的小部件时,它只是默认为默认构造函数,不显示任何图标子项
有没有一种方法可以在不创建默认构造函数的情况下构建类
还有一种方法我可以不使用有状态的小部件来构建这个小部件,因为它有点过于复杂了
我收到一条信息说:
未引用声明“createState”
此消息出现在rotatebutton类中的命名构造函数旁边
非常感谢您的帮助。请使用以下内容:
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,
),
),
);
}
}
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),
);
}
}
添加
iconda图标在RotateButton
类中使用code>,例如使用RotateButton.left():icon=Icons.arrow\u back代码>然后在内旋转按钮状态
只需使用小部件。图标
太棒了!这是可行的,但唯一的问题是我现在收到一条消息:这个类(或这个类继承的类)被标记为“@immutable”,但它的一个或多个实例字段不是最终的:RotateButton.icon“[…]但它的一个或多个实例字段不是最终的:RotateButton.icon”-进来,消息是自我解释的。。。