0

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

1 Answer 1

5

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();
}
Sign up to request clarification or add additional context in comments.

2 Comments

Just want to add that you can simplify it with this.pressedImage = pressedImage ?? unpressedImage : dart.dev/guides/language/language-tour#conditional-expressions
@julemand101 Ah yes. That's cleaner isn't it. Thanks for the improvement.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.