Flutter屏幕尺寸适配插件size_util的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter屏幕尺寸适配插件size_util的使用

在Flutter开发中,屏幕尺寸适配是一个非常重要的问题。size_util 是一个用于将设计稿(如 Figma)中的尺寸转换为 Flutter 应用实际尺寸的工具库。它可以帮助开发者快速实现跨设备的适配。


特性

  • 扩展工具:提供了高度和字体大小的适配功能。
  • 基于设计稿:可以根据设计稿中的尺寸动态调整应用界面。

使用方法

1. 添加依赖

pubspec.yaml 文件中添加 size_util 依赖:

dependencies:
  size_util: ^0.2.0

然后运行以下命令以更新依赖:

flutter pub get

2. 初始化插件

在应用启动时初始化 size_util。通常可以在 main.dart 中完成初始化:

import 'package:flutter/material.dart';
import 'package:size_util/size_util.dart';

void main() {
  // 初始化 size_util,传入设计稿的宽度和高度
  SizeUtil.init(widthDesign: 375, heightDesign: 812);
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

注意

  • 设计稿的宽度和高度通常是根据 Figma 文件中的基准尺寸设置的。
  • 如果你的设计稿是基于 iPhone 6/7/8(375x812),可以直接使用默认值。

3. 使用适配工具

在需要适配的地方,使用 .u 扩展方法来获取适配后的尺寸。例如:

字体大小适配

Text(
  'Hello World',
  style: TextStyle(fontSize: 16.u), // 将设计稿中的 16px 转换为适配后的尺寸
)

宽度和高度适配

Container(
  width: 100.u, // 将设计稿中的 100px 转换为适配后的宽度
  height: 50.u, // 将设计稿中的 50px 转换为适配后的高度
  color: Colors.blue,
)

边距适配

Padding(
  padding: EdgeInsets.all(10.u), // 将设计稿中的 10px 转换为适配后的边距
  child: Text('Padding Example'),
)

4. 完整示例

以下是一个完整的示例代码,展示了如何使用 size_util 进行屏幕适配:

import 'package:flutter/material.dart';
import 'package:size_util/size_util.dart';

void main() {
  // 初始化 size_util,传入设计稿的宽度和高度
  SizeUtil.init(widthDesign: 375, heightDesign: 812);
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Size Util 示例'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 使用适配后的字体大小
            Text(
              '字体大小适配',
              style: TextStyle(fontSize: 16.u),
            ),
            
            SizedBox(height: 20.u), // 垂直间距适配
            
            // 使用适配后的宽度和高度
            Container(
              width: 100.u,
              height: 50.u,
              color: Colors.blue,
            ),
            
            SizedBox(height: 20.u), // 垂直间距适配
            
            // 使用适配后的边距
            Padding(
              padding: EdgeInsets.all(10.u),
              child: Text('Padding 示例'),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter屏幕尺寸适配插件size_util的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter屏幕尺寸适配插件size_util的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


size_util 是一个用于 Flutter 的屏幕尺寸适配插件,它可以帮助开发者在不同屏幕尺寸的设备上实现 UI 的自适应布局。通过 size_util,你可以根据屏幕的宽度和高度来动态调整 UI 元素的大小,从而确保应用在各种设备上都能有良好的显示效果。

安装 size_util

首先,你需要在 pubspec.yaml 文件中添加 size_util 依赖:

dependencies:
  flutter:
    sdk: flutter
  size_util: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

使用 size_util

1. 初始化 SizeUtil

在使用 size_util 之前,你需要在应用的入口处(通常是 main.dart 文件)初始化 SizeUtil。你可以通过 SizeUtil.init() 方法来设置设计稿的尺寸(通常是 UI 设计师提供的设计稿尺寸)。

import 'package:flutter/material.dart';
import 'package:size_util/size_util.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    // 初始化 SizeUtil,设置设计稿的宽度和高度
    SizeUtil.init(
      designSize: Size(375, 812), // 设计稿尺寸,例如 iPhone X 的尺寸
      allowFontScaling: false, // 是否允许字体根据系统设置缩放
    );

    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

2. 使用 SizeUtil 进行尺寸适配

SizeUtil 初始化之后,你可以使用 SizeUtil 提供的方法来动态调整 UI 元素的尺寸。

  • SizeUtil.setWidth(double width):根据屏幕宽度适配宽度。
  • SizeUtil.setHeight(double height):根据屏幕高度适配高度。
  • SizeUtil.setSp(double fontSize):根据屏幕宽度适配字体大小。
  • SizeUtil.radius(double radius):根据屏幕宽度适配圆角半径。
import 'package:flutter/material.dart';
import 'package:size_util/size_util.dart';

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('SizeUtil Example'),
      ),
      body: Center(
        child: Container(
          width: SizeUtil.setWidth(200), // 根据屏幕宽度适配宽度
          height: SizeUtil.setHeight(100), // 根据屏幕高度适配高度
          decoration: BoxDecoration(
            color: Colors.blue,
            borderRadius: BorderRadius.circular(SizeUtil.radius(10)), // 根据屏幕宽度适配圆角半径
          ),
          child: Center(
            child: Text(
              'Hello, SizeUtil!',
              style: TextStyle(
                fontSize: SizeUtil.setSp(16), // 根据屏幕宽度适配字体大小
                color: Colors.white,
              ),
            ),
          ),
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!