BoxConstraints是flutter SDK中的内置小部件。它的功能是在其子窗口小部件上添加大小限制。通常将其作为ConstrainedBox小部件中的constraints属性的对象。它带有许多用于自定义的属性。在下面,我们将通过示例查看其所有属性,
BoxConstraints的构造函数:
它用上述约束绘制了一个盒子。
const BoxConstraints(
{double minWidth: 0.0,
double maxWidth: double.infinity,
double minHeight: 0.0,
double maxHeight: double.infinity}
)
BoxConstraints.expand的构造函数:
它绘制一个框,该框将展开以填充其父BoxConstriants小部件。
const BoxConstraints.expand(
{double? width,
double? height}
)
BoxConstraints.loose的构造函数:
它创建了一个不会超过上述大小的盒子。
BoxConstraints.loose(
Size size
)
BoxConstraints.tight的构造方法:
它将创建一个不会更改其大小的框。
BoxConstraints.tight(
Size size
)
BoxConstraints.tight的构造函数:
只需提及其高度和宽度,它将在屏幕上绘制一个框。
const BoxConstraints.tightFor(
{double? width,
double? height}
)
BoxConstraints.tightForFinite的构造函数:
如果没有提到,这里我们得到一个盒子,其高度和宽度设置为无穷大。
const BoxConstraints.tightForFinite(
{double width: double.infinity,
double height: double.infinity}
)
BoxConstraints小部件的属性:
- maximum :此属性将Size类作为对象,以指定盒子可以获取的最大尺寸。
- flipped: flipped属性将BoxConstriants类作为对象来翻转小部件的height和width属性。
- hasBoundedHeight:此属性接受一个布尔值作为对象,用于指定maxHeight是否具有上限。
- hasBoundedWidth:此属性接受一个布尔值作为对象,以指定maxWidth是否具有上限。
- hasInfiniteHeight:此属性还接受一个布尔值作为对象,以确定框是否具有无限的高度。
- hasInfiniteWidth:此属性还接受一个布尔值作为对象,以确定框是否具有无限宽度。
- hasTightHeight:此属性通过将布尔值作为对象来确定是否将框高固定为一个值。
- hasTightWidth:此属性通过将布尔值作为对象来确定框的宽度是否仅固定为一个值
- isNormalized:它也接受一个布尔值作为对象,以指定最大和最小高度和宽度是否相同。
- isTight: isTight属性还接受一个布尔值作为对象,以确定是否将框约束仅固定为一个高度和宽度。
- maxHeight:此属性采用双精度值作为控制框可以达到的最大高度的对象。
- maxWith:此属性采用双精度值作为控制框最大宽度的对象。
- minHeight:此属性采用双精度值作为控制框将达到的最小高度的对象。
- minWidth:此属性采用双精度值作为控制框最小宽度的对象。
- 最小:此属性控制通过将Size类作为对象可以使盒子达到的最小尺寸。
范例1:
Dart
import 'package:flutter/material.dart';
//Material design liberary
void main() {
runApp(
//widget tree starts here
MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('GeeksforGeeks'),
backgroundColor: Colors.greenAccent[400],
centerTitle: true,
), //AppBar
body: Center(
child: Container(
color: Colors.green,
padding: EdgeInsets.all(20),
child: Text(
'GfG',
style: TextStyle(color: Colors.white, fontSize: 20),
), //Text
/** BoxConstraints Widget **/
constraints: BoxConstraints(
minHeight: 50,
minWidth: 50,
maxHeight: 80,
maxWidth: 80), //BoxConstraints
), //container
), //Center
), //Scaffold
), //MaterialApp
);
}
Dart
import 'package:flutter/material.dart';
//Material design liberary
void main() {
runApp(
//widget tree starts here
MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('GeeksforGeeks'),
backgroundColor: Colors.greenAccent[400],
centerTitle: true,
), //AppBar
body: Center(
child: Container(
color: Colors.green,
padding: EdgeInsets.all(20),
/** BoxConstraints Widget **/
constraints: BoxConstraints(
minHeight: 50,
minWidth: 50,
maxHeight: 80,
maxWidth: 80), //BoxConstraints
child: Container(
color: Colors.greenAccent[400],
child: Text(
'GfG',
style: TextStyle(color: Colors.white, fontSize: 20),
), //Text
constraints: BoxConstraints.expand(height: 50, width: 50),
)), //container
), //Center
), //Scaffold
), //MaterialApp
);
}
输出:
说明:在Container小部件(是Center小部件(主体中的父小部件)的子级)内部, constraints属性包含BoxConstraints小部件。里面的minHeight 和minWidth设置为50 px, maxHeight和maxWidth设置为80 px。容器为绿色,并带有白色文本。设置的约束将不允许容器的高度和宽度大于80像素且小于50像素。
范例2:
Dart
import 'package:flutter/material.dart';
//Material design liberary
void main() {
runApp(
//widget tree starts here
MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('GeeksforGeeks'),
backgroundColor: Colors.greenAccent[400],
centerTitle: true,
), //AppBar
body: Center(
child: Container(
color: Colors.green,
padding: EdgeInsets.all(20),
/** BoxConstraints Widget **/
constraints: BoxConstraints(
minHeight: 50,
minWidth: 50,
maxHeight: 80,
maxWidth: 80), //BoxConstraints
child: Container(
color: Colors.greenAccent[400],
child: Text(
'GfG',
style: TextStyle(color: Colors.white, fontSize: 20),
), //Text
constraints: BoxConstraints.expand(height: 50, width: 50),
)), //container
), //Center
), //Scaffold
), //MaterialApp
);
}
输出:
说明:此flutter应用程序与上一个应用程序类似,不同之处在于“容器”中的“子”窗口小部件是一个“文本” ,但该子窗口小部件已被另一个“容器”小部件替换。第二个容器被分配为greenAccent [400]颜色,子容器是“文本”小部件。第二个容器中的constraints属性将BoxConstraints.expand作为对象,其height和width属性分别设置为50 px。 BoxConstraints.expands在其父BoxConstraints中扩展到50 px的高度和宽度。而且由于它会扩展,所以它总是从中心开始。