La méthode getApplicationDocumentsDirectory () renvoie null. Je ne comprends pas pourquoi ....
getApplicationDocumentsDirectory().then((directory) {
print(_directory);
_directory = directory;
});
null est affiché sur la console ...
Dois-je enregistrer quelque chose ou demander des autorisations?
3 Réponses :
Vous devez demander l'autorisation WRITE_EXTERNAL_STORAGE et READ_EXTERNAL_STORAGE.
Dans votre manifeste, ajoutez comme ceci:
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;
});
}
et avez également besoin de l'autorisation de requête d'exécution, en utilisant le package simple_permissions. Reportez-vous au code ci-dessous:
<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>
Merci :) Mais suivre ce tutoriel a sauvé mon problème sans utiliser les permissions ( youtu.be/Hqqz2BaPUis )
De mon côté, je remplace getApplicationDocumentsDirectory par getTemporaryDirectory , ça marche, je suppose que le premier ne détecte aucune erreur!
Sur AndroidManifest.xml, dans la balise
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
, placez les lignes suivantes pour accorder l'autorisation:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xxx.yyyy.zzz.www"> ... </manifest>