Flutter平台判断问题,并适配鸿蒙

1. 问题

首先是一个bug,如果你在Web平台使用bool isIos = Platform.isIOS这样的代码,就会报错

Unsupported operation: Platform._operatingSystem

另一个问题就是并没有Platform.isWeb方法


2. 解决方法 universal_platform

🔨 安装

直接flutter pub add universal_platform

🕹️ 使用

老写法(Web会报错) 新写法
Platform.isIOS UniversalPlatform.isIOS
Platform.isAndroid UniversalPlatform.isAndroid
Platform.isWeb(不支持) UniversalPlatform.isWeb

3. 鸿蒙来了,isOhos 呢?

现在大佬们也为Flutter适配了OpenHarmony,并且也提供了Platform.isOhos方法,但 universal_platform 是没有鸿蒙平台的判断的。

于是我直接fork了一下,把鸿蒙平台加了进去,也提了Pull Request。

feat: Add the ohos platform by qinshah · Pull Request #31 · gskinnerTeam/flutter-universal-platform

如果你也需要使用这个版本,可以在pubspec.yaml中进行修改

yaml 复制代码
dependencies:
  universal_platform:
    git:
      url: "https://github.com/qinshah/flutter-universal-platform.git"

4. 示例

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

class PaltformJudgePage extends StatelessWidget {
  const PaltformJudgePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('平台判断')),
      body: Center(
          child: Text(
        "Web: ${UniversalPlatform.isWeb} \n "
        "MacOS: ${UniversalPlatform.isMacOS} \n"
        "Windows: ${UniversalPlatform.isWindows} \n"
        "OhOS: ${UniversalPlatform.isOhos} \n"
        "Linux: ${UniversalPlatform.isLinux} \n"
        "Android: ${UniversalPlatform.isAndroid} \n"
        "IOS: ${UniversalPlatform.isIOS} \n"
        "Fuschia: ${UniversalPlatform.isFuchsia} \n",
      )),
    );
  }
}
平台 输出
Chrome (Web) Web: true
Ohos OhOS: true

如果本文帮到你,欢迎去原仓库给 PR 点个 👍,一起让 Flutter和鸿蒙 生态更完整!

相关推荐
ujainu5 小时前
Flutter + OpenHarmony 游戏开发进阶:轨迹拖尾特效——透明度渐变与轨迹数组管理
flutter·游戏·openharmony
一起养小猫5 小时前
Flutter for OpenHarmony 实战:记账应用数据统计与可视化
开发语言·jvm·数据库·flutter·信息可视化·harmonyos
2501_944525546 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
微祎_9 小时前
Flutter for OpenHarmony:构建一个 Flutter 躲避障碍游戏,深入解析帧同步、动态难度与归一化坐标系统
flutter·游戏
一起养小猫10 小时前
Flutter for OpenHarmony 实战:番茄钟应用完整开发指南
开发语言·jvm·数据库·flutter·信息可视化·harmonyos
一起养小猫10 小时前
Flutter for OpenHarmony 实战:数据持久化方案深度解析
网络·jvm·数据库·flutter·游戏·harmonyos
雨季66611 小时前
Flutter 三端应用实战:OpenHarmony “微光笔记”——在灵感消逝前,为思想点一盏灯
开发语言·javascript·flutter·ui·dart
kirk_wang12 小时前
Flutter艺术探索-Flutter三方库鸿蒙适配实战:从原理到实践
flutter·移动开发·flutter教程·移动开发教程
晚霞的不甘12 小时前
Flutter for OpenHarmony 实现高级视差侧滑菜单:融合动效、模糊与交互动画的现代 UI 设计
flutter·ui·前端框架·交互·鸿蒙
晚霞的不甘14 小时前
Flutter for OpenHarmony构建全功能视差侧滑菜单系统:从动效设计到多页面导航的完整实践
前端·学习·flutter·microsoft·前端框架·交互