【发布时间】:2021-06-12 15:26:59
【问题描述】:
我正在为现有的原生 Android 应用开发一个颤振模块。我与 MethodChannel 进行了一些互操作。现在,出于测试目的,我想将我的模块作为独立应用程序运行。为此,我使用虚拟占位符模拟了所有互操作代码。现在我想(以编程方式)检查 Flutter 是在独立模式下运行还是作为模块的一部分运行,以决定使用哪个互操作实现(android 与 dummy)。
【问题讨论】:
我正在为现有的原生 Android 应用开发一个颤振模块。我与 MethodChannel 进行了一些互操作。现在,出于测试目的,我想将我的模块作为独立应用程序运行。为此,我使用虚拟占位符模拟了所有互操作代码。现在我想(以编程方式)检查 Flutter 是在独立模式下运行还是作为模块的一部分运行,以决定使用哪个互操作实现(android 与 dummy)。
【问题讨论】:
到目前为止,我最终得到了这个解决方案:
flutter run --dart-define="standalone=true"
在构建独立应用程序时使用它。 然后在代码中:
const bool isStandalone = bool.fromEnvironment('standalone');
【讨论】:
我的解决方案是在应用启动时,尝试在 MethodChannel 中调用一个方法,如果抛出 MissingPluginException 意味着 Flutter 独立运行。
/// check if flutter is run as a moudle embeded in a app project
static Future<bool> get isEmbeded async {
try {
await _methodChannel.invokeMethod('Foo');
return true;
} on MissingPluginException {
return false;
}
}
在启动时调用它,您可以将结果保存为全局静态变量以避免未来的异步调用。
【讨论】: