Flutter Stateful Widget集构造函数默认值

问题描述

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

例如:

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: ''。在创建自定义窗口小部件的每个属性时,我并不总是想专门解决这个问题。

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

解决方法

您的构造函数名称应为类名称。要提供默认值,您只需在构造函数中的变量旁边添加一个=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();
}