Flutter 控件本身通常由许多小型、单用途的控件组成,结合起来产生强大的效果
例如,Container 是一种常用的控件,由负责布局、绘画、定位和大小调整的几个控件组成,具体来说,Container 是由 LimitedBox、ConstrainedBox、 Align、Padding、DecoratedBox 和 Transform 控件组成,而不是将 Container 子类化来产生自定义效果,您可以用这种新颖的方式组合这些以及其他简单的控件。
类的层次结构是扁平的,以最大化可能的组合数量。
在写应用程序时,经常会使用 StatelessWidget 和 StatefulWidget 编写新控件,两者的差别在于你是否要管理控件的状态。一个控件的主要任务是实现 build 函数,定义控件中其他较低层次的控件。build 函数将依次构建这些控件,直到底层渲染对象。
基本组件
Container
容器,一个常用的控件,由基本的绘制、位置和大小控件组成。负责创建矩形的可视元素,可以用 BoxDecoration 来设计样式,比如背景、边框和阴影,Container 也有边距、填充和大小限制,另外,还可以在三维空间利用矩阵进行变换。
没有子控件的容器尽可能大,除非传入的大小约束是无限的,在这种情况下,它们尽可能小。有子控件的容器将自己的尺寸给他们的孩子。我们可以通过 width、height 和 constraints 属性控制 size。
new Container(
constraints: new BoxConstraints.expand(
height: Theme.of(context).textTheme.display1.fontSize * 1.1 + 200.0,
),
padding: const EdgeInsets.all(8.0),
color: Colors.teal.shade700,
alignment: Alignment.center,
child: new Text('Hello World', style: Theme.of(context).textTheme.display1.copyWith(color: Colors.white)),
foregroundDecoration: new BoxDecoration(
image: new DecorationImage(
image: new NetworkImage('https://www.example.com/images/frame.png'),
centerSlice: new Rect.fromLTRB(270.0, 180.0, 1360.0, 730.0),
),
),
transform: new Matrix4.rotationZ(0.1),
)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于