gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 06:37:13 24 4
gpt4 key购买 nike

有没有办法将一个小部件作为参数传递给另一个小部件?

我的代码与此类似,有两个 TextWidget BoldWidgetItalicWidget:

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' isn't a function”。

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

我的实际代码无法在将 TextWidget 传递给 TextDisplay 之前构建它,因为 TextDisplay 需要将一些参数应用于 TextWidget.

最佳答案

您可以使用 typedef 来使用回调模式:

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

关于dart - 如何将小部件构造函数作为参数传递给另一个要构建的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53310934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com