gpt4 book ai didi

flutter - 如何在flutter中将Widget传递给const Constructor?

转载 作者:行者123 更新时间:2023-12-03 04:15:46 25 4
gpt4 key购买 nike

我有一个类(class)可以在我的flutter应用程序中存储标题,正文和选项卡图标。

class Destination {
const Destination(
{this.title,
this.icon,
this.color = Colors.blue,
this.body: const Center(
child: Text("Example"),
)});

final String title;
final IconData icon;
final MaterialColor color;
final Widget body;
}

我正在尝试使用创建所有选项卡的列表
const List<Destination> allDestinations = <Destination>[
Destination(title: 'Calculate', icon: Icons.edit, body: const Calculator()),
Destination(
title: 'Detail',
icon: Icons.details,
)
];

但是它不断显示错误,无论我是否添加const,都必须使用常量值初始化const变量。 Calculator()只是StatefulWidget。因此,感谢您对我做错事的帮助。

最佳答案

如我所说,Calculator没有const构造函数。有时您无法为Widget创建const构造函数。因为小部件必须是immutable class,这可能会破坏您的用途。

在Flutter中,一些小部件具有const constructor,而有些则没有(例如Column,Row,AnimatedContainer)。通常原因是它们是交互式的(内部和外部)。

示例中的另一个技巧是,如果将const放在variable的右侧,即does not need any const的分配位置。因为如果此变量是const,则右侧必须已经是const,因此无需每次都定义const

同样的事情也适用于树,如果父级具有const,子级必须是const,而无需放置另一个const。

在您的示例中,如果Calculator具有const构造函数,则将const放入Calculator不会有任何区别。

因此,它具有与您完全相同的功能:

const List<Destination> allDestinations = <Destination>[
Destination(title: 'Calculate', icon: Icons.edit, body: Calculator()),
Destination(
title: 'Detail',
icon: Icons.details,
)
];

关于flutter - 如何在flutter中将Widget传递给const Constructor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58671790/

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