美文网首页
Flutter中屏幕适配,尺寸设置

Flutter中屏幕适配,尺寸设置

作者: ziyouzhe4 | 来源:发表于2020-05-06 12:49 被阅读0次

1、 新版本Flutter SDK 引入了 extension的机制。可以对某个class 进行扩展。(swift中有类似机制)
2、屏幕适配一直是一个老生常谈的问题,随着机型越来越多,适配的场景也越来越复杂。
3、之前有了解过 微信小程序的适配方案,个人一直感觉是一个比较好的方式( iPhone6为标准尺寸)下面👇将引用小程序的方案来进行对 Flutter的尺寸设置。

Flutter dart:ui 库下有 window属性,可以通过它来获取 屏幕的物理尺寸。

size_fit.dart 文件

import 'dart:ui';

class TLSizeFit {
  // 1.基本信息
  static double physicalWidth;
  static double physicalHeight;
  static double screenWidth;
  static double screenHeight;
  static double dpr;
  static double statusHeight;

  static double rpx;
  static double px;
// 这里设置standardSize 为可选属性,如果使用者愿意以非iPhone6为标准,那么你使用时候传入对应的标准即可。这里默认750
  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 px的大小, iPhone6下 1px = 2rpx
    rpx = screenWidth / standardSize;
    px = screenWidth / standardSize * 2;
  }

  static double setRpx(double size) {
    return rpx * size;
  }

  static double setPx(double size) {
    return px * size;
  }
}

Flutter 中extension的应用:👇

double_extension.dart 文件


import 'size_fit.dart';

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

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

int_extension.dart 文件


import 'size_fit.dart';

extension IntFit on int {
  double get px {
    return TLSizeFit.setPx(this.toDouble());
  }
  double get rpx {
    return TLSizeFit.setRpx(this.toDouble());
  }
}

使用方式:

1、在启动入口对TLSizeFit进行初始化

image.png

2、在代码中设置

return Center(
      child: Container(
        color: Color.fromARGB(120, 110, 111, 1),
        width: 100.px,
        height: 100.px,
        child: Text("宽度${window.physicalSize.width / window.devicePixelRatio / 750 * 2 * 100}"),
      ),
    );

通过上面的设置,在不同设备上,展示的widget的尺寸就会不一样了。

image.png

相关文章

  • Flutter中屏幕适配,尺寸设置

    1、 新版本Flutter SDK 引入了 extension的机制。可以对某个class 进行扩展。(swift...

  • Flutter:适配学习

    flutter 屏幕适配方案,让你的UI在不同尺寸的屏幕上都能显示合理的布局! Flutter的适配可以使用flu...

  • vue 移动端适配

    vue适配:以750设计稿为基准,在不同屏幕尺寸下如何适配 Safari中设置了禁止用户缩放无效的问题: iOS ...

  • Android屏幕适配

    屏幕适配相关概念主流适配方案 一、屏幕适配相关概念 1、屏幕尺寸单位:英寸表示:手机对角线的物理尺寸 2、屏幕分辨...

  • Flutter 屏幕适配和宏定义

    Flutter 屏幕适配

  • iOS屏幕尺寸适配

    屏幕适配方法 针对不同屏幕尺寸的适配,主要有3种方式:1.不同屏幕尺寸下,元素的尺寸是固定的;2.不同屏幕尺寸下,...

  • flutter屏幕适配和尺寸约束

    1,flutter组件尺寸是dp https://www.jianshu.com/p/2ba69115f974 2...

  • 前端页面适配

    为啥需要适配 安卓 IOS 各种不同的屏幕尺寸 适配方案 基本上都会设置 viewport 百分比:width, ...

  • flutter 屏幕尺寸适配 字体大小适配

    前言:现在的手机品牌和型号越来越多,导致我们平时写布局的时候会在个不同的移动设备上显示的效果不同, 比如我们的设计...

  • 知识点梳理7 必备必会

    屏幕适配 android 适配笔记 屏幕尺寸含义:手机对角线的物理尺寸单位:英寸(inch),1英寸=2.54cm...

网友评论

      本文标题:Flutter中屏幕适配,尺寸设置

      本文链接:https://www.haomeiwen.com/subject/ugbightx.html