有条件地向小部件传递可选参数

5

我有一个自定义小部件,可以选择性地传递一个size属性。如果存在,则应将此值传递到我的小部件内部的Icon()小部件的size属性中。

如果存在这个值,有没有一种方法只传递它?

class MyWidget extends StatelessWidget {
  final double size;
  MyWidget({this.size});

  Widget build(BuildContext context) {
    return Icon(
      iconData: IconData(),
      size: // Don't pass size here if not present
    );
  }
}

3
目前还没有办法做到这一点。你可以有条件地调用构造函数 return size == null ? Icon(iconData: IconData()) : Icon(iconData: iconData(), size: size),或者明确传递Iconsize参数的默认值。 - jamesdlin
这里有一个提案:https://github.com/dart-lang/language/issues/219。我相信还有其他的提案。 - jamesdlin
很高兴看到有关此事的讨论。我很乐意将其作为答案接受,以便未来的访问者可以自信地知道目前在Dart中无法实现它。 - Matt
我也遇到了同样的问题。唉,他们应该改一下这个。 - Iván Yoed
1个回答

2
我遇到了类似的问题,需要在按钮中可选地显示一个图标。
使用空安全,您想要做到这一点的方式如下。
import 'package:flutter/material.dart';

class MyWidget extends StatelessWidget {
  final double? size;
  MyWidget ({this.size});

  Widget build(BuildContext context) {
    return Icon(
      iconData:IconData(),
      size: size, // Don't pass size here if not present
    );
  }
}

并且可以像这样使用

 StackIcon()

或者像这样。
 StackIcon(size: 100.0)

If you supply the size parameter the icon will make use of it, otherwise it uses the default size of the icon.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接