Реализация для метода getApplicationDocumentsDirectory в плагинах канала не найдена. Flutter.io/path_provider

Мое приложение Flutter зависает на заставке, и я получаю следующий журнал ошибок:

Built build\app\outputs\apk\debug\app-debug.apk.
I/Choreographer(18870): Skipped 75 frames!  The application may be doing too much work on its main thread.
D/EGL_emulation(18870): eglMakeCurrent: 0xe8885480: ver 3 0 (tinfo 0xe88835a0)
I/OpenGLRenderer(18870): Davey! duration=2142ms; Flags=1, IntendedVsync=65263803118670, Vsync=65265053118620, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=65265065657900, AnimationStart=65265065738100, PerformTraversalsStart=65265065780200, DrawStart=65265126086300, SyncQueued=65265197367200, SyncStart=65265199471900, IssueDrawCommandsStart=65265199680700, SwapBuffers=65265651453000, FrameCompleted=65265947767800, DequeueBufferDuration=12659000, QueueBufferDuration=920000,
Syncing files to device Android SDK built for x86...
E/flutter (18870): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method getApplicationDocumentsDirectory on channel plugins.flutter.io/path_provider)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #0      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:314:7)
Syncing files to device Android SDK built for x86...
E/flutter (18870): <asynchronous suspension>
Syncing files to device Android SDK built for x86...
E/flutter (18870): #1      getApplicationDocumentsDirectory (package:path_provider/path_provider.dart:84:22)
Syncing files to device Android SDK built for x86...
E/flutter (18870): <asynchronous suspension>
Syncing files to device Android SDK built for x86...
E/flutter (18870): #2      DbContext.initDb (package:appentrega/database.dart:34:45)
Syncing files to device Android SDK built for x86...
E/flutter (18870): <asynchronous suspension>
Syncing files to device Android SDK built for x86...
E/flutter (18870): #3      DbContext.getContext (package:appentrega/database.dart:27:21)
Syncing files to device Android SDK built for x86...
E/flutter (18870): <asynchronous suspension>
Syncing files to device Android SDK built for x86...
E/flutter (18870): #4      _SplashScreenState.startTime (package:appentrega/splash.dart:16:34)
Syncing files to device Android SDK built for x86...
E/flutter (18870): <asynchronous suspension>
Syncing files to device Android SDK built for x86...
E/flutter (18870): #5      _SplashScreenState.initState (package:appentrega/splash.dart:33:5)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #6      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4068:58)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #7      ComponentElement.mount (package:flutter/src/widgets/framework.dart:3919:5)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #8      Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #9      Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #10     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5127:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #11     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #12     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #13     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3961:16)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #14     Element.rebuild (package:flutter/src/widgets/framework.dart:3738:5)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #15     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3924:5)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #16     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3919:5)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #17     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #18     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #19     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5127:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #20     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #21     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #22     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5127:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #23     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #24     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #25     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5127:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #26     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #27     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #28     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5127:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #29     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #30     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #31     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3961:16)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #32     Element.rebuild (package:flutter/src/widgets/framework.dart:3738:5)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #33     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3924:5)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #34     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4088:11)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #35     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3919:5)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #36     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #37     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #38     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3961:16)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #39     Element.rebuild (package:flutter/src/widgets/framework.dart:3738:5)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #40     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3924:5)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #41     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3919:5)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #42     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #43     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
Syncing files to device Android SDK built for x86...
E/flutter (18870): #44
Syncing files to device Android SDK built for x86...
D/EGL_emulation(18870): eglMakeCurrent: 0xe8885720: ver 3 0 (tinfo 0xe88832f0)
Syncing files to device Android SDK built for x86...
 4.034ms (!)

Похоже, проблема здесь: [ОШИБКА: flutter / lib / ui / ui_dart_state.cc (148)] Необработанное исключение: MissingPluginException (Реализация для метода getApplicationDocumentsDirectory на канале plugins.flutter.io/path_provider не найдена)

Уже сделал это:

-Удалены все плагины и переустановлен с flutter pub get.
-Запущены flutter clean и flutter run


person Fabio Dias    schedule 24.09.2019    source источник


Ответы (11)


Я получил эту ошибку для другого плагина после создания релиза apk, потому что сжатие кода включено по умолчанию - если вы не хотите минимизировать / запутывать код, просто добавьте две строки внутри android / app / build.gradle.

android {
    ...

    buildTypes {
        release {
            ...
         
            shrinkResources false
            minifyEnabled false
        }
    }
}
person Ramees Thattarath    schedule 08.09.2020

Эта ошибка обычно возникает, когда вы получаете плагин и больше не собираете приложение. Если это ваш случай, после установки плагина на pubspec.yaml переустановите apk. Если это не ваша проблема, вы создали свой проект с поддержкой kotlin и swift? Я не знаю, так ли это, но большинству плагинов это нужно

person Rodrigo Bastos    schedule 24.09.2019
comment
Я действительно не знаю, что случилось, я решаю это, вытаскивая предыдущий код из git и заменяя код, который я обновил. Вероятно, испортил какие-то глубокие файлы Android или что-то в этом роде, без подсказок. - person Fabio Dias; 24.09.2019
comment
Я получаю ту же ошибку, пытаясь создать свой проект с помощью Flutter Desktop Windows. Пробовал свежий репозиторий git и трепетал чисто, но все равно без радости. Отлично работает на эмуляторах, просто выдает ошибку в Windows. - person buttonsrtoys; 24.01.2020

Flutter для Интернета

Я столкнулся с этим после того, как начал добавлять веб-поддержку в приложение. Функция getApplicationDocumentsDirectory () поддерживает только (документы) для iOS и Android. Я добавил проверку для Интернета и изменил способ установки каталога, в котором для меня была исправлена ​​реализация метода, не найденного для меня.

Чтобы узнать, является ли платформа веб-версией, используйте Flutter kIsWeb:

import 'package:flutter/foundation.dart' show kIsWeb;

Затем обработайте настройку каталога соответствующим образом:

if (kIsWeb) {
    // Set web-specific directory
} else {
    appDocumentDirectory = await path_provider.getApplicationDocumentsDirectory();
}
person Owen    schedule 24.10.2020
comment
спасибо, эта ошибка, похоже, теперь появляется снова с более вероятным сценарием простого использования flutter web, пока он находится в бета-версии и очень новый - person Ben; 01.11.2020
comment
Какой путь я должен использовать для веб-каталога? - person Meggy; 02.11.2020
comment
@Meggy Вы нашли какое-нибудь решение? - person zackygaurav; 01.12.2020
comment
import 'package: flutter / foundation.dart' show kIsWeb; if (! kIsWeb) {// путь только для android и ios final appDocumentDirectory = await path_provider.getApplicationDocumentsDirectory (); Hive.init (appDocumentDirectory.path); } - person Tuss; 07.04.2021


У меня сработало зарегистрировать соответствующий канал метода плагина в Application.java (или Application.kt). Так вот это:

package com.example.lifely;

import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.pathprovider.PathProviderPlugin;

public class Application extends FlutterApplication implements PluginRegistrantCallback {
  @Override
  public void registerWith(PluginRegistry registry) {
    PathProviderPlugin.registerWith(registry.registrarFor("io.flutter.plugins.pathprovider.PathProviderPlugin"));
  }
}
person Nico    schedule 30.01.2021

Вам просто нужно переустановить приложение

OR

Вы можете управлять разрешениями с помощью среды выполнения https://pub.dev/packages/permission_handler

обычно, когда вы упоминаете разрешения в файле AndroidManifest.xml, он запрашивает разрешение при первом запуске приложения, поэтому вам нужно переустановить приложение или дать разрешения из диспетчера разрешений, или вы можете обрабатывать его из своего приложения динамически, используя вышеуказанный пакет

person Dev vora    schedule 10.04.2021

В моем случае это было для кеша, я удалил cached_network_image и заменил его на Image.network, и проблема исчезла

person Ricardo    schedule 06.05.2020

В моем случае я не включил пакет dart: async. Запуск flutter run и включение пакета dart: async разрешили проблему

person NBM    schedule 03.07.2020

В моем случае приведенный ниже фрагмент отсутствовал в моем файле AndroidManifest.xml.

        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />

Добавление его в файл AndroidManifest.xml устранило проблему.

person Akinola Olayinka    schedule 28.09.2020

Если ваш пакет зависит от flutter_facebook_auth, вам необходимо убедиться, что вы выполнили настройку для Android и iOS, чтобы избавиться от ошибки. Я использовал Hive и вход в Facebook, и, что удивительно, из-за отсутствия настройки Facebook Hive.initFlutter () выдавал эту ошибку.

Это исправление будет работать, даже если у вас на самом деле не настроено приложение Facebook в вашей учетной записи Facebook Developers.

person Joe Muller    schedule 21.07.2021

После обновления до 1.12-Android-проектов !!

если у вас мало времени, пытаясь отредактировать AppDelegate.h на шаге 5

Я прохожу после обновления, следуя руководству: Upgrading-pre-1.12 -Android-проекты применяют следующие действия:

  1. Обновите flutter до последней стабильной версии - ›отсутствует flutter clean

  2. Обновите все свои зависимости (очень вероятно, что пакеты содержат или просят вас добавить новые методы) - ›flutter clean - это не слишком много

  3. Обновите код и методы, полученные в результате обновления пакета

  4. Попробуйте запустить flutter или из Android Studio | ›(некоторые пакеты могут отправлять вам missingPluginException, но если оно установлено на мобильном телефоне), перейдите к шагу 5.

  5. По возможности соберите тестовые установки для Android и IOS (они должны работать нормально). Вероятно, что при разработке с запуском flutter он продолжает отправлять ошибку, в моем случае я не могу протестировать в IOS, но с запуском flutter он работает как для Android, так и для IOS, и проблема решается путем добавления его в ios / Runner / AppDelegate. h - ›[GeneratedPluginRegistrant registerWithRegistry: self];

    #import ‹Flutter / Flutter.h› #import ‹UIKit / UIKit.h›

    @interface AppDelegate: FlutterAppDelegate [GeneratedPluginRegistrant registerWithRegistry: self]; @Конец

Если после этих шагов он не может быть выполнен на шаге 4 0 5, убедитесь, что другие зависимости не обновили свои версии для совместимости с Upgrading-pre-1.12-Android-projects!. Например, cached_network_image использует path_provider. Попробуйте удалить пакет cached_network_image. Повторите с шага 4 еще раз.

person Uriel Manzano    schedule 18.10.2020
comment
вы можете ясно видеть, что это проблема Android, а не iOS - person ElMobark; 19.06.2021