Reputation: 11
I am trying to save a file to a path in windows using path_provider: 2.0.14. and everything works fine in debug, even when I use the app that is running by the command "flutter run --release -d windows"
I mention this app is intended only for Windows. Antivirus is disabled and the released windows app has all permissions.
What I already tried: I already tried to see if there are any exceptions. There are none catched. I already applied an implementation without path_provider. I hardocoded the path just so I see if it saves anything. It does in debug or release when started by the command above but not when started manually from build/windows/Runner/Release directory or from build/windows/Runner/debug
This is the actualy function:
void funcExample({required String choseName, required String chosenPath, required UInt8List fileAsBytes,}) {
final docx = await DocxTemplate.fromBytes(fileAsBytes);
final docxGeneratedBytes = await someMethodThatChangesDocx(docx);
final path = "$chosenPath\\$chosenName.docx";
final XFile fileToBeSaved =
XFile.fromData(Uint8List.fromList(docxGeneratedBytes),name: chosenName);
await fileToBeSaved.saveTo(path);
}
I already tried to save by following snippet:
final XFile fileToBeSaved =
XFile.fromData(Uint8List.fromList(docxGeneratedBytes),name: chosenName);
final newFileWithoutCross = File(path);
await newFileWithoutCross.writeAsBytes(await fileToBeSaved.readAsBytes());
When I try to open the release executable from build/windows/Runner/Release this saveTo method from the 'cross_file' library does not work. Also it does not throw any exception.
If we put a breakpoint at line 6: value path turns out to have a value for example: "C:\Users\Acer\Downloads\newFile.docx"
Libraries that I use: file_picker: 5.2.10 path_provider: 2.0.14 docx_template: 0.3.4 file_selector: 0.9.2+5
flutter doctor --verbose:
[√] Flutter (Channel stable, 3.7.12, on Microsoft Windows [Version 10.0.19045.3086], locale ro-RO)
• Flutter version 3.7.12 on channel stable at C:\Users\Acer\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 4d9e56e694 (3 months ago), 2023-04-17 21:47:46 -0400
• Engine revision 1a65d409c7
• Dart version 2.19.6
• DevTools version 2.20.1
[√] Windows Version (Installed version of Windows is version 10 or higher)
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
• Android SDK at C:\Users\Acer\AppData\Local\Android\sdk
X cmdline-tools component is missing
Run path/to/sdkmanager --install "cmdline-tools;latest"
See https://developer.android.com/studio/command-line for more details.
X Android license status unknown.
Run flutter doctor --android-licenses
to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.
[√] Chrome - develop for the web
• Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
[√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.5.5)
• Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
• Visual Studio Community 2022 version 17.5.33627.172
• Windows 10 SDK version 10.0.22000.0
[√] Android Studio (version 2022.2) • Android Studio at C:\Program Files\Android\Android Studio • Flutter plugin can be installed from: https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 17.0.6+0-b2043.56-9586694)
[√] Connected device (3 available) • Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.19045.3086] • Chrome (web) • chrome • web-javascript • Google Chrome 114.0.5735.199 • Edge (web) • edge • web-javascript • Microsoft Edge 114.0.1823.67
[√] HTTP Host Availability • All required HTTP hosts are available
! Doctor found issues in 1 category.
I expect that file is saved fine as it works in debug mode or when is ran by flutter command
Upvotes: 1
Views: 717
Reputation: 11
The problem was when File object was created initially. The file objects created using paths from assets in release app should be done in a different way:
if (kReleaseMode) {
file = File('data\\flutter_assets\\lib\\assets\\$templateName.docx');
} else {
file = File('lib/assets/$templateName.docx');
}
Upvotes: 0
Reputation: 607
Try using this new version path_provider, also I found this answer might help you answer, also try this package path_provider_windows work specific in windows might help you, otherwise, I recommend you start the issue in the path_provider Ropositry with all details to help fix the bug for other by contributors
Upvotes: 0