我对达特的记忆模型不太精通。在我的应用程序中,我创建了一个与REST API对话的客户端,并将此客户端传递给几个小部件。此客户端处理令牌(作为属性)以使用API进行身份验证。
@override
void initState() {
super.initState();
_widgetOptions = <Widget>[
MyAwesomeWidget(client: widget.client),
MyWidget(client: widget.client),
SettingsPage(client: widget.client)
];
}
SettingsPage
小部件包含一个注销按钮,它使客户端持有的令牌无效。此时,我希望客户端不能被所有引用它的小部件使用(不要担心,我有代码在所有小部件中处理这种情况)。我在这里吗?或者客户端以某种方式复制到其他小部件中?
1条答案
按热度按时间drkbr07n1#
如果令牌数据成员是在客户机内部定义的,而不是由消费者小部件从外部复制的,那么它将按照您的预期运行。
至于Dart内存模型:
原语(如int、bool和num)通过值传递。对象通过引用传递。这与Java中传递参数的行为相同。”-艾米丽福图纳