flutter平台判断,这次应该没问题了。支持鸿蒙,插件已发布

话不多说,已经发布插件了

这次即便在web环境中也可以判断是否为鸿蒙系统

同时还支持鸿蒙系统判断是PC还是Mobile,但需要在使用之前调用一下

await OS.initHarmonyDeviceType();

避免报错请使用if (OS.isHarmony) await OS.initHarmonyDeviceType();

具体可以看下面的代码示例

代码示例:

dart 复制代码
import 'package:flutter/material.dart';
import 'package:os_type/os_type.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // 如果需要在鸿蒙上判断是否为PC/Mobile,需要先await OS.initHarmonyDeviceType()
  if (OS.isHarmony) await OS.initHarmonyDeviceType();
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('os type example')),
        body: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Text('is android: ${OS.isAndroid}'),
              SizedBox(height: 8),
              Text('is fuchsia: ${OS.isFuchsia}'),
              SizedBox(height: 8),
              Text('is iOS: ${OS.isIOS}'),
              SizedBox(height: 8),
              Text('is linux: ${OS.isLinux}'),
              SizedBox(height: 8),
              Text('is macOS: ${OS.isMacOS}'),
              SizedBox(height: 8),
              Text('is windows: ${OS.isWindows}'),
              SizedBox(height: 8),
              Text('is ohos: ${OS.isHarmony}'),
              SizedBox(height: 8),
              // 上面的列举有更简单的写法:
              // for (var os in TargetPlatform.values) ...[
              //   Text('is ${os.name}: ${OS.value == os}'),
              //   SizedBox(height: 8),
              // ],

              // pc和mobile是相反的,而web环境则等于kIsWeb,与操作系统无关
              SizedBox(height: 20),
              Text('is PC: ${OS.isPCOS}'),
              SizedBox(height: 8),
              Text('is Mobile: ${OS.isMobileOS}'), // isMobileOS == !isPCOS
              SizedBox(height: 8),
              Text('is Web environment: ${OS.isWebEnv}'), // isWebEnv == kIsWeb
              SizedBox(height: 8),
            ],
          ),
        ),
      ),
    );
  }
}

运行截图

相关推荐
xd18557855527 分钟前
梦境解析师-基于鸿蒙的梦境心理分析应用开发实践
人工智能·华为·harmonyos·鸿蒙
千逐681 小时前
鸿蒙实战:一多自适应与原子化布局 —— 一次开发多端部署的工程化落地
华为·harmonyos·鸿蒙
解局易否结局2 小时前
鸿蒙原生开发实战:Native 并发与高性能计算
华为·harmonyos
xo198820112 小时前
鸿蒙 AI 自动化开发:让 AI 学会自己编译、自己调试
人工智能·自动化·harmonyos
HarmonyOS_SDK2 小时前
差异化推送消息能力,助力支付宝腕上消息业务闭环
harmonyos
用户0934077735143 小时前
HarmonyOS WPS Open SDK 实践:办公审批附件「打开—编辑—回传」代码实现
typescript·harmonyos
ZZZMMM.zip4 小时前
基于鸿蒙PC与鸿蒙Flutter框架构建AI本地生活服务平台
人工智能·flutter·华为·harmonyos·鸿蒙
解局易否结局4 小时前
鸿蒙多设备形态适配实战:从手表到车机的差异化 UI 设计
ui·华为·harmonyos
不羁的木木4 小时前
HarmonyOS APP实战-基于Image Kit的图像处理APP - 第1篇:环境搭建与项目初始化
图像处理·华为·harmonyos
解局易否结局4 小时前
鸿蒙新特性实战:元服务与卡片开发完全指南
华为·harmonyos