我正在处理一个我有一个select p.id, p.name, d.v1, d.v2, d.v3, d.date
from people p
inner join data d on d.id = p.id
where d.date = (select max(d1.date) from data d1 where d1.id = d.id)
页面(Apartment
)的情况,并且在此页面上,我还有一个“类似公寓”列表。
当用户单击任何类似的公寓时,它们会StatefulWidget
进入Navigate
类的其他实例,但是具有新内容。
但是,通过日志我意识到,每次导航到新的Apartment
页时,堆栈上Apartment
类的所有现有实例也会被重新创建,并且会引起问题。 / p>
这是我用来导航到新实例的代码:
Apartment
我希望以前创建的 Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => AptPage(
key: ObjectKey("$buildingId$unitNum"),
unitNumber: unitNum,
buildingId: buildingId,
cubit: BlocProvider.of<BuildingInfoCubit>(context)),
),
);
页不会再次被创建,而且我仍然希望能够返回到堆栈上的先前Apartment
页。
(我使用ObjectKey错误吗??)
答案 0 :(得分:0)
在这种情况下,简而言之,在处理从api或任何其他方法获取的变量时,您需要更改整个过程,您需要使用此MVC插件将信息和变量保存到Controller类并通过小部件实现控制器,以便您可以在无限数量的小部件中获取所需的变量,或者如果发现对MVC模式的更改很困难,则可以使用notifiable
变量
并在使用变量时通过应用程序将其分配为公共变量,因此从变量自身获取数据并在更新时通知它,以免在每次小部件调用时重新加载它,我不建议在变量之间发送数据小部件作为路由参数
答案 1 :(得分:0)
我不确定我是否正确回答了您的问题,但是如果您要检查与以前的对象相同的对象而不创建新对象,则可以使用“ 等同”。您的对象将从“ equatable
”扩展。
但是如果您要导航到新的小部件,即使它与您所在的同一个,创建新的实例也是正常的。
如果您能给我带来美好的一面……