📜  Flutter – BoxConstraints小部件

📅  最后修改于: 2021-05-13 17:11:05             🧑  作者: Mango

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, maxHeightmaxWidth设置为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作为对象,其heightwidth属性分别设置为50 px。 BoxConstraints.expands在其父BoxConstraints中扩展到50 px的高度宽度。而且由于它会扩展,所以它总是从中心开始。

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!