Files
rikako-note/flutter/flutter.md
2022-04-08 13:15:24 +08:00

42 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Flutter
* ## Flutter结构
* Flutter的UI界面由Widget来构成每当构成界面的Widget状态发生改变那么其将会对Widget构成的UI进行重新渲染
* 为了创建一个Flutter应用仅需调用runApp方法并且向其中传入一个Widget即可传入的Widget将会成为Widget树中的根节点
* ## Flutter中的基础Widget
* ### TextText Widget用来表示一组具有同一样式的文本
* ### Row用来构造水平布局
* 要想使用水平布局可以向Row的children属性中传入一个Widget的List如果想要子Widget扩展去尽可能的填充可以获取的垂直控件可以将子Widget用Expanded包裹
* ### Column 类似于Row用来构建垂直布局
* ### Stack布局Stack布局可以将children属性中的Widget集合重叠起来默认左上角对齐。Stack中的Wdiget按先后顺序进行绘制位于第一的Wiget会被绘制到最底层后面的元素依次覆盖前一个元素。
* Stack中可以由Positioned元素和non-Positioned元素Positioned元素由Positioned Widget包裹可以指定其在Stack中相对Stack的位置而不是默认左上角对齐
* ### Container创建一个可见的矩形区域可以通过BoxDecoration来指定Container的边框样式、背景颜色等
* ### 可以通过MaterialApp和Scaffold等组件来构建Material Design的APP
* ## 处理用户的手势
* 通过用GestureDetector包裹Widget可以检测用户的手势并为onTap等手势创建回调函数
* ## StatefulWidget
* 相比较于StatelessWidgetStatefulWidget可以维护状态信息
* StatefulWidget的使用
* StatefulWidget子类通过覆盖createState方法可以维护一个State对象来存储状态信息
* 在State对象中
* 通过覆盖State对象的build方法返回一个Widget对象来显示StatefulWidget的UI
* 每次对State中维护的状态进行修改时都要调用setState方法并且传入一个函数
* 每次调用setState方法时都会重新调用build方法来对StatefulWidget的UI进行重新渲染
* ## Flutter中的布局
* Row和Column通常用于创建行和列的布局
* mainAxisAlignment/crossAxisAlignment用于控制主轴和交叉轴如何对其元素
* 当Widget太大而超出布局时可以通过为Widget外层套一个Expand来让其适应行或者列布局
* 如果在行或者列布局中想要一个widget的弹性布局空间是其他兄弟widget的2倍可以设置Expand的flex属性为2。flex属性默认值是1.
* 默认情况下行或列布局会沿着主轴尽量的占据空间。如果要将子项目尽量贴合在一起可以使用mainAxisSize属性将其设置为mainAxisSize.min
* 标准widget
* Container类似于html中的div可以为widget增加padding、margin、borders、background color或者其他的装饰
* GridView将widget作为二位列表显示有两种方式来创建GridView
* GridView.extent通过指定单元格的最大宽度
* GridView.count指定列的数量
* ListView当内容过多时会自动的支持滚动
* StackStack布局会将children中位于后面的Widget覆盖到位于前面的Widget之上
* Material Widget
* Card通过将Widget设置为Card的child可以添加圆角和阴影的效果
* ListTile用于显示行信息具有如下属性
* title为行指定title信息
* subtilte为行指定附加信息如果isThreeLine为falsesubtitle不能换行如果为truesubtitle可以为两行
* leading为行定义icon