第一百一十二回 flutter_screenutil包

我们在上一章回中介绍了屏幕适配相关的内容,本章回中将介绍flutter_screenutil包,该包主要用来实现屏幕适配.闲话休提,让我们一起Talk Flutter吧。

概念介绍

我们在本章回中介绍的包是flutter_screenutil,它主要用来做屏幕和字体大小的适配,它的实现原理和我们在上一章回中介绍的屏幕适配核心思想一样,这点可以通过该包的源代码看出来。不过该包可以自行选择屏幕宽度或者高度来适配,而且还支持字体大小适配,这对于可以调整字体大小的手机来说非常适用。

此外,该包是国人写的,在dar的仓库中很受欢迎,现在我越来越感受到国内软件的成熟,也希望国内软件发展的越来越好。

使用方法

  1. 在yaml格式的配置文件中引入flutter_screenutil包,并且获取到当前工程中;
  2. 创建ScreenUtilInit类型对象,主要是给该类的designSize和builder属性赋值;
  3. 在其它组件中使用w,h方法适配屏幕上的尺寸,w表示使用屏幕宽度做适配,h表示使用屏幕高度做适配;

上面的步骤看着简单,不过还有一些细节需要说明:

  • builder属性是必选属性,它主要用来创建组件,组件中的任何地方都可以使用该包中的方法实现适配。因此该包通常位于顶层组件中,或者说位于Widget树的根结点上,其位置和provider所在的位置类似。
  • designSize属性是可选属性,建议把UI设计稿中的基准尺寸赋值给它。如果不给它赋值,那么使用默认值360*690.
  • 该包提供的w,h方法是getter方法,使用十分方便,这些方法是在基础类型上扩展(extension)出的方法,刚开始使用时不理解,看一下它的源代码就能明白其中的原理(后面章回中会介绍)。

示例代码

Scaffold(
  appBar: AppBar(
    title: const Text('Example of Screen'),
    backgroundColor: Colors.purpleAccent,
  ),
  ///screen util包最好在根目录进行初始化,用它包含MaterialApp比较好
  body: ScreenUtilInit(
    ///我在这里输入的是分辨率,单位为dp,没有转换成px
    designSize:const Size(375.0,667.0),
    builder: (context,child) {
      return HomeWidget();
    },
    ///这个child的值和builder中参数的child相同
    child: HomeWidget(),
  ),
);

///使用screenutil包中值来适配屏幕
Container(
  color: Colors.green,
  width: 200.w,
  height: 200.w,
  child: const  Icon(Icons.face),
),

上面的代码中把包的初始化操作放在了根Widget中,也就是代码中Scaffold组件的body属性中,包的子组件中是HomeWidget,因此在HomeWidget组件的任何位置都可以使用包中的适配方法。

示例代码中给一个容器做了屏幕适配,上一章回中的示例代码中也是使用容器做适配。编译并且运行该代码,可以看到两个容器经过适配后的大小都一样,这说明,我们自定义的适配方法和包中提供的适配方法都可以用来做屏幕适配,而且适配效果相同。

经验分享

在App开发过程中屏幕适配是必不可少的内容,在原生开发中Andoird使用百分比布局和约束布局来做适配,IOS使用AutoLayout或者故事板中的约束来做适配。不管是哪种形式的适配,它们的核心思想都相同:把相同的尺寸乘以一定的比率,使得该尺寸在不同大小的屏幕上占用的屏幕空间相同。这个在Andoird中的百分比布局中体现特别明显。

综合这几种屏幕适配方式来看,flutter_screenutil包的适配方法和IOS中的AutoLayout最为相似,不过它的使用方法要比AutoLayout简单。

看官们,关于"flutter_screenutil包"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您好!对于封装一个flutter_screenutil,您可以按照以下步骤进行操作: 1. 首先,在项目的`pubspec.yaml`文件中添加`flutter_screenutil`依赖项。可以在`dependencies`部分添加以下代码: ```yaml dependencies: flutter_screenutil: ^5.0.0 ``` 2. 在您的项目中创建一个名为`screen_util.dart`的文件,用于封装`flutter_screenutil`。 3. 在`screen_util.dart`文件中导入必要的: ```dart import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter/material.dart'; ``` 4. 创建一个名为`ScreenUtil`的类,并添加以下静态方法: ```dart class ScreenUtil { static void init(BuildContext context) { FlutterScreenUtil.init(context); } static double setWidth(double width) { return FlutterScreenUtil().setWidth(width); } static double setHeight(double height) { return FlutterScreenUtil().setHeight(height); } static double setSp(double fontSize) { return FlutterScreenUtil().setSp(fontSize); } } ``` 5. 在您的项目中的`main.dart`文件中,使用`ScreenUtil.init(context)`初始化`ScreenUtil`,例如: ```dart void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { ScreenUtil.init(context); return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(), ); } } ``` 6. 现在,您可以在项目的任何地方使用`ScreenUtil.setWidth`、`ScreenUtil.setHeight`和`ScreenUtil.setSp`来设置宽度、高度和字体大小,例如: ```dart Container( width: ScreenUtil.setWidth(200), height: ScreenUtil.setHeight(100), child: Text( 'Hello', style: TextStyle(fontSize: ScreenUtil.setSp(20)), ), ), ``` 通过以上步骤,您可以封装一个简单的`flutter_screenutil`工具类,方便在项目中使用屏幕适配功能。希望对您有所帮助!如果您还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值