Как исправить ошибку async / await в тесте flutter?

#flutter #async-await #flutter-dependencies

#флаттер #async-await #flutter-зависимости

Вопрос:

Я пытаюсь написать тест для своего приложения flutter. Функция, для которой я пишу тест, возвращает будущее, поэтому я использую await .

Но как только используется какой-либо оператор await, я получаю ошибку MissingPluginException.

Я попытался изменить версию зависимости, но это не помогло. Не удалось найти что-либо на GitHub для проблем с флаттером или StackOverflow по этому поводу.

check_app_version_test.dart

 import 'package:flutter_test/flutter_test.dart';

import '../home.dart';

void main() {
  test('checkAppVersion', () async {
    expect(await checkAppVersionTest(true), true);
  });
}
  

home.dart

 String currentVersionString = await GetVersion.projectVersion;
Version currentVersion = Version.parse(currentVersionString);

Future<bool> checkAppVersionTest([bool test, Version latestVersion]) async {

...
  if (currentVersion < latestVersion) {
    updateRequired = true;
  }
...
return updateRequired

}
  

ожидается, что все будет работать нормально.

Получение ошибки:

Исключение MissingPluginException (реализация метода GetAll для плагинов канала не найдена.flutter.io/package_info )
пакет: flutter / src / services / platform_channel.dart 300:7 MethodChannel.invokeMethod ===== асинхронный разрыв =========================== dart:асинхронный _AsyncAwaitCompleter.Завершите пакет ошибок: flutter / src / services / platform_channel.
метод dartchannel.invokeMethod ===== асинхронный разрыв =========================== dart:асинхронный пакет _asyncThenWrapperHelper: flutter/src/services/platform_channel.пакет dart
MethodChannel.invokeMethod:package_info/package_info.dart 38:17 PackageInfo.fromPlatform

Ответ №1:

Похоже, вам просто нужно установить свои модули.
Откройте терминал и перейдите в свой каталог flutter.
CD в каталог iOS через cd iOS/ , а затем запустите pod install

Теперь вы должны иметь возможность запускать проект просто отлично.

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

1. Это приложение предназначено только для Android, я не понимаю, как это поможет?

2. @sakina Flutter является мультиплатформенным. Так что это может не сработать для вас. Но это, вероятно, будет работать для пользователей IOS

Ответ №2:

Просто завершите работу приложения и перезапустите приложение. Поскольку вы добавили зависимость, которая требует, чтобы код, зависящий от платформы, выполнялся через канал платформы. Вы должны перезапустить приложение, завершив текущее.