|

FletでWindows向けビルドが失敗する

Fletのトラブルシューティング記事です。

Fletを使ってWindowsアプリを作っていたところ、theme.dartが原因でビルドエラーが出てしまいました。

Fletのバージョン依存の問題らしく、回避のために記事にしておこうと思います。

先に結論

Fletのバージョン0.25.2に問題があるようです。

Windows向けにビルドしたい場合、別のバージョンを使いましょう。

Flet

https://flet.dev

Fletとは、Pythonを利用してGUIアプリケーションを開発するためのフレームワークです。

  • Python言語で完結すること
  • クロスプラットフォーム(モバイル、ウェブ、デスクトップ)

この2点を大きな特徴としています。中身はFlutterのため、モダンなUIを持ち、ホットリードが可能です。
アプリをさっと作って動かすだけであればpip installだけで準備ができるため、環境構築もカンタンです。

ただし、まだバージョン1.0を迎えていないため、利用する際には注意が必要です。

ビルドエラー

今回発生したエラーの抜粋です。

../../../../../../AppData/Local/Pub/Cache/hosted/pub.dev/flet-0.25.2/lib/src/utils/theme.dart(356,28): error G44692867: A value of type 'TabBarThemeData' can't be returned from a function with return type     
'TabBarTheme?'. [C:MYPROJECT\build\flutter\build\windows\x64\flutter\flutter_assemble.vcxproj]
../../../../../../AppData/Local/Pub/Cache/hosted/pub.dev/flet-0.25.2/lib/src/utils/theme.dart(438,28): error G44692867: A value of type 'DialogThemeData' can't be returned from a function with return type     
'DialogTheme?'. [C:MYPROJECT\build\flutter\build\windows\x64\flutter\flutter_assemble.vcxproj]
../../../../../../AppData/Local/Pub/Cache/hosted/pub.dev/flet-0.25.2/lib/src/utils/theme.dart(482,26): error G44692867: A value of type 'CardThemeData' can't be returned from a function with return type       
'CardTheme?'. [C:MYPROJECT\build\flutter\build\windows\x64\flutter\flutter_assemble.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(254,5): error MSB8066:
'C:MYPROJECT\build\flutter\build\windows\x64\CMakeFiles\7709877bbcac1fac002d182c7d3db39e\flutter_windows.dll.rule;C:MYPROJECT\build
\flutter\build\windows\x64\CMakeFiles\7bf40fe8777649bc7ee9e5f4af6acc77\flutter_assemble.rule' のカスタム ビルドがコード 1 で終了しました。
[C:MYPROJECT\build\flutter\build\windows\x64\flutter\flutter_assemble.vcxproj]
Build process failed.

theme.dartでエラーが発生しています。Fletを使っているだけであれば、通常は意識しないファイルです。

TabBarThemeDataやDialogThemeDataがどうこうとメッセージが表示されていますが、このプロジェクトでは使っていません。

ちなみに、環境は以下の通りです。

OSWindows 11
Pythonバージョン3.12.8
Fletバージョン0.25.2

原因

結論の繰り返しになりますが、Fletのバージョン0.25.2に由来する問題です。redditに同じエラーに遭遇した方がいました。

24/12/14から25/1/27の間にFletをインストールした環境の場合、今回のエラーを踏んでいる可能性があります。

バージョンリリース日
v0.25.12024/11/30
v0.25.22024/12/14
v0.26.02025/1/27

対処方法

0.25.2に変わる別のバージョンをインストールします。

インストール可能なバージョンの確認

# 25/1/28時点
$ pip index versions flet
WARNING: pip index is currently an experimental command. It may be removed/changed in a future release without prior warning.
flet (0.26.0)
Available versions: 0.26.0, 0.25.2, 0.25.1, 0.25.0, 0.24.1, 0.24.0, 0.23.2, 0.23.1, 0.23.0, 0.22.1, 0.22.0, 0.21.2, 0.19.0, 0.18.0, 0.17.0, 0.16.0, 0.15.0, 0.14.0, 0.13.0, 0.12.2, 0.12.1, 0.12.0, 0.11.0, 0.10.3, 0.10.2, 0.10.1, 0.10.0, 0.9.0, 0.1.65, 0.1.64, 0.1.63, 0.1.62, 0.1.61, 0.1.60, 0.1.59, 0.1.58, 0.1.57, 0.1.56, 0.1.0
  INSTALLED: 0.25.2
  LATEST:    0.26.0

次のバージョンである0.26.0をインストールすることにします。

対象パッケージの確認

$ pip list | grep flet
flet                  0.25.2
flet-cli              0.25.2
flet-desktop          0.25.2
flet-web              0.25.2

私の環境では4つ見つかりました。これ以外に見つかった場合も、まとめてバージョンアップしてしまうのが良いかと思います。

※fletのみ0.26.0に更新するとバージョンの不整合が起きます

バージョンを指定してインストール 

問題のあるバージョンをインストールしないよう、requirements.txtを更新しておきます。

# requirement.txt
flet >= 0.26.0
flet-cli >= 0.26.0
flet-desktop >= 0.26.0
flet-web >= 0.26.0

requirements.txtを利用してインストール

pip install -r requirement.txt

ビルド

通常通りビルドします。

$ flet build windows
[20:45:58] Created Flutter bootstrap project from gh:flet-dev/flet-build-template with ref "0.26.0"
[20:47:10] Packaged Python app ✅
[20:47:12] Customized app icons and splash images ✅
[20:47:20] Generated app icons ✅
[20:49:18] Built Windows app ✅
[20:49:19] Copied build to build\windows directory ✅
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 Successfully built your Windows app! 🥳 Find it in build\windows directory. 📁          

他に問題がなければ、この通り成功するはずです。

補足

そもそもビルドが成功したことがない場合、以下を確認してみると良いかもしれません。

  • Visual Studio Code 2022が必要
    • “C++によるデスクトップ開発”というワークロードが必要
  • Windowsの開発者モードをオンにする必要がある
    • システム >  開発者向け > 開発者モード を”オン”
  • 必要なパッケージがインストールされているか
    • 意図せず別のvenvを使っていたりして…

以上です。