【问题标题】:_casterror (null check operator used on a null value) when trying to get directory尝试获取目录时的 _casterror(空值检查运算符)
【发布时间】:2021-08-11 21:54:16
【问题描述】:

总是在“等待 getExternalStorageDirectory();”处得到 Null,无论是否是临时的。 我该如何解决这个问题?

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

    return directory.path;
}

【问题讨论】:

  • 您确定设备有外部存储吗?它是一个可以为空的 getter。
  • getTemporaryDirectory 也为空:(

标签: flutter dart


【解决方案1】:

你记得获得许可吗?

将此添加到您的android_manifest.xml:

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

然后你需要提示用户授予权限才能使用它。为此,您可能需要查看permission_handler。

在那之后,请记住它仍然是一个可以为空的 getter,并且您会希望平静地处理这种情况。如果您启用了 null-safety,您的 Future 应该返回 String? 而不是 String。

【讨论】:

  • 是的,向我的清单添加了权限,但这仍然无法正常工作,我还通过var status = await Permission.storage.request(); 添加了对存储的请求权限,但是await 仍然出现空错误
  • 最后我在我的设备上收到存储请求并单击“是”,但仍然出现空错误 D:
  • @Noako 你应该在 if 条件下使用await Permission.storage.request().isGranted 来处理请求和检查它是否被授予。您是否在授予权限后重新启动了应用程序,以查看它是否与请求的编写方式有关?
猜你喜欢
  • 2021-06-13
  • 2022-06-19
  • 2022-01-13
  • 2022-08-06
  • 2021-12-15
  • 2021-10-22
  • 2022-10-15
  • 1970-01-01
  • 2022-06-27
相关资源
最近更新 更多