【问题标题】:Flutter Stateful Widget set constructor default valuesFlutter Stateful Widget 设置构造函数默认值
【发布时间】:2020-12-31 11:05:15
【问题描述】:

我试图创建一个自定义的有状态小部件。但我找不到任何关于如何在构造函数上设置默认值的参考。

举个例子:

class CustomWidget extends StatefulWidget {
   final String buttonText;
   final Function onPressed;

   CustomWidget({Key key, @required this.onPressed, this.buttonText}) : super(key: key);

   @override
   _CustomWidgetState createState() => _CustomWidgetState();
}

class _CustomWidgetState extends State<CustomWidget> {
   @override
   Widget build(BuildContext context) {
      return FlatButton(
         onPressed: widget.onPressed,
         child: Text(widget.buttonText),
      );
   }
}

当我将小部件创建为另一个小部件的子部件并包含它的所有属性时,它可以完美运行

child: CustomWidget(
   buttonText: 'Text of the button',
   onPressed: () {},
)

但是,当我离开 buttonText 时,应用程序崩溃了。

child: CustomWidget(
   onPressed: () {},
)

一个基本的解决方法是简单地添加行buttonText: ''。我并不总是想在创建自定义小部件时专门处理每个小部件的属性。

所以我的问题是,如何在构造函数上设置默认属性?那么当我省略一个属性时,应用程序不会崩溃?

【问题讨论】:

    标签: class flutter dart stateful


    【解决方案1】:

    你的构造函数名应该是类名。要提供默认值,您只需在构造函数中的变量旁边添加一个=defaultValue

    class CustomWidget extends StatefulWidget {
       final String buttonText;
       final Function onPressed;
    
       CustomWidget ({Key key, @required this.onPressed, this.buttonText = 'defaultString'}) :super(key: key);//this.buttonText='defaultString'
    
       @override
       _CustomWidgetState createState() => _CustomWidgetState();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 2016-11-03
      • 1970-01-01
      相关资源
      最近更新 更多