Ilya Maximencko
Ilya Maximencko

Reputation: 651

default values in dart constructor

I have the following class which has required unpressedImage field. I need to set unpressedImage value to pressedImage field if pressedImage is not specified. How can I achieve this the best way?

class ImageButton extends StatefulWidget {
  final Image unpressedImage;
  final Image pressedImage;
  final onTap;

  const ImageButton({
    Key key,
    @required this.unpressedImage,
    this.pressedImage,
    this.onTap,
  }) : super(key: key);

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

Upvotes: 0

Views: 479

Answers (1)

Stephen
Stephen

Reputation: 4249

Set it in the initialization list, and use a conditional to pick which value you want to use:

class ImageButton extends StatefulWidget {
  final Image unpressedImage;
  final Image pressedImage;
  final onTap;

  const ImageButton({
    Key key,
    @required this.unpressedImage,
    Image pressedImage,
    this.onTap,
  })  : this.pressedImage =
            pressedImage == null ? unpressedImage : pressedImage,
        super(key: key);

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

Upvotes: 5

Related Questions