概述
ConstrainedBox即創(chuàng)建一個Widget荠割,該Widget對其子child施加附加約束。之前在constrain也有簡單使用秦士,即該組件一般集成在constrain中使用马昙。
構(gòu)造函數(shù)
ConstrainedBox({
Key key,
@required this.constraints,
Widget child
})
- constraints 其類型為BoxConstraints,一些基本的約束:
[RenderBox]布局的不可變布局約束卜范。
如果且僅當(dāng)以下所有關(guān)系成立時衔统,[Size]才會遵從[BoxConstraints]:
[minWidth] <= [Size.width] <= [maxWidth]
[minHeight] <= [Size.height] <= [maxHeight]
約束本身必須滿足這些關(guān)系:
0.0 <= [minWidth] <= [maxWidth] <= [double.infinity]
0.0 <= [minHeight] <= [maxHeight] <= [double.infinity]
[double.infinity]是每個約束的合法值(比如想要獲取最大的擴展寬度,可以將寬度值設(shè)為double.infinity)
constraints構(gòu)造函數(shù)
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]),
),
)
)
),
),
),
);
}
}