#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, которое будет обрабатывать как запрос, так и проверку того, удовлетворено ли оно. Вы перезапустили приложение после предоставления разрешения, чтобы посмотреть, может быть, это как-то связано с тем, как написан запрос?