簡體   English   中英

如何在 dart 中創建空構造函數?

[英]how to create empty constructor in dart?

在這里,我想創建一個空構造函數來打印空構造函數被稱為消息,但它顯示嘗試添加初始化程序錯誤。

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:

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,
         );   
         }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM