【问题标题】:How to fix MissingPluginException (package_info) caused by get_version plugin?如何修复 get_version 插件导致的 MissingPluginException (package_info)?
【发布时间】:2019-08-30 22:02:50
【问题描述】:

我有一个颤振的应用程序,我正在编写一个测试用例,将应用程序的 currentVersion 与可用的 latestVersion 进行比较。该函数仅获取 currentVersion 和 latestVersion 的值,并根据 currentVersion

我正在使用 get_version 插件来提取应用程序的 currentVersion。出于测试目的,LatestVersion 的值大于 1。

同样的调用适用于应用程序的其余部分。它只会在测试用例中产生问题。

我尝试从 0.0.8 升级到 0.1.0 但没有成功。

    void main() {
      test('checkAppVersion', () async {
        String currentVersion = await GetVersion.projectVersion;


expect(
    checkAppVersionTest(
        Version.parse(currentVersion), Version.parse(latestVersion)),
    true);


  });
}

    bool checkAppVersionTest(Version currentVersion, Version latestVersion) { bool updateRequired = false;
      if (currentVersion < latestVersion) {
        updateRequired = true;
      }
      return updateRequired;
    }

我收到以下错误:

MissingPluginException(在通道 plugins.flutter.io/package_info 上找不到方法 getAll 的实现) 包:flutter/src/services/platform_channel.dart 300:7 MethodChannel.invokeMethod ===== 异步间隙 ============================ 飞镖:异步_AsyncAwaitCompleter.completeError 包:flutter/src/services/platform_channel.dart MethodChannel.invokeMethod ===== 异步间隙 ============================ dart:async _asyncThenWrapperHelper 包:flutter/src/services/platform_channel.dart MethodChannel.invokeMethod 包:package_info/package_info.dart 38:17 PackageInfo.fromPlatform

当我硬编码 currentVersion 值时工作正常。

请提出解决方法。

【问题讨论】:

  • 我也有同样的问题,你找到解决办法了吗?
  • 同样的问题。有什么解决办法吗?
  • 不,还没有找到任何解决方案。

标签: testing plugins dart flutter


【解决方案1】:

我假设您使用的是 Android Studio 或类似工具并单击“播放”按钮来运行您的测试。 我试过了,结果和你一样。 但是,通过单击此按钮似乎实际上并未在设备上运行测试 - 这是插件所需的,因此通过从终端运行它并指定文件 - 它似乎运行良好:

flutter run test.dart

你需要在你的 main() 的第一行添加以下内容,否则你会得到一个不同的错误:

TestWidgetsFlutterBinding.ensureInitialized();

最终代码:

import 'package:flutter_test/flutter_test.dart';
import 'package:get_version/get_version.dart';
import 'package:pub_semver/pub_semver.dart';

void main() {
  TestWidgetsFlutterBinding.ensureInitialized();

  test('checkAppVersion', () async {
    String currentVersion = await GetVersion.projectVersion;
    String latestVersion = '0.0.1';
    expect(checkAppVersionTest(Version.parse(currentVersion), Version.parse(latestVersion)), false);
  });
}

bool checkAppVersionTest(Version currentVersion, Version latestVersion) {
  bool updateRequired = false;
  if (currentVersion < latestVersion) {
    updateRequired = true;
  }
  return updateRequired;
}

如果有人在正常运行您的应用时遇到类似问题,请尝试终止您的应用并运行 flutter clean 在终端中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-26
    • 2017-11-22
    • 2020-05-29
    • 2021-08-22
    • 2021-07-18
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多