Flutter 里面包含兩種widget 一種可變的,一種不可變的;
在可變的widget中可以使用 setstate(){} 函數。
官方也給出了例子:
_onClick(){
setState(){
title = "123"; } } @override Widget build(BuildContext context) { // TODO: implement build return Text("$title"); }
改變title的內容,視圖也會跟着改變。類似響應式編程?真的嗎?
我們仔細看看:
我們改改試試遮掩怎么樣?
_onClick(){ title = "123"; setState(){ } }
會不會發生改變呢?
YES.
WHY?
這需要了解的有flutter的渲染機制了,她的渲染機制用的是skia,和web的渲染是一樣的,非常個輕量化和快速。
setState(){}的調用時吧視圖重新繪制了一遍,但是並不是把整個視圖diss掉再從新繪制。而是調用了build方法,繪制只是繪制不一樣的地方,這段知識會在flutter的渲染里詳細講解。