话不多说,已经发布插件了
这次即便在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),
],
),
),
),
);
}
}
运行截图 


