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

 

posted @ 2025-04-04 13:14  刘宏缔的架构森林  阅读(46)  评论(0)    收藏  举报