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♝")‷定位,而的值alignmentAlignmentDirectional.center,所以它会出现在中心。Text("I am Jack")只指定了水平定位(left),所以没有定位,部分定位。在垂直方向上。 ,那么其垂直对齐方式将按照align定义的对齐方式进行对齐,即垂直居中。 Text(“你的朋友”)与第二个文本组件Text(“我是Jack”)❀无水平方向放置时,然后它将水平居中。 ?对话:fit属性对其起作用,填充Stack。 Putyin子组件是堆叠在一起的,所以第一个潜台词组件被第二个潜台词组件覆盖,第三个在上面,所以可以正常显示。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网



发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。