Flutter Stack 和 Positioned(级联布局)示例说明
Flutter 中的级联布局类似于 Web 上的绝对定位和 Android 中的框架布局。子组件可以根据父容器四个角的位置来定义自己。绝对定位允许将子组件放置在彼此的顶部(按照代码中指定的顺序)。 Flutter使用两个组件Putyn
和Positioned
来实现绝对定位。 Putyn
允许将子组件放置在彼此的顶部,而 定位
基于
♷❓❓❓ 的四个角。 †所谓部分定位,这里特指仅在某个轴上定位: 和 指定height 运行效果为: 看图说话: 作者:赞恩左
、
对齐参考系,即:为水平、❙❓❝上
、下
是垂直轴。只要它包含轴上的定位属性,它就会定位在该轴上。 ? alignmenttextDirection
的值为TextDirection.ltr❙,则❙♿
Stack({
this.alignment = AlignmentDirectional.topStart,
this.textDirection,
this.fit = StackFit.loose,
this.overflow = Overflow.clip,
List<Widget> children = const <Widget>[],
})
复制代码
开始
表示left side,end
表示Right,即从左到右的顺序;如果textDirection
的值为TextDirection.rtl
,则代表右侧,
end
代表左侧,即, 从右到左。 fit
:此参数用于确定的子组件如何适合尺寸Stack
。 Stack({
this.alignment = AlignmentDirectional.topStart,
this.textDirection,
this.fit = StackFit.loose,
this.overflow = Overflow.clip,
List<Widget> children = const <Widget>[],
})
复制代码
,而不定位
Stack Fit.loose
表示所使用的子组件的大小,Stack Fit.expand
表示扩展到大小♷♓❓♓。?部分将被切断,但如果 overflow
的值为 Overflow.visible
,则不会被切断。 位于
const Positioned({
Key key,
this.left,
this.top,
this.right,
this.bottom,
this.width,
this.height,
@required Widget child,
})
复制代码
左、
上方
、右
左、上、右、下四边之间的距离。 右
右
♷ 或Stack
width
和height
用于指定要定位的元素的宽度和高度。注:
宽度
和 高度
Stack({
this.alignment = AlignmentDirectional.topStart,
this.textDirection,
this.fit = StackFit.loose,
this.overflow = Overflow.clip,
List<Widget> children = const <Widget>[],
})
复制代码
❀
Stack({
this.alignment = AlignmentDirectional.topStart,
this.textDirection,
this.fit = StackFit.loose,
this.overflow = Overflow.clip,
List<Widget> children = const <Widget>[],
})
复制代码
Stack({
this.alignment = AlignmentDirectional.topStart,
this.textDirection,
this.fit = StackFit.loose,
this.overflow = Overflow.clip,
List<Widget> children = const <Widget>[],
})
复制代码
顶部
,右侧。
、bottom
用于定位零件,例如水平定位,仅 left、、❓、 width 的三个属性中的两个
,例如自动计算左
和宽度
、(❝♿左
+ 宽度) ),如果同时给出三个属性,则会出现错误消息我们发送;在垂直方向上只能指定三个属性:顶部两个属性的
+ ❀❓ 中同时指定三个属性. 示例: 零件的特点:top
、bottom
和height
,自动计算height
》
bottom
(top
+ //通过ConstrainedBox来确保Stack占满屏幕
ConstrainedBox(
constraints: BoxConstraints.expand(),
child: Stack(
alignment: AlignmentDirectional.center,//指定未定位或部分定位的子组件的对齐方式
children: <Widget>[
Container(
child: Text("Hello World", style:TextStyle(color: Colors.white)),
color: Colors.blue,
),
Positioned(
left: 18.0,
child: Text("I am Jack"),
),
Positioned(
top: 18.0,
child: Text("Your friend"),
),
],
),
),
复制代码
Text("Hello♝")‷定位,而的值alignment
AlignmentDirectional.center
,所以它会出现在中心。Text("I am Jack")
只指定了水平定位(left
),所以没有定位,部分定位。在垂直方向上。 ,那么其垂直对齐方式将按照align
定义的对齐方式进行对齐,即垂直居中。 Text(“你的朋友”)
与第二个文本组件Text(“我是Jack”)❀无水平方向放置时,然后它将水平居中。 ?对话:
fit
属性对其起作用,填充Stack
。 Putyin
子组件是堆叠在一起的,所以第一个潜台词组件被第二个潜台词组件覆盖,第三个在上面,所以可以正常显示。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。