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