gpt4 book ai didi

flutter - 返回不同的 StatefulWidgets 的方法在返回不同的小部件时不更新

转载 作者:IT王子 更新时间:2023-10-29 07:09:17 25 4
gpt4 key购买 nike

我有一个方法可以根据枚举的值返回两个有状态小部件之一。但是,即使我可以通过调试器看到正在返回“正确”的小部件,UI 也只会显示第一个呈现的小部件。状态对象似乎以某种方式在小部件的不同实例之间共享,或者我遗漏了一些东西。

Widget _buildInfoCard(LoginStatus status) {
switch(status) {
case LoginStatus.LOGIN_FAILED:
return InfoCard("Login failed, please check your username and password.");
default:
return InfoCard("Please login with your username and password");
}
}

我希望显示的信息卡的文本与返回的信息卡的文本相对应,但默认大小写始终存在。我已经逐步完成代码,返回了正确的小部件,之后没有返回默认小部件,因此应该显示,但没有显示。

编辑:_buildInfoCard 方法在 streambuilder 内部被调用。

最佳答案

您需要为 StatefulWidget 的每个实例提供一个 key ,否则它们可能会共享状态,如下所示:

Widget _buildInfoCard(LoginStatus status) {
switch (status) {
case LoginStatus.LOGIN_FAILED:
return InfoCard(
key: ValueKey(status),
message: "Login failed, please check your username and password.",
);
default:
return InfoCard(
key: ValueKey(status),
message: "Please login with your username and password",
);
}
}

关于我们为什么需要 key 的非常好的文章:https://medium.com/flutter/keys-what-are-they-good-for-13cb51742e7d

关于flutter - 返回不同的 StatefulWidgets 的方法在返回不同的小部件时不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56428502/

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