日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Flutter?Widget?之StatefulBuilder構建方法詳解_Android

作者:程序員界的小學生 ? 更新時間: 2022-12-22 編程語言

正文

你曾否意識到你需要拆分一個大型的構建方法,但又覺得這聽起來很費勁?

試試StatefulBuilder 以最小的代價獲得一個個單獨的小部件的所有性能

想象一下,這樣的一個小部件,有一個可以切換單一標志的便宜的子部件,然后是一個昂貴的小部件。

除非絕對必要,否則你不會想要重建它

bool isExpanded = false;
Widget build(context) {
    return Column(
        children: [
            InexpendsiveStateful(
                isExpanded: isExpanded,
                onTap: (bool newValue) => setState(() => isExpanded = val),
            ),
            ExpensiveStateless(),
        ]
    );
}

性能問題解決

為了解決性能問題,用一個StatefulBuilder來包裝Stateful部分,StatefulBuilder與builder類似,除了傳遞給builder的那個額外的setState參數

bool isExpanded = falise;
Widger build(context) {
    return Column(
        children: [
            StatefulBuilder(
                builder: (ctx, setState) => 
                    InexpensiveStateful(
                        isExpanded: isExpanded,
                        onTap: (bool newValue) => setState(() => isExpanded = val),
                    )
            ),
            ExpensiveStateless(),
        ]
    );
}

為了善加利用這個嶄新的小部件,調用其特殊的setState函數來重建你的應用程序的那一部分,當那個onTap方法被調用setState時,它就是你的StatefulBuilder的setState范圍

這意味著你的ExpensiveStateless小部件仍然沒有被觸動

StatefulBuilder是一個很好的方法,可以從一個單獨的小部件中獲得所有的性能提升,而不需要做大部分的工作。

如果想了解有關# StatefulBuilder的內容,或者關于Flutter的其他功能,請訪問pub.dev

原文鏈接:https://juejin.cn/post/7169066463272108069

欄目分類
最近更新