Flutter 基礎布局Widgets之ConstrainedBox詳解

diego-ph-222506-unsplash.jpg

概述

ConstrainedBox即創建一個Widget,該Widget對其子child施加附加約束。之前在constrain也有簡單使用,即該組件一般集成在constrain中使用。

構造函數

ConstrainedBox({
    Key key,
    @required this.constraints,
    Widget child
  })

  • constraints 其類型為BoxConstraints,一些基本的約束:

[RenderBox]布局的不可變布局約束。
如果且僅當以下所有關系成立時,[Size]才會遵從[BoxConstraints]:
[minWidth] <= [Size.width] <= [maxWidth]
[minHeight] <= [Size.height] <= [maxHeight]
約束本身必須滿足這些關系:
0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]
0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]
[double.infinity]是每個約束的合法值(比如想要獲取最大的擴展寬度,可以將寬度值設為double.infinity)

constraints構造函數

const BoxConstraints({
    this.minWidth = 0.0,
    this.maxWidth = double.infinity,
    this.minHeight = 0.0,
    this.maxHeight = double.infinity
  })

  • minWidth 滿足約束條件的最小寬度
  • maxWidth 滿足約束條件的最大寬度;可能是[double.infinity](1.0 / 0.0)
  • minHeight 滿足約束條件的最小高度
  • maxHeight 滿足約束條件的最大高度;可能是[double.infinity](1.0 / 0.0)
  • child 受約束的子child

示例代碼

// ConstrainedBox  

import 'package:flutter/material.dart';

class ConstrainedBoxLearn extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: AppBar(
        title: Text('ConstrainedBox')
      ),
      body: Center(
        child: Container(
          width: 300,
          height: 400,
          decoration: BoxDecoration(
            border: Border.all()
          ),
          //利用UnconstrainedBox 消除之前限制
          child: UnconstrainedBox(
            // 對child進行約束,
            child: ConstrainedBox(
            constraints: BoxConstraints(
              minHeight: 30,
              minWidth: 30,
              maxHeight: 150,
              maxWidth: 150
            ),
            child: Container(
              width: 110,
              height: 110,
              decoration: BoxDecoration(
                borderRadius: BorderRadius.circular(20),
                gradient: LinearGradient(colors: [Colors.blue, Colors.purple]),

              ),
            )
          )
          ),
          
        ),
      ),
    );
  }
}

實例效果

103113975F8D87CCB4B3BD8A71572944.png
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容