【问题标题】:How to show/hide a widget based on the android sdk build version?如何显示/隐藏基于 android sdk 构建版本的小部件?
【发布时间】:2021-06-25 11:01:25
【问题描述】:

在安卓应用中,我们可以使用android.os.Build.VERSION.SDK_INT来获取当前在硬件设备上运行的软件的SDK版本。如何在颤振应用程序中执行相同操作,以便我可以显示或隐藏基于 android 构建版本的小部件?

【问题讨论】:

    标签: flutter


    【解决方案1】:

    使用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 以获取其他选项。

    【讨论】:

      【解决方案2】:

      您可以使用设备信息包获取设备信息

      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');
      

      【讨论】:

        【解决方案3】:

        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');
        

        【讨论】:

          猜你喜欢
          • 2020-07-24
          • 2012-03-07
          • 1970-01-01
          • 2014-07-29
          • 2012-01-14
          • 1970-01-01
          • 2011-12-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多