flutterchina/flutter-in-action

思考题:为什么build方法的参数不定义成Element对象,而要定义成BuildContext ?

Closed this issue · 2 comments

这个问题可以探讨一下,不留下解答很难受呀!
先说下我的理解,使用BuildContext是不想将Element完全暴露出去,因为Element依赖Widget,如果参数使用Element, 则Widget也会依赖Element,这就导致互相依赖,形成了高耦合,使用BuildContext作为参数,可以避免互相依赖。

  1. 使用BuildContext是不想将Element完全暴露出去。Element接口非常多,有些是使用者不许要关心的,有些是在build阶段不能调用的,而在build时只需要暴露一些用户关心的和能够调用的接口。
  2. 相互依赖这个无法避免;即使参数定义为BuildContext,调用时传递的也是Element, 也是要依赖的。这个不是原因。

明白了,谢谢。