diff --git a/cookiecutter.json b/cookiecutter.json index 737943e..c8698eb 100644 --- a/cookiecutter.json +++ b/cookiecutter.json @@ -17,6 +17,8 @@ "route_url_strategy": "path", "web_renderer": "canvaskit", "use_color_emoji": "false", + "pwa_background_color": "#FFFFFF", + "pwa_theme_color": "#0175C2", "split_per_abi": false, "options": null } \ No newline at end of file diff --git a/{{cookiecutter.out_dir}}/lib/main.dart b/{{cookiecutter.out_dir}}/lib/main.dart index da49c72..140fcae 100644 --- a/{{cookiecutter.out_dir}}/lib/main.dart +++ b/{{cookiecutter.out_dir}}/lib/main.dart @@ -22,7 +22,6 @@ const pythonModuleName = "{{ cookiecutter.python_module_name }}"; final hideLoadingPage = bool.tryParse("{{ cookiecutter.hide_loading_animation }}".toLowerCase()) ?? true; -const outLogFilename = "out.log"; const errorExitCode = 100; List createControlFactories = [ @@ -55,9 +54,9 @@ if os.getenv("FLET_PLATFORM") == "android": ssl._create_default_https_context = create_default_context -out_file = open("$outLogFilename", "w+", buffering=1) +out_file = open("{outLogFilename}", "w+", buffering=1) -callback_socket_addr = os.environ.get("FLET_PYTHON_CALLBACK_SOCKET_ADDR") +callback_socket_addr = os.getenv("FLET_PYTHON_CALLBACK_SOCKET_ADDR") if ":" in callback_socket_addr: addr, port = callback_socket_addr.split(":") callback_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -77,6 +76,7 @@ sys.exit = flet_exit ex = None try: + sys.argv = {argv} runpy.run_module("{module_name}", run_name="__main__") except Exception as e: ex = e @@ -85,13 +85,15 @@ except Exception as e: sys.exit(0 if ex is None else $errorExitCode) """; +String outLogFilename = ""; + // global vars String pageUrl = ""; String assetsDir = ""; String appDir = ""; Map environmentVariables = {}; -void main() async { +void main(List args) async { if (isProduction) { // ignore: avoid_returning_null_for_void debugPrint = (String? message, {int? wrapWidth}) => null; @@ -111,10 +113,9 @@ void main() async { pageUrl: pageUrl, assetsDir: assetsDir, hideLoadingPage: hideLoadingPage, - createControlFactories: createControlFactories - ) + createControlFactories: createControlFactories) : FutureBuilder( - future: runPythonApp(), + future: runPythonApp(args), builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.hasData || snapshot.hasError) { @@ -127,11 +128,10 @@ void main() async { } else { // no result of error return FletApp( - pageUrl: pageUrl, - assetsDir: assetsDir, - hideLoadingPage: hideLoadingPage, - createControlFactories: createControlFactories - ); + pageUrl: pageUrl, + assetsDir: assetsDir, + hideLoadingPage: hideLoadingPage, + createControlFactories: createControlFactories); } }); } else if (snapshot.hasError) { @@ -186,6 +186,8 @@ Future prepareApp() async { environmentVariables["FLET_APP_DATA"] = appDataPath; environmentVariables["FLET_APP_TEMP"] = appTempPath; + outLogFilename = path.join(appTempPath, "console.log"); + environmentVariables["FLET_PLATFORM"] = defaultTargetPlatform.name.toLowerCase(); @@ -204,8 +206,13 @@ Future prepareApp() async { return ""; } -Future runPythonApp() async { - var script = pythonScript.replaceAll('{module_name}', pythonModuleName); +Future runPythonApp(List args) async { + var argvItems = args.map((a) => "\"${a.replaceAll('"', '\\"')}\""); + var argv = "[${argvItems.isNotEmpty ? argvItems.join(',') : '""'}]"; + var script = pythonScript + .replaceAll("{outLogFilename}", outLogFilename) + .replaceAll('{module_name}', pythonModuleName) + .replaceAll('{argv}', argv); var completer = Completer(); @@ -338,4 +345,4 @@ Future getUnusedPort() { socket.close(); return port; }); -} +} \ No newline at end of file diff --git a/{{cookiecutter.out_dir}}/pubspec.yaml b/{{cookiecutter.out_dir}}/pubspec.yaml index 4d79dd8..570ae27 100644 --- a/{{cookiecutter.out_dir}}/pubspec.yaml +++ b/{{cookiecutter.out_dir}}/pubspec.yaml @@ -11,7 +11,7 @@ dependencies: flutter: sdk: flutter - serious_python: 0.8.1 + serious_python: 0.8.2 flet: 0.24.1 path: ^1.9.0 diff --git a/{{cookiecutter.out_dir}}/web/manifest.json b/{{cookiecutter.out_dir}}/web/manifest.json index cff4dcc..2afd07a 100644 --- a/{{cookiecutter.out_dir}}/web/manifest.json +++ b/{{cookiecutter.out_dir}}/web/manifest.json @@ -3,8 +3,8 @@ "short_name": "{{ cookiecutter.project_name }}", "start_url": ".", "display": "standalone", - "background_color": "#0175C2", - "theme_color": "#0175C2", + "background_color": "{{ cookiecutter.pwa_background_color }}", + "theme_color": "{{ cookiecutter.pwa_theme_color }}", "description": "{{ cookiecutter.project_description }}", "orientation": "portrait-primary", "prefer_related_applications": false,