如何在dart中创建空构造函数



这里我想创建一个空构造函数来打印空构造函数被称为消息,但它显示try-adding initializer错误。

class ReusableCard extends StatelessWidget {
final Color color;
ReusableCard(){    
print('empty const is called');   
}
ReusableCard(this.color);
@override   Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.all(15.0),
//TODO:use decorator only if colors are added inside in it.
decoration: BoxDecoration(
color: Color(0xFF1D1E20),
borderRadius: BorderRadius.circular(10.0),
),
// width: 100,
height: 100,
);   
}
}
class ReusableCard extends StatelessWidget {
final Color color;
ReusableCard():
this.color = const Color(0xFF1D1E20)
{    
print('empty const is called');   
}
....
}

由于color变量是最终变量,因此必须在空构造函数上初始化它。

class ReusableCard extends StatelessWidget {
final Color color;
ReusableCard() {
this.color = const Colors.blue;
print('empty const is called');
}
ReusableCard(this.color);
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.all(15.0),
//TODO:use decorator only if colors are added inside in it.
decoration: BoxDecoration(
color: Color(0xFF1D1E20),
borderRadius: BorderRadius.circular(10.0),
),
// width: 100,
height: 100,
);
}
}

在dart中不允许重复默认构造函数,因此需要使用以下命名构造函数:

ReusableCard.empty() {
print('empty');
}

看看你的课:

class ReusableCard extends StatelessWidget {
final Color color;
ReusableCard.empty() {
print('empty');
}
ReusableCard(this.color);
@override   Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.all(15.0),
//TODO:use decorator only if colors are added inside in it.
decoration: BoxDecoration(
color: Color(0xFF1D1E20),
borderRadius: BorderRadius.circular(10.0),
),
// width: 100,
height: 100,
);   
}
}

最新更新