Flutter Widgets 目录 -Container class

简介
  • Container class一个便利的控件,结合了常见的绘画,定位和大小调整。
  • 容器(Container class)首先用padding包围子容器(由装饰中出现的任何边框填充),然后对填充的范围应用额外的约束(将宽度和高度合并为约束,如果二者都不是空的)。然后容器被额外的空白包围。
  • 在绘画过程中,容器首先应用指定的变换,然后描绘装饰物用以填充填充范围,再然后描绘子元素,最后描绘前景装饰,也填充填充范围。
  • 没有子元素的容器尝试尽可能地大,除非传入的约束是无限的,在这种情况下,它们尝试尽可能地小。有子元素的容器大小适合他们的子元素。构造函数的宽度、高度和约束参数覆盖了这点。
布局行为

有关框布局模型的介绍,请参阅BoxConstraints

由于容器将许多其他小部件各自与它们自己的布局行为相结合,因此容器的布局行为有些复杂。

为了实现对齐,容器会尝试根据子容器的大小调整其自身的大小,考虑宽度、高度和约束,扩展以适合父容器,尽可能地小。

更具体地说:
如果小部件没有子部件、没有高度、没有宽度、没有约束,并且父部件提供无限约束,那么容器将尝试尽可能地缩小大小。

如果小部件没有子控件,也没有对齐,但是提供了高度、宽度或约束,那么容器将尝试尽可能地小,因为存在这些约束和父控件的约束。

如果小部件没有子部件、没有高度、没有宽度、没有约束、也没有对齐,但是父部件提供了有界的约束,那么容器将展开以适应父部件提供的约束。

如果小部件具有一个对齐,并且父组件提供无限约束,则容器尝试围绕子组件调整自己的大小。

如果小部件具有一个对齐,并且父组件提供有限的约束,那么Container尝试展开以适应父组件,然后根据对齐将子组件定位在自己内部。

否则,小部件有一个子部件,但没有高度、宽度、约束和对齐,并且容器将约束从父部件传递给子部件,并调整自身的大小以匹配子部件。

边距和填充属性也影响布局,如这些属性的文档中所述。(它们的效果仅仅增强了上面描述的规则。)装饰可以隐式地增加填充(例如,BoxDec.中的边框有助于填充);参见Decoration.padding

此示例显示了一个48x48绿色正方形(放置在Center小部件内部,以防父小部件对容器应该采取的大小有自己的意见),并留有空白以便它远离相邻小部件:

  Center(
    child: Container(
        margin: const EdgeInsets.all(10.0),
        color: const Color(0xFF00FF00),
        width: 48.0,
        height: 48.0,
    ),
)

这个例子展示了如何同时使用Container的许多特性。这些约束被设置为垂直地适应字体大小和足够的头部空间,同时水平地扩展以适应父字体。填充用于确保内容和文本之间存在空间。这颜色使箱子发青。对齐导致子对象位于框的中心。前景装饰在文本上覆盖了九个补丁的图像。最后,转换对整个设备应用轻微的旋转来完成效果。padding用于确保内容和文本之间有空隙,这种颜色使盒子变成青色。对齐(直线)使子元素居中于框中。前景装饰在文本上叠加了一个可以拉伸的小图片。

Container(
  constraints: 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: Text('Hello World', style: Theme.of(context).textTheme.display1.copyWith(color: Colors.white)),
  foregroundDecoration: BoxDecoration(
    image: DecorationImage(
      image: NetworkImage('https://www.example.com/images/frame.png'),
      centerSlice: Rect.fromLTRB(270.0, 180.0, 1360.0, 730.0),
    ),
  ),
  transform: Matrix4.rotationZ(0.1),
)
参考
  • AnimatedContainer是一个变量,它可以在属性更改时平滑地进行动画。
  • Border,有一个大量使用容器的例子。
  • Ink(油墨), 在材料上绘制装饰,允许InkResponse和InkWell喷溅在它们上面绘画。
  • 布局小部件的目录
继承

Object > Diagnosticable > DiagnosticableTree > Widget > StatelessWidget > Container

构造函数

Container({Key key, AlignmentGeometry alignment, EdgeInsetsGeometry padding, Color color, Decoration decoration, Decoration foregroundDecoration, double width, double height, BoxConstraints constraints, EdgeInsetsGeometry margin, Matrix4 transform, Widget child })
Creates a widget that combines common painting, positioning, and sizing widgets. [...]
这段我也不知道有什么用...

属性

alignment → AlignmentGeometry
在容器中对齐子元素
child → Widget
容器所包含的子元素。
constraints → BoxConstraints
应用于子节点的附加约束。
decoration → Decoration
装饰要描绘在子元素的后面。
foregroundDecoration → Decoration
装饰要描绘在子元素的前面。
margin → EdgeInsetsGeometry
空的空间包围着装饰和子元素 。
padding → EdgeInsetsGeometry
在装饰内部留出空白。子元素(如果有的话)被放置在这个填充中。
transform → Matrix4
在绘制容器之前应用的矩阵变换。
hashCode → int
这个对象的hashCode
key → Key
控制一个小部件如何替换树中的另一个小部件。
runtimeType → Type
表示对象的运行时类型。

方法

build(BuildContext context)→Widget
描述此窗口小部件表示的用户界面部分。 [...]
覆盖
debugFillProperties(DiagnosticPropertiesBuilder属性)→void
添加与节点关联的其他属性。 [...]
覆盖
createElement()→StatelessElement
创建StatelessElement以管理此窗口小部件在树中的位置。 [...]
继承
debugDescribeChildren()→列出<DiagnosticsNode>
返回描述此节点的子节点的DiagnosticsNode对象列表。 [...]
@protected,继承
noSuchMethod(调用调用)→动态
访问不存在的方法或属性时调用。 [...]
继承
toDiagnosticsNode({String name,DiagnosticsTreeStyle style})→DiagnosticsNode
返回调试工具和toStringDeep使用的对象的调试表示形式。 [...]
继承
toString({DiagnosticLevel minLevel:DiagnosticLevel.debug})→字符串
返回此对象的字符串表示形式。
继承
toStringDeep({String prefixLineOne:'',String prefixOtherLines,DiagnosticLevel minLevel:DiagnosticLevel.debug})→String
返回此节点及其后代的字符串表示形式。 [...]
继承
toStringShallow({String joiner:',',DiagnosticLevel minLevel:DiagnosticLevel.debug})→String
返回对象的单行详细描述。 [...]
继承
toStringShort()→String
这个小部件的简短文字描述。
继承

运算符

operator ==(dynamic other) → bool
平等运算符。[...]
继承

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容

  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 3,875评论 0 0
  • 在Flutter中,号称一切皆widget,手势是Widget,动画是Widget,UI更是Widget,今天我们...
    Realank阅读 4,627评论 0 7
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,744评论 1 92
  • CSS 指层叠样式表(Cascading Style Sheets),是一种用来为结构化文档(如 HTML 文档或...
    神齐阅读 2,087评论 0 14
  • 更多信息请查看flutter layout Layouts Sigle-child layout widgets ...
    one_cup阅读 28,912评论 1 17