思考题:为什么build方法的参数不定义成Element对象,而要定义成BuildContext ?
Closed this issue · 2 comments
evanwsu commented
这个问题可以探讨一下,不留下解答很难受呀!
先说下我的理解,使用BuildContext是不想将Element完全暴露出去,因为Element依赖Widget,如果参数使用Element, 则Widget也会依赖Element,这就导致互相依赖,形成了高耦合,使用BuildContext作为参数,可以避免互相依赖。
wendux commented
- 使用BuildContext是不想将Element完全暴露出去。Element接口非常多,有些是使用者不许要关心的,有些是在build阶段不能调用的,而在build时只需要暴露一些用户关心的和能够调用的接口。
- 相互依赖这个无法避免;即使参数定义为BuildContext,调用时传递的也是Element, 也是要依赖的。这个不是原因。
evanwsu commented
明白了,谢谢。