網站首頁 編程語言 正文
正文
你曾否意識到你需要拆分一個大型的構建方法,但又覺得這聽起來很費勁?
試試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
相關推薦
- 2022-01-15 Meteor 項目部署至服務器(windows)
- 2023-12-12 設置線程名稱(兩種方法)
- 2022-05-12 Kotlin 接口 interface 默認實現了open。并且可以提供默認實現
- 2022-05-10 bean基于xml文件
- 2022-07-08 C#實現收發郵件功能_C#教程
- 2023-11-22 python使用matplotlib.pyplot畫不了圖
- 2022-09-03 ASP.NET實現Repeater控件的數據綁定_基礎知識
- 2022-03-24 C++?Primer的變量和基本類型詳解_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支