_casterror (оператор проверки null, используемый для нулевого значения) при попытке получить каталог

#flutter #dart

Вопрос:

Всегда получаем значение Null в «ожидание getExternalStorageDirectory();», независимо от того, временное это или нет. Как я могу это решить ?

 Future<String> get _localPath async {
    final directory = await getExternalStorageDirectory();

    return directory.path;
}
 

Комментарии:

1. Вы уверены, что на устройстве есть внешняя память? Это обнуляемый получатель.

2. Каталог getTemporaryDirectory тоже становится пустым 🙁

Ответ №1:

Ты не забыл получить разрешение?

Добавьте это в свой android_manifest.xml :

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
 

Затем вам нужно предложить пользователю предоставить разрешение, прежде чем вы сможете его использовать. Для этого вы, вероятно, захотите проверить permission_handler.

После этого помните, что он по-прежнему может быть аннулирован, и вы захотите мирно справиться с этим сценарием. Если у вас включена нулевая безопасность, вы Future должны возвращаться String? вместо String .

Комментарии:

1. Да, добавлены разрешения в мой манифест , но это все еще не работает, также я добавил разрешение на запрос в хранилище var status = await Permission.storage.request(); , но это все еще ошибка null в await

2. Наконец я получаю запрос на хранение на своем устройстве и нажимаю «да», но по-прежнему есть нулевая ошибка D:

3. @Noako Вы должны использовать await Permission.storage.request().isGranted в условии if, которое будет обрабатывать как запрос, так и проверку того, удовлетворено ли оно. Вы перезапустили приложение после предоставления разрешения, чтобы посмотреть, может быть, это как-то связано с тем, как написан запрос?