具有可选参数但至少需要一个参数的 Dart/Flutter 小部件

拉兹万富莱亚

我正在尝试创建一个可以通过各种参数初始化的 Flutter 小部件,就像这样

class MyWidget extends StatefulWidget {
  final int? id;
  final String? username;

  MyWidget({this.id, this.username});

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

class _MyWidgetState extends State<MyWidget> {

  @override
  void initState() {
    super.initState();
    if (widget.id != null) {
      // init based on id
    } else if (widget.username != null) {
      // init based on username
    } else {
      // this should never happen
    }
  }

  @override
  Widget build(BuildContext context) {
    return Container(); // build some widget
  }
}

如您所见,id都不username是必需的,但我至少需要其中一个存在。什么是解决这个问题的好方法?

瓦西尔卡涅夫
class TestWidget extends StatelessWidget {
  final String id;
  final String name;

  const TestWidget.name({this.id, @required this.name});
  const TestWidget.id({@required this.id, this.name});

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Text(id ?? name),
    );
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Tkinter小部件的cnf参数

小部件作为小部件命令选项的参数

Jupyter交互ipywidgets:一个参数的多个小部件

InkWell小部件需要Material小部件祖先

Flutter:DropdownButton <BankAccountDTO>小部件需要Material小部件祖先

带有居中的小部件上的小部件

带有输出小部件的jQuery tablesorter数学小部件

从有状态小部件更新无状态小部件

今日带有参数的小部件openurl

找不到材料小部件文本字段小部件需要材料小部件祖先

找不到方向性小部件。InkWell小部件需要Directionality小部件祖先

Lottie 小部件没有动画,因为 parent 是一个有状态的小部件

如何将小部件构造函数作为参数传递给另一个小部件来构建

Flutter如何使Wrap小部件中的Text小部件从上一个小部件的末尾开始而不是在前一个小部件的下面开始?

缺少wordpress小部件的$ args参数

在SLOT的参数中传递小部件

允许一个小部件溢出到另一个小部件

在Tkinter中滚动一个小部件与另一个小部件

QScrollArea具有动态添加的小部件

具有通用UpdateView的RadioSelect小部件

如何获得具有焦点的小部件

具有多个布局的小部件

Swift可选方法参数,但至少需要填充一个

Android Studio Flutter 中没有“删除小部件”或“用其子部件替换小部件”

Qt / C ++-在关闭一个小部件时关闭两个小部件

onUpdate()没有被调用一个小部件?

创建一个带有 TextFormFiled 的 Statefule 小部件

如何从父小部件访问和更改另一个小部件 pageControllers 索引?

如何在另一个小部件的children属性中传递小部件列表?