From 8cb2ad3e3502e0ba1e0a1b20c04f8498f489d551 Mon Sep 17 00:00:00 2001 From: bahtya Date: Wed, 8 Apr 2026 21:28:35 +0800 Subject: [PATCH 1/3] fix: respect pre-set environment variables in build template The generated main.dart unconditionally overwrites FLET_* environment variables (FLET_SERVER_PORT, FLET_SERVER_UDS_PATH, FLET_APP_STORAGE_DATA, etc.), making it impossible to customize them in containerized or sandboxed environments (e.g., Flatpak on Linux). Fix by: 1. Initializing environmentVariables from Platform.environment instead of an empty map 2. Using putIfAbsent() instead of direct assignment so pre-set values are preserved Fixes #6393 Signed-off-by: bahtya --- .../{{cookiecutter.out_dir}}/lib/main.dart | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/sdk/python/templates/build/{{cookiecutter.out_dir}}/lib/main.dart b/sdk/python/templates/build/{{cookiecutter.out_dir}}/lib/main.dart index 05f4ceeb40..f80e73e8a3 100644 --- a/sdk/python/templates/build/{{cookiecutter.out_dir}}/lib/main.dart +++ b/sdk/python/templates/build/{{cookiecutter.out_dir}}/lib/main.dart @@ -65,7 +65,7 @@ List _args = []; String pageUrl = ""; String assetsDir = ""; String appDir = ""; -Map environmentVariables = {}; +Map environmentVariables = Map.from(Platform.environment); void main(List args) async { @@ -187,29 +187,29 @@ Future prepareApp() async { } } - environmentVariables["FLET_APP_STORAGE_DATA"] = appDataPath; - environmentVariables["FLET_APP_STORAGE_TEMP"] = appTempPath; + environmentVariables.putIfAbsent("FLET_APP_STORAGE_DATA", () => appDataPath); + environmentVariables.putIfAbsent("FLET_APP_STORAGE_TEMP", () => appTempPath); outLogFilename = path.join(appTempPath, "console.log"); - environmentVariables["FLET_APP_CONSOLE"] = outLogFilename; + environmentVariables.putIfAbsent("FLET_APP_CONSOLE", () => outLogFilename); - environmentVariables["FLET_PLATFORM"] = - defaultTargetPlatform.name.toLowerCase(); + environmentVariables.putIfAbsent("FLET_PLATFORM", + () => defaultTargetPlatform.name.toLowerCase()); if (defaultTargetPlatform == TargetPlatform.windows) { // use TCP on Windows var tcpPort = await getUnusedPort(); pageUrl = "tcp://localhost:$tcpPort"; - environmentVariables["FLET_SERVER_PORT"] = tcpPort.toString(); + environmentVariables.putIfAbsent("FLET_SERVER_PORT", () => tcpPort.toString()); } else { // use UDS on other platforms pageUrl = "flet_$pid.sock"; - environmentVariables["FLET_SERVER_UDS_PATH"] = pageUrl; + environmentVariables.putIfAbsent("FLET_SERVER_UDS_PATH", () => pageUrl); } } if (!kIsWeb && assetsDir.isNotEmpty) { - environmentVariables["FLET_ASSETS_DIR"] = assetsDir; + environmentVariables.putIfAbsent("FLET_ASSETS_DIR", () => assetsDir); } return ""; @@ -245,7 +245,7 @@ Future runPythonApp(List args) async { debugPrint('Python output Socket Server is listening on $socketAddr'); } - environmentVariables["FLET_PYTHON_CALLBACK_SOCKET_ADDR"] = socketAddr; + environmentVariables.putIfAbsent("FLET_PYTHON_CALLBACK_SOCKET_ADDR", () => socketAddr); void closeOutServer() async { outSocketServer.close(); From dd8064611b0b029ee739b99c37108fd6c600bc52 Mon Sep 17 00:00:00 2001 From: bahtya Date: Wed, 8 Apr 2026 23:32:17 +0800 Subject: [PATCH 2/3] style: fix indentation of FLET_ASSETS_DIR putIfAbsent Signed-off-by: bahtya --- .../templates/build/{{cookiecutter.out_dir}}/lib/main.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/python/templates/build/{{cookiecutter.out_dir}}/lib/main.dart b/sdk/python/templates/build/{{cookiecutter.out_dir}}/lib/main.dart index f80e73e8a3..27a2989e24 100644 --- a/sdk/python/templates/build/{{cookiecutter.out_dir}}/lib/main.dart +++ b/sdk/python/templates/build/{{cookiecutter.out_dir}}/lib/main.dart @@ -209,7 +209,7 @@ Future prepareApp() async { } if (!kIsWeb && assetsDir.isNotEmpty) { - environmentVariables.putIfAbsent("FLET_ASSETS_DIR", () => assetsDir); + environmentVariables.putIfAbsent("FLET_ASSETS_DIR", () => assetsDir); } return ""; From 81f1ec842d0da1e378d3f2d65eff862086adc7c5 Mon Sep 17 00:00:00 2001 From: bahtya Date: Thu, 9 Apr 2026 00:17:28 +0800 Subject: [PATCH 3/3] style: fix indentation per review feedback Signed-off-by: bahtya --- .../templates/build/{{cookiecutter.out_dir}}/lib/main.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/python/templates/build/{{cookiecutter.out_dir}}/lib/main.dart b/sdk/python/templates/build/{{cookiecutter.out_dir}}/lib/main.dart index 27a2989e24..e5db1f35b3 100644 --- a/sdk/python/templates/build/{{cookiecutter.out_dir}}/lib/main.dart +++ b/sdk/python/templates/build/{{cookiecutter.out_dir}}/lib/main.dart @@ -193,8 +193,8 @@ Future prepareApp() async { outLogFilename = path.join(appTempPath, "console.log"); environmentVariables.putIfAbsent("FLET_APP_CONSOLE", () => outLogFilename); - environmentVariables.putIfAbsent("FLET_PLATFORM", - () => defaultTargetPlatform.name.toLowerCase()); + environmentVariables.putIfAbsent( + "FLET_PLATFORM", () => defaultTargetPlatform.name.toLowerCase()); if (defaultTargetPlatform == TargetPlatform.windows) { // use TCP on Windows