Flutter 里面包含兩種widget 一種可變的纽竣,一種不可變的聋袋;
在可變的widget中可以使用 setstate(){} 函數(shù)幽勒。
官方也給出了例子:
_onClick(){
setState(){
title = "123";
}
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return Text("$title");
}
改變title的內(nèi)容,視圖也會(huì)跟著改變顷霹。類似響應(yīng)式編程淋淀?真的嗎遥昧?
我們仔細(xì)看看:
我們改改試試遮掩怎么樣?
_onClick(){
title = "123";
setState(){
}
}
會(huì)不會(huì)發(fā)生改變呢朵纷?
YES.
WHY?
這需要了解的有flutter的渲染機(jī)制了炭臭,她的渲染機(jī)制用的是skia,和web的渲染是一樣的,非常個(gè)輕量化和快速袍辞。
setState(){}的調(diào)用時(shí)吧視圖重新繪制了一遍鞋仍,但是并不是把整個(gè)視圖diss掉再?gòu)男吕L制。而是調(diào)用了build方法搅吁,繪制只是繪制不一樣的地方那婉,這段知識(shí)會(huì)在flutter的渲染里詳細(xì)講解呛谜。