@@ -74,6 +74,7 @@ def __init__(self, parser: argparse.ArgumentParser) -> None:
7474 self .build_dir = None
7575 self .flutter_dir : Optional [Path ] = None
7676 self .flutter_packages_dir = None
77+ self .flutter_packages_temp_dir = None
7778 self .flutter_exe = None
7879 self .skip_flutter_doctor = get_bool_env_var ("FLET_CLI_SKIP_FLUTTER_DOCTOR" )
7980 self .no_rich_output = get_bool_env_var ("FLET_CLI_NO_RICH_OUTPUT" )
@@ -684,6 +685,9 @@ def initialize_build(self):
684685 self .build_dir = self .python_app_path .joinpath ("build" )
685686 self .flutter_dir = self .build_dir .joinpath ("flutter" )
686687 self .flutter_packages_dir = self .build_dir .joinpath ("flutter-packages" )
688+ self .flutter_packages_temp_dir = self .build_dir .joinpath (
689+ "flutter-packages-temp"
690+ )
687691 self .out_dir = (
688692 Path (self .options .output_dir ).resolve ()
689693 if self .options .output_dir
@@ -1537,7 +1541,7 @@ def package_python_app(self):
15371541 assert self .package_app_path
15381542 assert self .build_dir
15391543 assert self .flutter_dir
1540- assert self .flutter_packages_dir
1544+ assert self .flutter_packages_temp_dir
15411545
15421546 hash = HashStamp (self .build_dir / ".hash" / "package" )
15431547
@@ -1600,10 +1604,12 @@ def package_python_app(self):
16001604 )
16011605
16021606 # flutter-packages variable
1603- if self .flutter_packages_dir .exists ():
1604- shutil .rmtree (self .flutter_packages_dir )
1607+ if self .flutter_packages_temp_dir .exists ():
1608+ shutil .rmtree (self .flutter_packages_temp_dir )
16051609
1606- package_env ["SERIOUS_PYTHON_FLUTTER_PACKAGES" ] = str (self .flutter_packages_dir )
1610+ package_env ["SERIOUS_PYTHON_FLUTTER_PACKAGES" ] = str (
1611+ self .flutter_packages_temp_dir
1612+ )
16071613
16081614 # exclude
16091615 exclude_list = ["build" ]
@@ -1727,14 +1733,20 @@ def get_bool_setting(self, cli_option, pyproj_setting, default_value):
17271733
17281734 def register_flutter_extensions (self ):
17291735 assert self .flutter_packages_dir
1736+ assert self .flutter_packages_temp_dir
17301737 assert isinstance (self .flutter_dependencies , dict )
17311738 assert self .template_data
17321739
1733- if not self .flutter_packages_dir .exists ():
1740+ if not self .flutter_packages_temp_dir .exists ():
17341741 return
17351742
17361743 self .status .update (f"[bold blue]Registering Flutter user extensions..." )
17371744
1745+ # copy packages from temp to permanent location
1746+ if self .flutter_packages_dir .exists ():
1747+ shutil .rmtree (self .flutter_packages_dir , ignore_errors = True )
1748+ shutil .move (self .flutter_packages_temp_dir , self .flutter_packages_dir )
1749+
17381750 for fp in os .listdir (self .flutter_packages_dir ):
17391751 if (self .flutter_packages_dir / fp / "pubspec.yaml" ).exists ():
17401752 ext_dir = str (self .flutter_packages_dir / fp )
0 commit comments