- StatelessWidget & StatefullWidget的区别
- 组建之间如何传递数据给需要的小部件
- StatelessWidget & StatefullWidget的区别
(无状态组件)StatelessWidget是不可变的(less),意味着他们的属性不可改变
(有状态组件)StatefullWidget 持有的状态可能在Widget生命周期种发生变化。 实现它至少需要两个类:一个StatefullWidget类。 一个State类。即继承StatefullWidget重写createState方法,状态类必须继承State类
- 组建之间如何传递数据给需要的小部件
第一种是一层一层通过构造函数的传递
第二种可以直接传递
1 InheritedWidget
2 使用ScopedModel (属于第三方,需要依赖)
scoped_model: ^0.3.0
class CounterProvider extends InheritedWidget {
final int count;
final VoidCallback increaseCount;
final Widget child;
CounterProvider({
this.count,
this.increaseCount,
this.child,
}) : super(child: child);
static CounterProvider of(BuildContext context) =>
context.inheritFromWidgetOfExactType(CounterProvider);
@override
bool updateShouldNotify(InheritedWidget oldWidget) {
return true;
}
}
class CounterModel extends Model {
int _count = 0;
int get count => _count;
void increaseCount() {
_count += 1;
notifyListeners();
}
}