flutter常用组件

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

属性

data → String

要显示的文本

locale → Locale

当可以根据区域设置以不同方式呈现相同的Unicode字符时,用于选择字体。

maxLines → int

文本可跨越的可选最大行数,必要时可以换行。如果文本超过给定的行数,则会根据overflow将其截断。

overflow → TextOverflow

视觉溢出应如何处理。

semanticsLabel → String

此文本的替代语义标签。

softWrap → bool

文本是否应在换行符处中断。

strutStyle → StrutStyle

使用的支撑杆样式。撑杆样式定义撑杆,该撑杆设置最小的垂直布局指标。

style → TextStyle

如果不为null,则为该文本使用的样式。

textAlign → TextAlign

文本应如何水平对齐。

textDirection → TextDirection

文本的方向性。

textScaleFactor → double

每个逻辑像素的字体像素数。

textSpan → InlineSpan

要显示为InlineSpan的文本。

textWidthBasis → TextWidthBasis

空值。

hashCode → int

此对象的哈希码。

key → Key

控制一个小部件如何替换树中的另一个小部件。

runtimeType → Type

对象的运行时类型的表示形式。

方法

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

alignment → AlignmentGeometry

如何在其范围内对齐图像。

centerSlice → Rect

九片图像的中心切片。

color → Color

如果不为null,则使用colorBlendMode将此颜色与每个图像像素混合

colorBlendMode → BlendMode

用于将颜色与此图像结合在一起。

excludeFromSemantics → bool

是否从语义中排除此图像。

filterQuality → FilterQuality

用于设置图像的FilterQuality

fit → BoxFit

如何将图像刻在版面分配的空间中。

frameBuilder → ImageFrameBuilder

一个构建器函数,负责创建代表该图像的窗口小部件。

gaplessPlayback → bool

当图像提供者更改时,是继续显示旧图像(true),还是暂时不显示任何图像(false)

height → double

如果不为空,则要求图像具有此高度。

image → ImageProvider

要显示的图像。

loadingBuilder → ImageLoadingBuilder

一个构建器,用于指定在图像仍在加载时向用户显示的小部件。

matchTextDirection → bool

是否在TextDirection的方向上绘制图像。

repeat → ImageRepeat

如何绘制布局边界的任何部分(图像未覆盖)。

semanticLabel → String

图像的语义描述。

width → double

如果不为空,则要求图像具有此宽度。

hashCode → int

此对象的哈希码。

key → Key

控制一个小部件如何替换树中的另一个小部件。

runtimeType → Type

对象的运行时类型的表示形式。

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,



…….

})

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

推荐阅读更多精彩内容