跳到主內容

效能常見問題

關於 Flutter 效能的常見問題解答

本頁面收集了一些關於評估和除錯 Flutter 效能的常見問題。

  • 我的 Flutter 應用看起來有卡頓或掉幀現象。該如何解決?
  • 如何判斷 Flutter 應用中哪些 widget 在每一幀中被重建?
    • widgets/debug.dart 中將 debugProfileBuildsEnabled 設定為 true。
    • 或者,修改 widgets/framework.dart 中的 performRebuild 函式,忽略 debugProfileBuildsEnabled 並始終呼叫 Timeline.startSync(...)/finish
    • 如果你使用 IntelliJ,可以使用該資料的圖形化檢視。選擇 Track widget rebuilds(追蹤 widget 重建),你的 IDE 就會顯示哪些 widget 進行了重建。
  • 如何解決因昂貴的 Dart 非同步函式呼叫阻塞 UI 執行緒而導致的糟糕動畫效果?
  • 如何確定使用者下載的 Flutter 應用安裝包大小?
  • 如何擷取正在執行的應用螢幕截圖並將其匯出為 SKP 檔案?
    • 執行 flutter screenshot --type=skia --observatory-uri=...
    • 注意檢視截圖的一個已知問題
    • 要分析和視覺化 SKP 檔案,請檢視 Skia WASM 偵錯程式
  • 如何從裝置中檢索著色器持久化快取?

    • 在 Android 上,你可以執行以下操作
      adb shell
      run-as <com.your_app_package_name>
      cp <your_folder> <some_public_folder, e.g., /sdcard> -r
      adb pull <some_public_folder/your_folder>
      
  • 如何在 Fuchsia 中執行跟蹤(trace)?