Provider.of<IsSpecialist>(context).value
在该Navigator.push上方可以访问:
Navigator.push(context, MaterialPageRoute(builder: (c) => ChatScreen()));
但是在Navigator.push之后,它在ChatScreen中不可用:
Provider.of<IsSpecialist>(context).value
返回
Could not find the correct Provider above this Widget
为什么上下文中断了?如何保持原始语境? 我当前的临时解决方案是在导航器之前从Provider获取isSpecialist并将其作为参数发送到ChatScreen,但是我需要找到一个更好的解决方案。
答案 0 :(得分:1)
上下文并不会丢失,您使用的是错误的上下文。
假设A -> B -> C
是小部件层次结构。
我认为您正在IsSpecialist
上推送B
并在C
中访问它,但是您正在使用A
的上下文。
如果您可以发布更多代码以了解小部件层次结构,这将更加清楚。
答案 1 :(得分:0)
提供程序应放置在小部件树的顶部,即MaterialApp上方