Flutter动态布局尺寸获取插件size_builder的使用

Flutter动态布局尺寸获取插件size_builder的使用

📱💻📱

特性

使比例与屏幕长度、宽度和直径成比例,以获得响应式设计。

开始使用

运行以下命令:

$ flutter pub add size_builder

这将在您的包的pubspec.yaml文件中添加如下行(并运行隐式的flutter pub get):

dependencies:
  size_builder: ^1.0.0

或者,您的编辑器可能支持flutter pub get。请查阅您的编辑器文档以了解更多信息。

导入它

现在可以在您的Dart代码中使用:

import 'package:size_builder/size_builder.dart';

响应式设计

可以制作流畅的多形式屏幕

示例动画

如何使用

首先,您需要在所有屏幕上添加Scaling类,并传递(BuildContext)

Scaling.scaling(context);
使用它来创建响应式的高度和宽度
height: Scaling.H(200),
width: Scaling.W(200),
并且可以使用它来创建响应式的大小

用于字体大小或其他任何内容

Text(
  "Scaling",
  style: TextStyle(
    fontSize: Scaling.S(20),
  ),
),

未来更新敬请期待

如果有任何问题或建议,请随时联系我。

随后,您可以看到完整的示例代码

import 'package:example/src/app_size.dart';
import 'package:flutter/material.dart';

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

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

  // 这个小部件是您的应用程序的根。它是有状态的,这意味着它有一个状态对象(定义如下),该状态对象包含影响其外观的字段。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // 这是您的应用程序的主题。
        //
        // 尝试用"flutter run"运行您的应用程序。您会看到应用程序有一个蓝色工具栏。然后,不退出应用程序,尝试将下面的primarySwatch更改为Colors.green并调用"热重载"(在您运行"flutter run"的控制台中按"r",或简单地保存更改以在Flutter IDE中进行"热重载")。请注意计数器没有重置为零;应用程序没有重新启动。
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Size_builder : '),
    );
  }
}

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

  // 这个小部件是您的应用程序的主页。它是有状态的,这意味着它有一个状态对象(定义如下),该状态对象包含影响其外观的字段。
  // 这个类是状态的配置。它保留由父级(在这个例子中是App小部件)提供的值(在这种情况下是标题)并被状态的构建方法使用。Widget子类中的字段总是标记为"final"。
  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    ///########################################
    ///
    /// ##############################
    ///
    Scaling.scaling(context);

    // 此方法每次调用setState时都会被重新运行,例如由上面的_incrementCounter方法调用。
    //
    // Flutter框架已经优化了重建方法的速度,因此您可以重建任何需要更新的内容,而不是逐个更改小部件实例。
    return Scaffold(
      appBar: AppBar(
        // 在这里,我们从MyHomePage对象中获取值,该对象是由App.build方法创建的,并使用它来设置我们的appbar标题。
        title: Text(widget.title),
      ),
      body: Center(
        child: Container(
          height: Scaling.H(200),
          width: Scaling.W(200),
          decoration: BoxDecoration(
              color: Colors.green,
              borderRadius: BorderRadius.circular(Scaling.S(30))),
          child: Text(
            "Scaling",
            style: TextStyle(
              fontSize: Scaling.S(20),
            ),
          ),
        ),
      ),
    );
  }
}

更多关于Flutter动态布局尺寸获取插件size_builder的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter动态布局尺寸获取插件size_builder的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,size_builder 是一个非常有用的插件,用于在布局过程中动态获取和响应组件的尺寸变化。它允许你在组件布局完成后获取其尺寸,并根据尺寸变化进行相应的处理。

安装

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

dependencies:
  flutter:
    sdk: flutter
  size_builder: ^0.3.0

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

使用

size_builder 提供了一个 SizeBuilder 组件,你可以在布局中使用它来获取子组件的尺寸。

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

class MyWidget extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Size Builder Example'),
      ),
      body: Center(
        child: SizeBuilder(
          builder: (BuildContext context, BoxConstraints constraints, Size size) {
            return Container(
              width: size.width,
              height: size.height,
              color: Colors.blue,
              child: Center(
                child: Text(
                  'Size: ${size.width.toStringAsFixed(1)} x ${size.height.toStringAsFixed(1)}',
                  style: TextStyle(color: Colors.white, fontSize: 20),
                ),
              ),
            );
          },
        ),
      ),
    );
  }
}
回到顶部