当前位置:   article > 正文

Flutter 所有控件widget(持续更新)_flutter有哪几种widget

flutter有哪几种widget

各种widget列表:

  1. MaterialApp类:
  2. MaterialApp:代表Material设计风格的应用,添加了特定风格的属性。title, theme, color, home, routes, inititalRoute, onGenerateRoute, localizationDelegates, locale, 
  3. MaterialColor:
  4. MaterialButton:
  5. RawMaterialButton:基于Semantics, Material, InkWell 控件。padding, child, constraint, materialTapTargetSize, onPress,
  6. MaterialPageRoute:
  7. MaterialAccentColor:
  8. MergeableMaterialItem:

 

Bar类:

  1. AppBar:应用栏,由工具栏组成。或者工具栏和其他widget组合形成的。例如TabBar和FlexibleSpaceBar。title, bottom(顶部导航TabBar), 通常用于Scaffold.appBar属性。SliverAppBar:类似Android Toolbar滑动头部。应用栏。AppBar位置固定最上面,SliveAppBar可以随内容滚动的。leading:返回图标。
  2. BottomAppBar:底部应用栏。通常与Scaffold.bottomNavigationBar一起使用的容器。可以在顶部有一个凹口为FloatingActionButton腾出空间。
  3. BottomNavigationBarItem:底部导航应用栏
  4. SnackBar:
  5. ScrollbarPainter:用于绘制滚动条的CustomPainter,只有shouldRepaint返回true时才绘制。
  6. FlexileSpaceBar:
  7. ButtonBar:末端对齐的按钮容器,
  8. SnackBarAction:
  9. TabBar:(配合导航类的Tab),常用的横向标签,实现并行界面的横向滑动展示,通常会在AppBar的底部部分结合TabBarView来使用TabBar。tabs, controller, isScrollable, indicatorColor, indicatorWeight, indicatorPadding, labelColor, labelStyle, unselectedLabelColor, onTap。


Dialog类:

  1. AlertDialog:
  2. Dialog:
  3. AboutDialog:
  4. SimpleDialog:

 

Scaffold类:

  1. Scaffold:实现基本的MaterialDesign布局结构。appBar:显示顶部AppBar,body:当前界面显示的主要内容WIdget。floatingActionButton:界面的主要功能按钮,floatingActionButtonLocation:(FloatingActionButtonLocation.endDocked),persistentFooterButtons:固定在下方显示的按钮,drawer:侧边栏控件,backgroundColor:内容的背景颜色(默认ThemeData.scaffoldBackgroundColor的值),bottomNavigationBar:显示在页面底部的导航栏。
  2. ScaffoldState:Scaffold的state对象,用来控制SnackBars和BottomSheets和Drawer的显示隐藏。

 

Scroll类:

  1. ScrollView:属于抽象类,不能直接实例化。scrollable的(ListView, PageView, GridView, CustomScrollView, SingleChildScrollView, ScrollNotification)。
  2. Scrollable:不包含UI逻辑,很难直接构造。
  3. SingleChildScrollView:只有一个可滑动的子widget的ScrollView.
  4. ScrollNotfication, NotificationListener:可以用在不使用ScrollController的情况下查看滚动位置的widget. onNotification.
  5. ScrollbarPainter:绘制滑动条的CustomPainter。shouldRepaint返回true时。不使用时调用dispose。
  6. ScrollMetrics:抽象类,包含当前ViewPort及滚动位置等信息。pixel,maxScrollExtent,extentInside,extentAfter,atEdge.
  7. ScrollPhysics:确定混动组件的物理属性。
  8. BoxScrollView:使用单个子布局模型的ScrollView.(ListView线性,GridView使用二维布局,CustomScrollView多个布局)。
  9. CustomScrollView:一个使用Slivers来创建各种自定义滚动效果的ScrollView.可展开的头部配合SliverAppBar, SliverList, SliverGrid.
  10. NestedScrollView:可以嵌套在另一个滚动视图中的ScrollView本质上,他们滚动是连接着的。常见的包含一个SliverAppBar, 并且包含TabBar和TabBarView。headSliverBuilder: 构造出来一个包含TabBar的SliverAppBar,并且body中包含TabBarView。
  11. controller , physics, body.

 

Grid类:

  1. GridTile:GridList的一种组件,包含head,body,footer。
  2. GridView:滚动列表。scrollDirection:滚动方向,reverse:是否反向,controller:控制child滚动时候的位置,cacheExtent:缓存区域,gridDelegate:控制GridView子节点布局的delegate.四种构造方法:GridView.builder,GridView.custom,GridView.count,GridView.extent。
  3. GridPaper:
  4. SliverGrid:将多个item以每行两个的形式,进行排列。
  5. GridTileBar:

 

列表类:

  1. AnimatedList:”动画滚动容器”,插入和移除项目时设定动画。
  2. ListView:(extend BoxScrollView,BoxScrollView extend ScrollView)”滚动列表”,跟GridView相似,基本上一个slivers只包含一个SliverListCustomScrollViewscrollDirection:Axis.horizontal。
  3.     几种构造方式:List,ListView.builder,ListView.separated,ListView.custom。把数据Iterable添加到列表中,ListTile.divideTitles。
  4.     ListView.builder,设置单个item属性,懒加载。itemBuilder:itemCount:, .
  5. ListBody:列表组件。给定轴方向,按照顺序排列子节点。
  6. ExpansionPanelList:
  7. PageView:可滚动的视图列表,每个子widget都是视图窗口的大小, controller。

 

frame布局类:

  1. Align:对齐控件,将子控件指定方式对齐,根据子控件调整自己大小,alignment:bottomRight,center,bottomLeft,topLeft。widthFactor,hightFactor匹配对应尺寸,长宽比例。
  2. Stack:多个childs相对于其框的边缘定位,用于简单重叠children,alignment:默认右上角,center。fit:loose放开宽高约束,expand子节点最大可能的占用空间,允许的最大大小,passthrough不改变子节点约束。textDirection文本方向。overflow超过部分是否剪裁掉,clip/visible。
  3. IndexdStack:显示一个子项列表的单个子项。显示指定位置widget,给出索引选择出widget,value==null不显示任何内容。
  4. index显示child的索引,通过多个图片切换可以表示状态。
  5. Row:填充可用的横向水平空间,一行的高度是childs的最大高度。mainAxisSize:默认max,mainAxisAlignment:children放置在主轴某位置,CrossAxisAlignment属性设定位置交叉对齐。
  6. Column:将child显示在竖直方向数组的widget,和Row相对。竖直很多无法滚动,可以配合listView使用。mainAxisSize , mainAxisAlignment , CrossAxisAlignment:center/end/start。
  7. Container:矩形视图,BoxDecoration可以有边框或者阴影。结合常见绘画,定位和大小调整。让child填充绘制(然后绘制前景),然后将其他约束应用到填充范围。没有child则会尽可能大,除非被width,height约束。margin, alignment: Alignment.topLeft , decoration:可以使用空间等作为背景, 
  8. Center:放置中心,如果受到外界约束,widthFactor,heightFactor为null,则会尽可能大。不受外界约束,相应大小为null,则匹配child大小。
  9. ConstrainedBox:添加额外的条件在child上。
  10. OverflowBox:对child施加约束不同于获得的约束,可能允许child溢出父控件的空间。
  11. DecoratedBox:child绘制前,或者绘制后,添加额外的限制条件到child widget上。decoration,position。
  12. RendorDecoratedBox:
  13. FittedBox:根据自己需要,对child进行缩放和定位。boxfit,alignment,
  14. LimitedBox:对最大宽高进行限制的控件,前提是LimitedBox不受约束。
  15. RotatedBox:将child旋转整数的1/4
  16. SizedBox:一个具有制定大小的盒子。SizedBox.expand(); SizedBox.shrink(); SizedBox.fromSize();
  17. SizeOverflowBox:特定大小的widget,但将其原始约束传递给它的子节点,可能溢出。alignment , size .
  18. UnconstrainedBox:一个试图让child在没有约束的情况下绘制的容器。alignment ,textDirection ,constrainedAxis。
  19. Expanded:用于撑开布局子组件的widget,用于在Row,Column,Flex子组件内。占满所有可用空间。
  20. Padding:widget内边距,Container+padding=Padding。
  21. SliverPadding:是Slivers大家族中的一个,配合各种Sliver成员使用。作用于每一个item。
  22. AnimatedPadding:动画成员的一部分,动画版本的padding。
  23. Table:多列多行的需求,columnWidth.
  24. Card:卡片。shape:RoundedRectangleBorder,elevation,margin,color, child.

 

form类:

  1. TextField:文本输入框,修改时onchange被调用。获得最新的文本信息。输入完毕onSubmitted 被调用。
  2.                 decoration属性控制样式,添加标签或图标。
  3. Checkbox:复选框,发生变化,onchange被调用。单个选择,一组单选。
  4. CheckboxListTile:下拉复选框,带有复选框的ListTitle,与checkbox类似onChanged , activeColor , title , subtitle , isThree Line , dense.
  5. FlatButton:显示在material widget上的文本标签,零高程,不可见边框,onPress==null责备禁用,disableColor,icon,可以用 ButtonTheme覆盖,clipBehavior不能为空
  6. RaisedButton : 凸起的按钮,icon,onpress,shape更改边框样式和圆角,
  7. IconButton:通过填充颜色对点击做出反应,通常用在AppBar.actions。
  8. PopupMenuButton:提供提供菜单栏弹出对话框的按钮。选项被点击调用onSelected, initialValue初始值,单项有icon,enabled值。通常配合PopupMenuItem。itemBuilder。
  9. FloatingActionButton:浮动动作按钮,常用在Scaffold.floatingActionButton字段中,FAB三种类型regular,mini,extended.onPress==null,则不可用不会变灰色。可更改边框,点击效果,内容文字,颜色,圆角。
  10. RawMaterialButton:raw material 按钮,基于Sematics,Material,Inkwell创建的按钮。
  11. DropdownButton:用于项目列表中进行选择的按钮,
  12. OutlineButton:边框按钮,RaisedButton和FlatButton之间的交叉,一个有边框的按钮。
  13. Text:单一样式文本,接近DefaultStyle,重新设置样式DefaultStyle.inherit为false,data文本内容,textAlign对齐方式,maxLines最大行数,overflow文本截断方式,textScaleFactor文本缩放比例,style颜色字体粗细背景。
  14. RichText:具有复杂样式的文本显示组件,富文本展示不同风格文本widget.TextText.rich都是从RichText构建出来的。TextSpan显示不同样式。
  15. Radio:material design风格的单选按钮,groupValue代表选中项,activeColor激活时的颜色,onChanged改变时触发,value单选的值。
  16. RadioListTile:单选按钮附文字label.单击文字同单击radio.
  17. Slider:进行范围选择的控件,数据可连续可非连续,在最大值和最小值之间,thumb滑块 track滑轨 value indicator值指示器 active选中区 inactive非选中区。SliderTheme定制复杂样式。
  18. SliderTheme:用来改变Slider样式的上层部件。用来改变Slider样式的上层部件。更改sliderTheme.data修改Slider总体样式。
  19. SliderThemeData:sliderTheme.data = SliderThemeData(), data的修饰属性。
  20. Switch:切换按钮组件,使用Switch子类adaptive修改成iOS风格,activeColor,activeThumbImage激活时按钮的图像,activeTrackColor:按钮激活滑轨颜色,inactiveThumbColor,inactiveThumbImage,inactiveTrackColor.
  21. SwitchListTile:Switch的一个衍生组件。支持各种自定义样式,附带文字和图标。
  22. AnimatedSwitcher:渐变切换的组件,有动画效果。

 

Media类:

  1. AssetImage:从AssetBundle中获取图像,根据上下文来确定使用的确切图像。
  2. DecorationImage:修饰Box的图片,一般配合BoxDecoration的img 属性. 也可以配合paintImage使用。fit:BoxFit.cover;
  3. ExactAssetImage:类似带有scale属性的AssetImage。可以理解为带有scale的AssetImage.
  4. FadeInImage:占位图 placeHolder —> image目标图片的一种过渡widget。fadeOutDuration,fadeOutCurve控制placeholder的动画, image:NetworkCacheImage(image)。FadeInImage.memoryWork();
  5. FileImage:用来展示本地文件,将FIle对象解码为图片,指定scale。Image.file是ImageFile的简写形式。
  6. NetworkImage:展示网络图片的widget,Image.network是提供的简写形式。
  7. RawImage:直接显示dart:ui.Image的widget。很少使用。通过paintImage绘制出来的。
  8. MemoryImage:将给定的Uint8List缓冲区解码为图像的widget. ImageProvider。
  9. Image:用来展示Image. instantiateImageCodec。绘制使用 Canvas.drawImage. //Image.asset, Image.network, Image.file, Image.memory.。

Icon:使用IconData描述的字体绘制图形图标。`

  1. ImageIcon:来自ImageProvider的图标,例如AssetImage.
  2. IconTheme:用于应用栏图标的颜色,不透明度和大小。backgroundColor, brightness, textTheme.
  3. IconData:字体表示符合表示的图标说明,
  4. IconThemeData:为图标提供的属性,必须是Icon的父级。IconTheme.of,opacity属性透明度。
  5. Canvas:操作图形的界面,可以与SceneBuilder一起用来构建场景。
  6. PainterSketch:操作图形的界面,canvas+paint+GestureDetector实现一个简单画板。
  7. PainterPath:在canvas上绘制图案。
  8. *CircleProgressBarPainter:操作图形的界面。使用canvas+Animation实现。

 

导航navigation类:

  1. BottomNavigationBarItem:底部导航应用栏,嵌套使用。
  2. BottomNavigationBar:”底部导航栏”,通常和Scaffold结合使用。作为Scaffold.bottomNavigationBar参数。
  3. Tab:s属于Material风格的widget.配合TabBarView使用。TabController协调TabBarView和Tab之间选择和个数等。
  4. CheckedPopupMenuItem:
  5. DropdownMenuItem:
  6. PopupMenuBottom:
  7. PopupMenuDivider:
  8. PopopMenuEntry:
  9. PopupMenuItem:

 

Pick类:

  1. DayPicker:
  2. MonthPicker:
  3. YearPicker:
  4. ShowdatePicker:
  5. CityPicker:

 

Chip类:

  1. Chip:
  2. ChipTheme:
  3. ChipThemeData:
  4. ChoiceChip:
  5. FilterChip:
  6. InputChip:
  7. RawChip:
  8. ClipOval:子控件裁切容器,/ClipRect, /ClipRRect, /ClipPath, /CustomClipper.  BorderRadius, child.

 

Progress类:

  1. CircularPercentIndicator:
  2. LinearProgressIndicator:
  3. * NestedScrollViewRefreshIndicator:类似SwipeRefreshLayout。key, child, onRefresh, .

 

decoration类:

  1. BoxDecoration:image(背景图), color(背景色), borderRadius(直线的圆角,包含四个), border(外框), shape(框形状), gradient(渐变色), boxShadow,.
  2. ShapeDecoration:
  3. InkDecoration:
  4. FlutterLogoDecoration:
  5. InputDecoration:
  6. TextDecoration:

 

shape类:

shape : RoundedRectangleBorder, BoxShape(BoxShape.circle), CircleBorder, .

 

**************

Cupertino类:

  1. CupertinoApp:
  2. CupertinoButton:
  3. CupertinoColors:
  4. CupertinoIcons:
  5. CupertinoNavigationBar:
  6. CupertinoPageRoute:
  7. CupertinoPageScaffold:
  8. CupertinoPicker:
  9. CupertinoPopupSurface:
  10. CupertinoScrollbar:
  11. CupertinoSlider:
  12. CupertinoSegmentedControl:
  13. CupertinoSliverNavigationBar:
  14. CupertinoSwitch:
  15. CupertinoTabBar:
  16. CupertinoTabScafold:
  17. CupertinoTabView:
  18. CupertinoTimerPicker:

 

Sliver系列:

  1. SliverAppBar:title, pinned, floating, snap, elevation.
  2. SliverFixedExtentList:
  3. SliverList:delegate, childCount, 
  4. SliverGrid:SliverGrid.count(), SliverGrid.extent(), SliverGrid(), crossAxisCount, maxCrossAxisExtent:
  5. SliverPersistentHeader:pinned, floating, 滑动时具有动态大小。delegate, 集成SliverPersistentHeadDelegate实现,覆载minExtent, maxExtent, shouldBuild, snapConfiguration。pinned:当达到最小时是否固定头部。
  6. SliverFixedExtentList:
  7. SliverToBoxAdapter:组合视图,放在CustomListVIew 中,

 

Localizations : Localizations.override(locale:**,child**),包裹响应多语言改变

 

Semantics:

Label:

Positioned:

Ink:

InkWell:

ViewController:

Drawer:

Divider:直线

GestureDetector:处理手势识别,非空回调,fit parent.onTap,

FocusScope: FocusScope.of(context).requestFocus(new FocusNode());

WillPopScope:用户退出界面时的回调

SafeArea:安全区,防止overFlow现象

 

Transform: Transform.translate(),


应用中的组合:

刷新列表:

NestedScrollViewRefreshIndicator(onRefresh)  -> NestedScrollView(headerSliverBuilder) -> NotificationListener(onNotification)  -> ListView(itemCount,itemBuilder).

RefreshIndicator(onRefresh) -> ListView(itemCount,itemBuilder,controller).

 


屏幕宽度高度:MediaQuery.of(context).size.width

                    MediaQuery.of(context).size.height

屏幕状态栏高度:MediaQueryData.fromWindow(WidgetBinding.instance.window).padding.top。

 

 

Flutter设计中,组合的优先级大于继承。。StatefullWidget,StatelessWidget.

自定义widget:

Class MyApp extends StatefulWidget{

    @override

    MySateWidget createState() => MySateWidget();

}

Class MySateWidget extends State<MyApp>{

    initState(){

        //logic

        Super.initState();

    }

    Widget build(context){

        //logic

    }

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/313269?site
推荐阅读
相关标签
  

闽ICP备14008679号