flutter: 得到os/屏幕宽高/屏幕方向
一,代码:
1,助手类
import 'package:flutter/material.dart';
import 'dart:io' show Platform;
import 'package:device_info_plus/device_info_plus.dart';
import 'package:connectivity_plus/connectivity_plus.dart';
class SystemHelper {
// 得到屏幕宽高
static Map<String, double> getScreenWidthHeight(BuildContext context) {
// 获取宽高
Size screenSize = MediaQuery.of(context).size;
double width = screenSize.width;
double height = screenSize.height;
return {
'width': width,
'height': height,
};
}
//得到屏幕方向
static String getScreenOrientation(BuildContext context) {
Orientation orientation = MediaQuery.of(context).orientation;
//横向: orientation==Orientation.portrait
//纵向:orientation==Orientation.landscape
if (orientation==Orientation.portrait) {
return "portrait";
} else {
return "landscape";
}
}
// 得到操作系统
static String getOS() {
// 获取当前操作系统
String osName = Platform.operatingSystem;
return osName;
}
}
2,调用时的页面
import 'dart:async';
import 'package:demo3/common/SystemHelper.dart';
import 'package:dio/io.dart';
import 'package:flutter/material.dart';
import 'package:image_gallery_saver_plus/image_gallery_saver_plus.dart';
import 'package:dio/dio.dart';
import 'dart:typed_data';
import 'package:connectivity_plus/connectivity_plus.dart';
class SystemPage extends StatefulWidget {
final Map arguments;
// 为title设置一个默认参数,这样的跳转该界面时可以不传值。
SystemPage({super.key, required this.arguments});
@override
State<SystemPage> createState() => _SystemPageState();
}
class _SystemPageState extends State<SystemPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.primaryContainer,
title: Text(widget.arguments["title"]),
),
body: Center(
child:Column(
children: [
ElevatedButton(
onPressed: () async {
String osName = SystemHelper.getOS();
print("当前操作系统:"+osName);
Map<String, double> size = SystemHelper.getScreenWidthHeight(context);
print("当前屏幕宽度:");
print(size["width"]);
print("当前屏幕高度:");
print(size["height"]);
String position = SystemHelper.getScreenOrientation(context);
print("当前屏幕方向:"+position);
},
child: Row(
mainAxisSize: MainAxisSize.min, // 根据内容调整大小
children: <Widget>[
Icon(Icons.add), // 图标在左侧
SizedBox(width: 10), // 可选:添加一些间隔
Text("得到系统信息"), // 文本在右侧
],
),
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
],
),
],
),
),
);
}
}
二,测试效果:
I/flutter ( 9219): 当前操作系统:android
I/flutter ( 9219): 当前屏幕宽度:
I/flutter ( 9219): 392.72727272727275
I/flutter ( 9219): 当前屏幕高度:
I/flutter ( 9219): 737.4545454545455
I/flutter ( 9219): 当前屏幕方向:portrait
浙公网安备 33010602011771号