Flutter组件--Padding和AnimatedPadding
创始人
2024-02-06 22:06:08
0

示意图:

Padding介绍

在应用程序中有许多widget 时,这个时候画面常常会变得很拥挤,这个时候如果想要在widget之间来保留一些间距,那就用 Padding

为什么使用 Padding 而不使用 Container.padding 属性的 Container?

Container 是将许多更简单的 widget 组合在一个方便的包中,如果只需要设置 padding ,那我们最好使用 Padding 而不是 Container


Padding属性和说明

序列号字段属性描述
1paddingEdgeInsetsGeometry给子widget的间距
2childWidget子widget

Padding属性详细使用

1、padding 、child

padding 给子widget的间距

child 接收一个子 Widget

import 'package:flutter/material.dart';class PaddingExample extends StatefulWidget {@override_PaddingExampleState createState() => _PaddingExampleState();
}class _PaddingExampleState extends State {@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Padding example"),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [Padding(padding: EdgeInsets.all(0),child: Container(width: 100,height: 100,color: Colors.red,),),Padding(padding: EdgeInsets.all(0),child: Container(width: 100,height: 100,color: Colors.green,),),Padding(padding: EdgeInsets.all(0),child: Container(width: 100,height: 100,color: Colors.orange,),)],),),);}
}

 

EdgeInsetsGeometry详解

EdgeInsetsGeometry 是一个描述边距的组件,一般都是使用它的子类 EdgeInsets 来进行设置。

1、fromLTRB

设置左、上、右、下的边距,可设定不同的值

Padding(padding: EdgeInsets.fromLTRB(10, 20, 30, 40),child: Container(width: 100,height: 100,color: Colors.red,),
),

 2、all

同时设置所有的边距为同一个值

Padding(padding: EdgeInsets.all(10),child: Container(width: 100,height: 100,color: Colors.green,),
)

 3、only

根据需要设置某一个边的间距

Padding(padding: EdgeInsets.only(left: 10,right: 10),child: Container(width: 100,height: 100,color: Colors.orange,),
)

 4、symmetric

设置水平(上下)、或者垂直(左右)的间距

Padding(padding: EdgeInsets.symmetric(vertical: 10,horizontal: 10),child: Container(width: 100,height: 100,color: Colors.orange,),
)

 完整代码

import 'package:flutter/material.dart';class PaddingExample extends StatefulWidget {@override_PaddingExampleState createState() => _PaddingExampleState();
}class _PaddingExampleState extends State {@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Padding example"),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [Padding(padding: EdgeInsets.fromLTRB(10, 20, 30, 40),child: Container(width: 100,height: 100,color: Colors.red,),),Padding(padding: EdgeInsets.all(10),child: Container(width: 100,height: 100,color: Colors.green,),),Padding(padding: EdgeInsets.only(left: 10,right: 10),child: Container(width: 100,height: 100,color: Colors.orange,),),Padding(padding: EdgeInsets.symmetric(vertical: 10,horizontal: 10),child: Container(width: 100,height: 100,color: Colors.orange,),)],),),);}
}

AnimatedPadding介绍

AnimatedPadding构造函数

AnimatedPadding({Key? key,required this.padding, // 边距this.child,  // 子WidgetCurve curve = Curves.linear,  // 动画的运动速率required Duration duration,  // 动画的持续时间VoidCallback? onEnd,   // 动画结束时的回调}) : assert(padding != null),assert(padding.isNonNegative),super(key: key, curve: curve, duration: duration, onEnd: onEnd);

AnimatedPadding完整示例代码

import 'package:flutter/material.dart';class AnimatedPaddingExample extends StatefulWidget {@override_AnimatedPaddingExampleState createState() => _AnimatedPaddingExampleState();
}class _AnimatedPaddingExampleState extends State {double paddingAllValue = 0.0;@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("AnimatedPaddingExample"),),body: Column(mainAxisAlignment: MainAxisAlignment.center,children: [Text('Padding: $paddingAllValue'),AnimatedPadding(padding: EdgeInsets.all(paddingAllValue),duration: Duration(milliseconds: 1000),curve: Curves.easeInOut,child: Container(width: MediaQuery.of(context).size.width,height: MediaQuery.of(context).size.height / 4,color: Colors.blue,),onEnd: () {print("动画结束时的回调");},),ElevatedButton(child: Text('改变padding的值'),onPressed: () {setState(() {paddingAllValue = paddingAllValue == 0.0 ? 50.0 : 0.0;});}),],),);}
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...