简体   繁体   English

如何在 dart 中将参数设为可选参数

[英]How do I make an argument an optional one in dart

I am trying to make the parameter lettersText an optional parameter but when I don't specify for it, It causes an error:我正在尝试使参数lettersText成为可选参数,但是当我没有指定它时,它会导致错误:

176:27: Error: Too few positional arguments: 2 required, 1 given.
              CircleAvatar(
                          ^
lib/main.dart:194:9: Context: Found this candidate, but the arguments don't match.
  const CircleAvatar(this.numberText, this.lettersText, {Key? key})
        ^^^^^^^^^^^^
class CircleAvatar extends StatelessWidget {
  final Widget numberText;
  final Widget lettersText;

  const CircleAvatar(this.numberText, this.lettersText, {Key? key})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          numberText,
          lettersText,
        ],
      ),
      width: kCircleAvatarWidth,
      height: kCircleAvatarHeight,
      decoration: const BoxDecoration(
        color: Color(0xFFe5e5e5),
        shape: BoxShape.circle,
      ),
    );
  }
}

If you make lettersText optional, I assume you also mean nullable, then you have to check if it is not null.如果您将lettersText可选,我假设您的意思也是可以为空的,那么您必须检查它是否不是 null。 If so you can do the following.如果是这样,您可以执行以下操作。

class CircleAvatar extends StatelessWidget {
  final Widget numberText;
  final Widget? lettersText;

  const CircleAvatar(this.numberText, {Key? key, this.lettersText})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          numberText,
          if(lettersText != null)
          lettersText,
        ],
      ),
      width: kCircleAvatarWidth,
      height: kCircleAvatarHeight,
      decoration: const BoxDecoration(
        color: Color(0xFFe5e5e5),
        shape: BoxShape.circle,
      ),
    );
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM