Dart / Flutter和REST客户端

gk7wooem  于 2023-05-26  发布在  Flutter
关注(0)|答案(1)|浏览(157)

我对达特的记忆模型不太精通。在我的应用程序中,我创建了一个与REST API对话的客户端,并将此客户端传递给几个小部件。此客户端处理令牌(作为属性)以使用API进行身份验证。

@override
  void initState() {
    super.initState();
    _widgetOptions = <Widget>[
      MyAwesomeWidget(client: widget.client),
      MyWidget(client: widget.client),
      SettingsPage(client: widget.client)
    ];
  }

SettingsPage小部件包含一个注销按钮,它使客户端持有的令牌无效。此时,我希望客户端不能被所有引用它的小部件使用(不要担心,我有代码在所有小部件中处理这种情况)。我在这里吗?或者客户端以某种方式复制到其他小部件中?

drkbr07n

drkbr07n1#

如果令牌数据成员是在客户机内部定义的,而不是由消费者小部件从外部复制的,那么它将按照您的预期运行。

  • 如果您只是使令牌客户端无效(可能稍后返回相同的令牌),请确保它被正确封装。
  • 如果您正在使令牌服务器端无效,那么您的消费者小部件应该处理失败的API请求。

至于Dart内存模型:
原语(如int、bool和num)通过值传递。对象通过引用传递。这与Java中传递参数的行为相同。”-艾米丽福图纳

相关问题