Flutter 宽高自适应

在Flutter开发中也需要宽高自适应,手动写一个工具类,集成之后在像素后面直接使用 px或者 rpx即可。

工具类代码如下:

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

class HYSizeFit {
  static double screenWidth = 0.0;
  static double screenHeight = 0.0;

  static double physicalWidth = 0.0;
  static double physicalHeight = 0.0;
  static double dpr = 0.0;
  static double statusHeight = 0.0;

  static double rpx = 0.0;
  static double px = 0.0;

  static void initialize({double standardSize = 750}) {
    // 1、手机的物理分辨率
    physicalWidth = window.physicalSize.width;
    physicalHeight = window.physicalSize.height;

    // 2、 获取dpr
    dpr = window.devicePixelRatio;

    // 3、宽度和高度
    screenWidth = physicalWidth / dpr;
    screenHeight = physicalHeight / dpr;

    // 4、 状态栏高度
    statusHeight = window.padding.top / dpr;

    // 5、计算 rpx 的大小
    rpx = screenWidth / standardSize;
    px = screenWidth / standardSize * 2;
  }

// 按照像素来设置
  static double setPx(double size) {
    return px * size;
  }

// 按照rpx来设置
  static double setRpx(double size) {
    return rpx * size;
  }
}

扩展(extension)代码

dart 复制代码
import 'hysize.dart';

extension DoubleFit on double {
  double get px {
    return HYSizeFit.setPx(this);
  }

  double get rpx {
    return HYSizeFit.setRpx(this);
  }
}

extension IntFit on int {
  double get px {
    return HYSizeFit.setPx(toDouble());
  }

  double get rpx {
    return HYSizeFit.setRpx(toDouble());
  }
}

开始使用

1、需要在 main中进行初始化

dart 复制代码
  @override
  Widget build(BuildContext context) {
    // 初始化
    HYSizeFit.initialize();
    return FlutterBoostApp(routeFactory, appBuilder: appBuilder);
  }
}

2、在使用的地方导入扩展文件直接使用即可

dart 复制代码
Container(
    width: 200.0.px,
    height: 200.px,
)
相关推荐
鹏多多2 分钟前
Flutter自定义日历table_calendar完全指南+案例
android·前端·flutter
500843 分钟前
鸿蒙 Flutter AI 引擎实战:OCR 图文识别离线部署与准确率优化
java·人工智能·flutter·华为·性能优化·ocr
2401_860494703 分钟前
在React Native中实现一个Popover(气泡弹出框)组件,用于展示一些相关的信息,如提示、警告、错误等,同时支持自定义内容和位置
javascript·react native·react.js·ecmascript·harmonyos
侦探观察4 分钟前
南非女性旅游绑架风险分析及防范措施
android·大数据·开发语言·百度·网络安全·旅游
爱吃大芒果5 分钟前
Flutter 热重载与热重启深度解析:提高开发效率的关键
开发语言·javascript·flutter·ecmascript·harmonyos·gitcode
Hui Baby7 分钟前
Mq扩充队列提高并发
开发语言·后端·ruby
晚霞的不甘7 分钟前
[鸿蒙2025领航者闯关] Flutter + OpenHarmony 自动化测试体系:从单元测试到真机巡检的全链路保障
flutter·单元测试·harmonyos
海上彼尚9 分钟前
React18+快速入门 - 5.受控组件与非受控组件
前端·javascript·react.js
秦jh_9 分钟前
【Qt】信号与槽
服务器·开发语言·数据库·qt
算法与编程之美10 分钟前
探索不同的损失函数和batch_size对分类精度的影响
开发语言·人工智能·分类·数据挖掘·batch