MaterialApp
属性
builder:用于将小部件插入导航器上方但位于由widgetsapp小部件创建的其他小部件下方的生成器,或用于完全替换导航器。
checkerboardOffscreenLayers:打开渲染到屏幕外位图的层的棋盘格。
checkerboardRasterCacheImages:打开光栅缓存图像的棋盘格。
color:操作系统接口中应用程序使用的主颜色。
darkTheme :当系统请求“暗模式”时要使用的主题数据。
debugShowCheckedModeBanner:在选中模式下打开一个小的“调试”横幅以指示应用程序处于选中模式。默认情况下,此选项处于启用状态(在选中模式下),若要将其禁用,请将构造函数参数设置为false。在释放模式下,这不起作用。
debugShowMaterialGrid :打开绘制基线网格材质应用程序的网格纸覆盖。
home:应用程序默认路由的小部件。
initialRoute:如果构建了导航器,则显示的第一条路由的名称。
locale:此应用程序本地化小部件的初始区域设置基于此值。
localeListResolutionCallback:此回调负责在应用程序启动时以及用户更改设备的区域设置时选择应用程序的区域设置。
localizationsDelegates :此应用程序本地化小部件的委托。
navigatorKey :生成导航器时要使用的键。
navigatorObservers:为此应用程序创建的导航器的观察者列表。
onGenerateRoute :当应用程序导航到命名路由时使用的路由生成器回调。
onGenerateTitle :如果非空,则调用此回调函数以生成应用程序的标题字符串,否则将使用标题。
onUnknownRoute :当OnGenerateRoute无法生成路由(InitialRoute除外)时调用。
routes :应用程序的顶级路由表。
showPerformanceOverlay :打开性能覆盖。
showSemanticsDebugger :打开显示框架报告的可访问性信息的覆盖。。
supportedLocales :此应用程序已本地化的区域设置列表。
theme :此应用程序的材质小部件的默认视觉属性,如颜色、字体和形状。
themeMode :确定如果同时提供主题和暗主题,应用程序将使用哪个主题。
title :设备用于为用户标识应用程序的单行描述。
hashCode :此对象的哈希代码。
key :控制一个小部件如何替换树中的另一个小部件。
runtimeType:对象的运行时类型的表示。
方法:
createState() → _MaterialAppState
在树中的给定位置为此小部件创建可变状态。
createElement() → StatefulElement
创建一个StatefulElement来管理该小部件在树中的位置。
debugDescribeChildren() → List<DiagnosticsNode>
返回描述此节点的子节点的DiagnosticsNode对象的列表。
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
添加与该节点关联的其他属性。
noSuchMethod(Invocation invocation) → dynamic
当访问不存在的方法或属性时调用。
toDiagnosticsNode({String name, DiagnosticsTreeStyle style }) → DiagnosticsNode
返回调试工具和DiagnosticsNode.toStringDeep使用的对象的调试表示形式。
toString({DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String
返回此对象的字符串表示形式。
toStringDeep({String prefixLineOne: '', String prefixOtherLines, DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String
返回此节点及其后代的字符串表示形式。
toStringShallow({String joiner: ', ', DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String
返回对象的单行详细说明。
toStringShort() → String
此小部件的简短文字说明。
Text
属性
要显示的文本
当可以根据区域设置以不同方式呈现相同的Unicode字符时,用于选择字体。
文本可跨越的可选最大行数,必要时可以换行。如果文本超过给定的行数,则会根据overflow将其截断。
视觉溢出应如何处理。
此文本的替代语义标签。
文本是否应在换行符处中断。
使用的支撑杆样式。撑杆样式定义撑杆,该撑杆设置最小的垂直布局指标。
如果不为null,则为该文本使用的样式。
文本应如何水平对齐。
文本的方向性。
每个逻辑像素的字体像素数。
要显示为InlineSpan的文本。
textWidthBasis → TextWidthBasis
空值。
此对象的哈希码。
控制一个小部件如何替换树中的另一个小部件。
对象的运行时类型的表示形式。
方法
build(BuildContext context) → Widget
描述此窗口小部件表示的用户界面部分。
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
添加与该节点关联的其他属性。
createElement() → StatelessElement
创建一个StatelessElement来管理该小部件在树中的位置。
debugDescribeChildren() → List<DiagnosticsNode>
返回描述此节点的子节点的DiagnosticsNode对象的列表。
noSuchMethod(Invocation invocation) → dynamic
当访问不存在的方法或属性时调用。
toDiagnosticsNode({String name, DiagnosticsTreeStyle style }) → DiagnosticsNode
返回调试工具和DiagnosticsNode.toStringDeep使用的对象的调试表示形式。
toString({DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String
返回此对象的字符串表示形式。
toStringDeep({String prefixLineOne: '', String prefixOtherLines, DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String
返回此节点及其后代的字符串表示形式。
toStringShallow({String joiner: ', ', DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String
返回对象的单行详细说明。
toStringShort() → String
此小部件的简短文字说明。
Image
Properties
如何在其范围内对齐图像。
九片图像的中心切片。
如果不为null,则使用colorBlendMode将此颜色与每个图像像素混合
用于将颜色与此图像结合在一起。
是否从语义中排除此图像。
用于设置图像的FilterQuality。
如何将图像刻在版面分配的空间中。
frameBuilder → ImageFrameBuilder
一个构建器函数,负责创建代表该图像的窗口小部件。
当图像提供者更改时,是继续显示旧图像(true),还是暂时不显示任何图像(false)
如果不为空,则要求图像具有此高度。
要显示的图像。
loadingBuilder → ImageLoadingBuilder
一个构建器,用于指定在图像仍在加载时向用户显示的小部件。
是否在TextDirection的方向上绘制图像。
如何绘制布局边界的任何部分(图像未覆盖)。
图像的语义描述。
如果不为空,则要求图像具有此宽度。
此对象的哈希码。
控制一个小部件如何替换树中的另一个小部件。
对象的运行时类型的表示形式。
Methods
createState() → _ImageState
在树中的给定位置为此小部件创建可变状态。
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
添加与该节点关联的其他属性。
createElement() → StatefulElement
创建一个StatefulElement来管理该小部件在树中的位置。
debugDescribeChildren() → List<DiagnosticsNode>
返回描述此节点的子节点的DiagnosticsNode对象的列表。
noSuchMethod(Invocation invocation) → dynamic
当访问不存在的方法或属性时调用。
toDiagnosticsNode({String name, DiagnosticsTreeStyle style }) → DiagnosticsNode
返回调试工具和DiagnosticsNode.toStringDeep使用的对象的调试表示形式。
toString({DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String
返回此对象的字符串表示形式。
toStringDeep({String prefixLineOne: '', String prefixOtherLines, DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String
返回此节点及其后代的字符串表示形式。
toStringShallow({String joiner: ', ', DiagnosticLevel minLevel: DiagnosticLevel.debug }) → String
返回对象的单行详细说明。
toStringShort() → String
此小部件的简短文字说明。
Button
onPressed时间,
实现方式:
class RawMaterialButton extends StatefulWidget {
const RawMaterialButton({
……
//首先构造函数中有这个事件
@required this.onPressed,
…….
})
//声明final属性
final VoidCallback onPressed;
//在build函数中
@override
Widget build(BuildContext context) {
……
final Widget result = Focus(
child: ConstrainedBox(
child: Material(
child: InkWell(
onHighlightChanged: _handleHighlightChanged,
…….
onHover: _handleHoveredChanged,
//当用户点击时候调用
onTap:widget.onPressed,
……
)
)
)
}
}
其中ConstrainedBox extends SingleChildRenderObjectWidget extends RenderObjectWidget
extends Widget extends DiagnosticableTree ,在其子项上施加其他约束的窗口小部件。
其中组件Material extends StatefulWidget 中来对其他材料进行裁剪、设置像素、实现水墨效果等功能。
其中组件InkWell extends InkResponse extends StatefulWidget,是一个响应触摸的Material矩形区域
InkWell extends InkResponse extends StatefulWidget
InkResponse 实现onTap 过程
class InkResponse extends StatefulWidget {
const InkResponse({
……
//构造函数
this.onTap,
……
})
//属性
final GestureTapCallback onTap;
//创建状态
@override
_InkResponseState createState() => _InkResponseState();
class _InkResponseState<T extends InkResponse> extends State<T> with AutomaticKeepAliveClientMixin {
//tap事件处理方法
void _handleTap(BuildContext context) {
_currentSplash?.confirm();
_currentSplash = null;
updateHighlight(_HighlightType.
pressed, value: false);
if (widget.onTap != null) {
if (widget.enableFeedback)
Feedback.forTap(context);
widget.onTap();
}
}
//在build函数
@override
Widget build(BuildContext context) {
……
return MouseRegion(
……
child: GestureDetector(
……
//调用handleTap方法。
onTap:enabled ? () => _handleTap(context) :null,
……
),
);
}
}
语法特性总结:
[if !supportLists]l [endif]将构造函数的参数赋值给实例变量,直接在构造函数参数上使用this关键字,不用单独赋值。
const RawMaterialButton({
……
//首先构造函数中有这个事件
@required this.onPressed,
…….
})
//当用户点击时候调用
onTap:widget.onPressed,
……
)
[if !supportLists]l [endif]可选命名参数,参数可以使用名称指代,不用保证顺序。
//在build函数中
@override
Widget build(BuildContext context) {
……
final Widget result = Focus(
child: ConstrainedBox(
child: Material(
child: InkWell(
onHighlightChanged:
_handleHighlightChanged,
…….
onHover: _handleHoveredChanged,
[if !supportLists]l [endif]函数本身可以当做参数传递
onHover: _handleHoveredChanged,
[if !supportLists]l [endif]参数默认值
const RawMaterialButton({
……
this.elevation =2.0,
…….
})