flutter平台判断后续

之前写过一次flutter的平台判断问题,现在觉得还是有一些问题

特别是之前改的插件是使用鸿蒙flutter,如果是普通flutter去用也是不行。

于是又重新写了一下代码

dart 复制代码
import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

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

  @override
  State<PlatformJudgePage> createState() => _PlatformJudgePageState();
}

class _PlatformJudgePageState extends State<PlatformJudgePage> {
  /// 这个方法调用的是[defaultTargetPlatform]
  /// 即使运行在浏览器中也能判断真正的操作系统
  String _getOSName() {
    return switch (defaultTargetPlatform) {
      TargetPlatform.android => '安卓',
      TargetPlatform.iOS => 'IOS',
      TargetPlatform.macOS => '苹果Mac',
      TargetPlatform.windows => '微软Windows',
      TargetPlatform.linux => 'Linux',
      TargetPlatform.fuchsia => '谷歌Fuchsia',
      // 虽然默认判断上面的6个系统就够了
      // 但如果这个代码放在鸿蒙flutter中
      // 由于还存在ohos,就会导致报错
      // 有很多插件在鸿蒙flutter上因为这个问题报错

      // 所以这里忽略一下代码警告,继续判断
      // ignore: unreachable_switch_case
      _ => _getUnknownOSName(),
    };
  }

  String _getUnknownOSName() {
    if (kIsWeb) {
      // 如果是web
      // 调用Platform.operatingSystem和Platform.isAndroid等都会报错
      // 所以这里只能得出结论是运行在未知操作系统的浏览器中
      return '未知操作系统的浏览器';
      // 有趣的是如果在鸿蒙浏览器中运行这样的flutter页面
      // 是不是就是这个情况?答案有待验证
    } else {
      // 可以调用Platform.operatingSystem了
      return switch (Platform.operatingSystem) {
        // 这里增加鸿蒙系统的字符串名称
        // 如果是鸿蒙系统,这里就能判断出来了
        'ohos' => '鸿蒙',
        String() => '未知操作系统',
      };
    }
  }

  @override
  Widget build(BuildContext context) {
    // print(Platform.operatingSystem);
    return Scaffold(
      appBar: AppBar(title: const Text('系统和平台判断')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('当前设备的操作系统:${_getOSName()}'),
            SizedBox(height: 20),
            Text('是否运行在Web平台(浏览器):${kIsWeb ? '是' : '否'}'),
          ],
        ),
      ),
    );
  }
}

效果

相关推荐
坚果派·白晓明10 小时前
三方库ada
harmonyos·鸿蒙·openharmony
坚果派·白晓明10 小时前
三方库 nanomsg
华为·harmonyos
弓.长.13 小时前
ReactNative for OpenHarmony项目鸿蒙化三方库:react-native-pdf — PDF文档查看器
react native·pdf·harmonyos
开开心心就好15 小时前
绿色版PDF多功能工具,支持编辑转换
人工智能·windows·pdf·ocr·excel·语音识别·harmonyos
云和数据.ChenGuang16 小时前
鸿蒙餐饮系统:全场景智慧餐饮新范式
人工智能·机器学习·华为·数据挖掘·harmonyos·鸿蒙·鸿蒙系统
Swift社区16 小时前
AI 驱动 UI:鸿蒙 ArkUI 的新可能
人工智能·ui·harmonyos
KIHU快狐18 小时前
KIHU快狐|国产鸿蒙系统立式一体机RK3588芯片多点触控交互查询终端
华为·交互·harmonyos
ljt272496066118 小时前
Flutter笔记--事件处理
笔记·flutter
●VON18 小时前
半小时从零开发鸿蒙记事本应用:AI辅助开发实战
人工智能·华为·harmonyos
Feng-licong20 小时前
告别手写 UI:当 Google Stitch 遇上 Flutter,2026 年的“Vibe Coding”开发流
flutter·ui