Сбой при открытии потока READ_EXTERNAL_STORAGE Flutter

#flutter #dart #permissions #android-permissions

#сбой #сбой при открытии потока READ_EXTERNAL_STORAGE #разрешения #android-разрешения

Вопрос:

Я получаю эту ошибку, когда нахожусь в приложении. Простое нажатие на пустое место также выводит это на консоль.

 W/ClipData( 7375): Failure opening stream
W/ClipData( 7375): java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/file/119902 from pid=7375, uid=10423 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
W/ClipData( 7375):  at android.os.Parcel.createException(Parcel.java:1950)
W/ClipData( 7375):  at android.os.Parcel.readException(Parcel.java:1918)
W/ClipData( 7375):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
W/ClipData( 7375):  at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146)
W/ClipData( 7375):  at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:698)
W/ClipData( 7375):  at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1460)
W/ClipData( 7375):  at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1404)
W/ClipData( 7375):  at android.content.ClipData$Item.coerceToText(ClipData.java:351)
W/ClipData( 7375):  at io.flutter.plugin.platform.PlatformPlugin.getClipboardData(PlatformPlugin.java:278)
W/ClipData( 7375):  at io.flutter.plugin.platform.PlatformPlugin.access$700(PlatformPlugin.java:24)
W/ClipData( 7375):  at io.flutter.plugin.platform.PlatformPlugin$1.getClipboardData(PlatformPlugin.java:81)
W/ClipData( 7375):  at io.flutter.embedding.engine.systemchannels.PlatformChannel$1.onMethodCall(PlatformChannel.java:141)
W/ClipData( 7375):  at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:230)
W/ClipData( 7375):  at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
W/ClipData( 7375):  at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
W/ClipData( 7375):  at android.os.MessageQueue.nativePollOnce(Native Method)
W/ClipData( 7375):  at android.os.MessageQueue.next(MessageQueue.java:326)
W/ClipData( 7375):  at android.os.Looper.loop(Looper.java:160)
W/ClipData( 7375):  at android.app.ActivityThread.main(ActivityThread.java:6854)
W/ClipData( 7375):  at java.lang.reflect.Method.invoke(Native Method)
W/ClipData( 7375):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
W/ClipData( 7375):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:860)
  

Я пытался использовать пакет Permissin_Handler следующим образом;

 Future<bool> permissionGetter(BuildContext context) async {
    if (await Permission.contacts.request().isGranted) {
      return true;
    }

    Map<Permission, PermissionStatus> statuses = await [
      Permission.storage,
    ].request();
    print(statuses[Permission.location]);

    return false;
  }
  

Из этого FutureBuilder;

 @override
  Widget build(BuildContext context) {
    SizeConfig().init(context);
    return FutureBuilder(
      future: permissionGetter(context),
      builder: (context, builder){
        print(builder);
        if(builder.connectionState == ConnectionState.done){
          print(builder);
          return MaterialApp(
            initialRoute: RegisterScreen.id,
            routes: {
              RegisterScreen.id: (context) => RegisterScreen(),
              LoginScreen.id: (context) => LoginScreen()
            },
          );
        }
        return Text("HIII");
      },
    );
  }
  

Но print(builder) дает мне только эти две строки;
(перед инструкцией if)

 I/flutter ( 7375): AsyncSnapshot<bool>(ConnectionState.waiting, null, MissingPluginException(No implementation found for method requestPermissions on channel flutter.baseflow.com/permissions/methods))
  

(в инструкции if)

 I/flutter ( 7375): AsyncSnapshot<bool>(ConnectionState.done, null, MissingPluginException(No implementation found for method requestPermissions on channel flutter.baseflow.com/permissions/methods))
  

Также в настоящее время я не использую локальное хранилище, но в будущем я планирую. Как я могу получить разрешение и решить эту проблему?