本頁整理了有關評估與除錯 Flutter 效能的常見問題。

  • 如何判斷 Flutter 應用程式中哪些元件(Widgets)在每一幀被重建?
    • widgets/debug.dart 中將 debugProfileBuildsEnabled 設為 true。
    • 或者,修改 widgets/framework.dart 中的 performRebuild 函式,讓其忽略 debugProfileBuildsEnabled 並總是呼叫 Timeline.startSync(...)/finish
    • 如果你使用 IntelliJ,可以透過圖形介面檢視這些資料。選擇 Track widget rebuilds,IDE 會顯示哪些元件被重建。
  • 如果我的動畫因為耗時的 Dart 非同步(async)函式呼叫而導致 UI 執行緒被阻塞,該如何解決?
  • 如何將正在執行的應用程式截圖並匯出為 SKP 檔案?
    • 執行 flutter screenshot --type=skia --observatory-uri=...
    • 注意已知的截圖檢視問題:
    • 若要分析與視覺化 SKP 檔案,請參考 Skia WASM debugger
  • 如何從裝置中取得 shader persistent cache(著色器持久快取)?

    • 在 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)?