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

2024-03-22

有没有一种方法可以将一个小部件作为参数传递给另一个小部件?

我的代码有类似的东西有两个TextWidget类型的BoldWidget and ItalicWidget:

abstract class TextWidget extends StatelessWidget {
  final String text;

  TextWidget({
    @required this.text,
  });
}

class BoldWidget extends TextWidget {
  @override
  Widget build(BuildContext context) {
    return Text(this.text, style: TextStyle(fontWeight: FontWeight.bold),);
  }
}

class ItalicWidget extends TextWidget {
  @override
  Widget build(BuildContext context) {
    return Text(this.text, style: TextStyle(fontStyle: FontStyle.italic),);
  }
}

在运行时,我想传入TextWidget作为另一个小部件的参数(TextDisplay) 像这样:

class TextDisplay extends StatelessWidget {
  final TextWidget widget;
  final String string;

  const TextDisplay({Key key, this.widget, this.string}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return widget(string);
  }
}

上面的代码中不起作用的是widget(string),错误消息“‘widget’不是函数”。

如何将一个小部件作为另一个参数传递,以便它可以由另一个类构造?

我的实际代码无法构建TextWidget在将其传递给之前TextDisplay as TextDisplay需要将一些论点应用到TextWidget.


您可以使用 typedef 使用 CallBack 模式:

  typedef CustomCallBack = TextWidget Function(String value);

  class TextDisplay extends StatelessWidget {
    final CustomCallBack widget;
    final String string;

    const TextDisplay({Key key, this.widget, this.string}) : super(key: key);

    @override
    Widget build(BuildContext context) {
      return widget(string);
    }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将小部件构造函数作为参数传递给另一个要构建的小部件 的相关文章

随机推荐