![](/img/trans.png)
[英]getApplicationDocumentsDirectory is not working on flutter desktop (windows)
[英]Flutter: getApplicationDocumentsDirectory() returns null
方法 getApplicationDocumentsDirectory() 返回 null。 我不明白為什么......
getApplicationDocumentsDirectory().then((directory) {
print(_directory);
_directory = directory;
});
null 打印到控制台...
我需要注冊某些東西或請求許可嗎?
您需要詢問 WRITE_EXTERNAL_STORAGE 和 READ_EXTERNAL_STORAGE 權限。
在您的清單中添加如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx.yyy">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
...
</manifest>
並且還需要運行時請求權限,通過使用 simple_permissions 包。 參考以下代碼:
import 'package:simple_permissions/simple_permissions.dart';
PermissionStatus permissionResult = await SimplePermissions.requestPermission(Permission. WriteExternalStorage);
if (permissionResult == PermissionStatus.authorized){
// code of read or write file in external storage (SD card)
getApplicationDocumentsDirectory().then((directory) {
print(_directory);
_directory = directory;
});
}
在我這邊,我用getTemporaryDirectory
替換了getApplicationDocumentsDirectory
,它有效,我猜第一個沒有錯誤捕獲!
在 AndroidManifest.xml 中,在
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xxx.yyyy.zzz.www">
...
</manifest>
標簽,把以下幾行授予權限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
如果您按照建議添加了 android 權限但它仍然不起作用,請嘗試添加WidgetsFlutterBinding.ensureInitialized();
作為main
函數中的第一件事。 這為我修好了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.