当消费者触发重建时,MaterialApp 主页小部件不会被渲染。需要油漆
Posted
技术标签:
【中文标题】当消费者触发重建时,MaterialApp 主页小部件不会被渲染。需要油漆【英文标题】:MaterialApp home widget doesn't get rendered when Consumer triggers rebuild. NEEDS-PAINT 【发布时间】:2020-09-09 04:09:15 【问题描述】:我在玩 Flutter,在构建登录流程时偶然发现了一个我无法弄清楚的问题。 主要思想是我正在使用身份验证详细信息的提供者,这暴露了一个吸气剂,说明用户是否经过身份验证。基于此,我想有条件地将 home 小部件设置为应用程序的仪表板或欢迎屏幕。这种技术与 Maximilian Schwarzmüller 在 udemy 课程中使用的技术完全相同。
现在,我使用调试器进行了检查,成功设置身份验证后,主页小部件没有更改。在 DevTools 中,我可以看到 DashboardScreen 小部件已添加到树中,但未显示在屏幕上。它虽然有一条带有“NEEDS-PAINT”的奇怪消息。
这是 DashboardScreen 小部件,仅供参考:
我做错了什么吗? 谢谢!
【问题讨论】:
【参考方案1】:成功设置身份验证后,您是否在 Auth
业务逻辑中调用 notifyListeners()
?在您这样做之前,Consumer 不会自行重建。
【讨论】:
是的,它被称为。调试时,我也可以看到调用了 build 方法,但实际上小部件没有正确显示,正如您在 DevTools 的屏幕截图中看到的那样,DashboardScreen 在那里,但没有在模拟器上显示。这是区别,就在调用 notifyListeners() 之前:imgur.com/a/IaUj3qn 我没有看到你在使用命名路由。您可能需要在 initState 中监听提供者并从那里推送命名路由。 另外,小部件是无状态的。以上是关于当消费者触发重建时,MaterialApp 主页小部件不会被渲染。需要油漆的主要内容,如果未能解决你的问题,请参考以下文章
我们如何使用 Flutter 中的底部导航栏触发有状态小部件以通过导航重建自身?