Flutter 優化:佈局時儘量用 const

一、說明

看到很多 Flutter 構建 UI 時會比較多用到 const,爲什麼不直接創建實例,而要在前端加一個 const 呢 ?

child: const Text('加 const');

VS

child: Text('不加 const');

二、儘量用 const 的理由

  1. 當我們調用 setState() 後,Flutter 會調用 build 方法,並且 rebuild 其中的每一個組件,避免全部重新構建的方法就是用 const。
  2. 如果一個組件更新頻繁(比如動畫),用 const 後可以減少垃圾回收。

三、示例

class _MyWidgetState extends State<MyWidget> {

  String title = "Title";

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(title),
      ),
      body: Column(
        children: <Widget>[
          const Text("Text 1"),
          const Padding(
            padding: const EdgeInsets.all(8.0),
            child: const Text("Another Text widget"),
          ),
          const Text("Text 3"),
        ],
      ),
      floatingActionButton: FloatingActionButton(
        child: const Icon(Icons.add),
        onPressed: () {
          setState(() => title = 'New Title');
        },
      ),
    );
  }
}

當你點擊 FloatingActionButton 調用 setState 後,所有 const 定義的組件都不會重新構建。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章