为什么build()
方法放在State(而不是StatefulWidget
)中 ?这主要是为了提高开发的灵活性。如果将build()
方法在StatefulWidget
中则会有两个问题:
-
状态访问不便。
试想一下,如果我们的
StatefulWidget
有很多状态,而每次状态改变都要调用build
方法,由于状态是保存在State中的,如果build
方法在StatefulWidget
中,那么build
方法和状态分别在两个类中,那么构建时读取状态将会很不方便!试想一下,如果真的将build
方法放在StatefulWidget中的话,由于构建用户界面过程需要依赖State,所以build
方法将必须加一个State
参数,大概是下面这样:Widget build(BuildContext context, State state){ //state.counter ... }
这样的话就只能将State的所有状态声明为公开的状态,这样才能在State类外部访问状态!但是,将状态设置为公开后,状态将不再具有私密性,这就会导致对状态的修改将会变的不可控。但如果将
build()
方法放在State中的话,构建过程不仅可以直接访问状态,而且也无需公开私有状态,这会非常方便。 -
继承
StatefulWidget
不便。