1
votes

Flutter: getApplicationDocumentsDirectory () renvoie null

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?


0 commentaires

3 Réponses :


2
votes

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>

Reportez-vous à ce didacticiel pour en savoir plus sur l'utilisation de l'autorisation d'exécution dans Flutter.


1 commentaires

Merci :) Mais suivre ce tutoriel a sauvé mon problème sans utiliser les permissions ( youtu.be/Hqqz2BaPUis )



0
votes

De mon côté, je remplace getApplicationDocumentsDirectory par getTemporaryDirectory , ça marche, je suppose que le premier ne détecte aucune erreur!


0 commentaires

0
votes

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>


0 commentaires