Flutter尺寸设置插件size_setter_plus的使用

Flutter尺寸设置插件size_setter_plus的使用

size_setter_plus 是一个用于在 Flutter 应用程序中设置尺寸的插件。它可以帮助开发者根据不同的设备屏幕大小来调整 UI 元素的尺寸,从而实现更好的适配效果。

安装

首先,在你的 pubspec.yaml 文件中添加 size_setter_plus 依赖:

dependencies:
  flutter:
    sdk: flutter
  size_setter_plus: ^版本号

然后运行 flutter pub get 来安装该插件。

使用示例

以下是一个简单的示例,展示了如何使用 size_setter_plus 插件来设置不同尺寸。

示例代码

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

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

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void didChangeDependencies() {
    // 设置源设备尺寸,以便后续计算响应式尺寸
    SizeSetterUtils.setSourceDeviceSize(
        context: context, sourceWidth: 430, sourceHeight: 932);

    super.didChangeDependencies();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: '适应性尺寸'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Column(
        children: [
          // 一个红色容器,高度为父容器高度的20%,宽度为100%
          Container(
            color: Colors.red,
            height: 20.ph, // 使用 .ph 表示父容器高度的百分比
            width: 100.ph, // 使用 .ph 表示父容器高度的百分比
            alignment: Alignment.center,
            child: const Text("20% 高度和 100% 宽度"),
          ),

          // 一个20像素的高度间隙,具有响应式调整能力
          SizedBox(height: 20), // 直接使用SizedBox来设置固定高度
          Container(
            color: Colors.blue,
            height: 200.h, // 使用 .h 表示屏幕高度的百分比
            width: 200.w, // 使用 .w 表示屏幕宽度的百分比
            alignment: Alignment.center,
            child: const Text("200像素宽度,具有响应式尺寸"),
          ),
        ],
      ),
    );
  }
}

解释

  1. 设置源设备尺寸

    • didChangeDependencies() 方法中,通过调用 SizeSetterUtils.setSourceDeviceSize 方法设置源设备的宽度和高度。这有助于后续计算响应式尺寸。
    SizeSetterUtils.setSourceDeviceSize(
        context: context, sourceWidth: 430, sourceHeight: 932);
    
  2. 使用响应式尺寸

    • 在构建方法中,使用 .ph.w 等标记来表示相对父容器或屏幕的百分比尺寸。
    Container(
      height: 20.ph, // 父容器高度的20%
      width: 100.ph, // 父容器高度的100%
    )
    
    • 同样地,使用 .h.w 来表示屏幕高度和宽度的百分比。
    Container(
      height: 200.h, // 屏幕高度的200像素
      width: 200.w, // 屏幕宽度的200像素
    )
    

更多关于Flutter尺寸设置插件size_setter_plus的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


size_setter_plus 是一个 Flutter 插件,用于简化在不同屏幕尺寸上设置尺寸的过程。它可以帮助开发者更轻松地管理不同设备的屏幕适配问题。以下是 size_setter_plus 的基本使用方法。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  size_setter_plus: ^1.0.0  # 请检查最新版本

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

2. 导入包

在需要使用 size_setter_plus 的 Dart 文件中导入包:

import 'package:size_setter_plus/size_setter_plus.dart';

3. 初始化 SizeSetter

在应用的入口处(通常是 main.dart 文件)初始化 SizeSetter。你可以设置一个基准的屏幕尺寸,SizeSetter 会根据这个基准尺寸自动调整其他设备的尺寸。

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SizeSetter(
      designSize: Size(375, 812), // 基准尺寸,通常为设计稿的尺寸
      child: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: MyHomePage(),
      ),
    );
  }
}

4. 使用 SizeSetter 设置尺寸

在需要使用尺寸的地方,你可以使用 SizeSetter 提供的方法来设置宽度、高度、字体大小等。

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('SizeSetter Plus Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Container(
              width: SizeSetter.setWidth(100), // 设置宽度
              height: SizeSetter.setHeight(50), // 设置高度
              color: Colors.blue,
              child: Center(
                child: Text(
                  'Hello, SizeSetter!',
                  style: TextStyle(
                    fontSize: SizeSetter.setSp(16), // 设置字体大小
                  ),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

5. 扩展功能

SizeSetter 还提供了其他一些方法,例如 setRadiussetPadding 等,用于设置圆角、间距等。

Container(
  width: SizeSetter.setWidth(200),
  height: SizeSetter.setHeight(100),
  decoration: BoxDecoration(
    color: Colors.green,
    borderRadius: BorderRadius.circular(SizeSetter.setRadius(10)), // 设置圆角
  ),
  padding: EdgeInsets.all(SizeSetter.setPadding(16)), // 设置内边距
  child: Center(
    child: Text(
      'SizeSetter Plus',
      style: TextStyle(
        fontSize: SizeSetter.setSp(20),
      ),
    ),
  ),
);
回到顶部