Home > Software design >  How to make widget argument optional?
How to make widget argument optional?

Time:04-09

I have a function that I use to build an icon widget:

  buildIcon(IconData icon, Color color, VoidCallback onTap, {double? size}) {
    return InkWell(
      onTap: onTap,
      child: Icon(
        // set size only if argument size != null
        icon,
        color: color,
      ),
    );
  }

As you can see this function has nullable argument size. And I need this parameter to be set only if it is not equal to null. If I add a check for null, then I will have to add a default value for the size parameter of the icon widget.

Is it possible to avoid setting the size parameter of Icon widget if the function argument is null ? Please, help me.

CodePudding user response:

You can use like this:

buildIcon(IconData icon, Color color, VoidCallback onTap, {double? size = 10}) {
return InkWell(
  onTap: onTap,
  child: Icon(
    // set size only if argument size != null
    icon,
    color: color,
  ),
);

}

or:

 buildIcon(IconData icon, Color color, VoidCallback onTap, {double? size}) {
size ??= 10;
return InkWell(
  onTap: onTap,
  child: Icon(
    // set size only if argument size != null
    icon,
    color: color,
  ),
);

}

CodePudding user response:

In this particular case, Icon's size parameter is already optional. If it's not defined, it will be set to 24px, like you defined your method like this:

buildIcon(IconData icon, Color color, VoidCallback onTap, {double? size}) {
    return InkWell(
      onTap: onTap,
      child: Icon(
        icon,
        size: size ?? 24,
        color: color,
      ),
    );
  }

as seen in the flutter docs:

If there is no IconTheme, or it does not specify an explicit size, then it defaults to 24.0.

  • Related