【发布时间】:2021-06-25 11:01:25
【问题描述】:
在安卓应用中,我们可以使用android.os.Build.VERSION.SDK_INT来获取当前在硬件设备上运行的软件的SDK版本。如何在颤振应用程序中执行相同操作,以便我可以显示或隐藏基于 android 构建版本的小部件?
【问题讨论】:
标签: flutter
在安卓应用中,我们可以使用android.os.Build.VERSION.SDK_INT来获取当前在硬件设备上运行的软件的SDK版本。如何在颤振应用程序中执行相同操作,以便我可以显示或隐藏基于 android 构建版本的小部件?
【问题讨论】:
标签: flutter
使用device_info插件获取SDK版本:
var info = await DeviceInfoPlugin().androidInfo;
var sdk = info.version.sdkInt;
然后像这样使用它
Column(
children: [
if (sdk > 24) Text('Good'), // Prints only for devices running API > 24
Text('Morning')
],
)
如果您不想使用if,可以查看this answer 以获取其他选项。
【讨论】:
您可以使用设备信息包获取设备信息
https://pub.dev/packages/device_info
您可以获得所有这些信息
var androidInfo = await DeviceInfoPlugin().androidInfo;
var release = androidInfo.version.release;
var sdkInt = androidInfo.version.sdkInt;
var manufacturer = androidInfo.manufacturer;
var model = androidInfo.model;
print('Android $release (SDK $sdkInt), $manufacturer $model');
【讨论】:
CopsOnRoad's answer 很好,但是,当我只需要来自 Android 的 Build.VERSION.SDK_INT,并且我已经为 Flutter 中需要的其他 Android 功能实现了 MethodChannel 时,我不想添加额外的插件。
我只需添加以下 (Java) 代码:
case METHOD_GET_SDK_INT:
result.success(Build.VERSION.SDK_INT);
break;
在 MethodCall 处理程序中:
public class MainActivity extends FlutterActivity {
...
private static final String METHOD_GET_SDK_INT = "getSdkInt";
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
super.configureFlutterEngine(flutterEngine);
new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL).setMethodCallHandler(
(call, result) -> {
switch (call.method) {
...
// New code for returning the Android SDK version
case METHOD_GET_SDK_INT:
result.success(Build.VERSION.SDK_INT);
break;
...
然后,在 Dart 中,我使用:
final int _androidSdkInt = await platform.invokeMethod('getSdkInt');
【讨论】: