Flutter 学习随笔

Card

Card 是卡片组件块,内容可以由大多数类型的 Widget 构成,Card 具有圆角和阴影,这让它看起来有立体感。

属性预览:

  const Card({Key key,this.color,//颜色this.elevation,//设置阴影this.shape,//设置圆角this.borderOnForeground = true,this.margin,//边距this.clipBehavior,//裁剪this.child,this.semanticContainer = true,}) : assert(elevation == null || elevation >= 0.0),assert(borderOnForeground != null),super(key: key);
clipBehavior属性值 说明
clipBehavior: Clip.none, 不裁剪
clipBehavior: Clip.hardEdge, 裁剪但不应用抗锯齿,裁剪速度比none模式慢一点,但比其他方式快。
clipBehavior: Clip.antiAlias, 裁剪而且抗锯齿,以实现更平滑的外观。裁剪速度比antiAliasWithSaveLayer快,比hardEdge慢。
clipBehavior: Clip.antiAliasWithSaveLayer, 带有抗锯齿的剪辑,并在剪辑之后立即保存saveLayer。

代码示例:

    var card = new SizedBox(child: new Card(elevation: 15.0,//设置阴影,即card在z轴的距离,数字越大阴影越重color: Colors.grey[100],//设置颜色,数字为颜色饱和度//设置margin边距//margin: const EdgeInsets.all(20),//可.all进行全部设置margin: const EdgeInsets.only(top: 8,left: 10,right: 10),//可.only进行单独设置//设定Card的圆角shape: RoundedRectangleBorder(// borderRadius: BorderRadius.all(Radius.circular(20.0)), //可.all进行全部设置 borderRadius: BorderRadius.only(  //可.only进行单独设置topLeft: Radius.circular(20.0),topRight: Radius.zero,bottomLeft: Radius.zero,bottomRight: Radius.circular(20.0)),),//设置裁剪clipBehavior: Clip.none,//不裁剪child: new Column(children: [new Container(decoration: BoxDecoration (color: Colors.grey[200]),child: new ListTile(title: new Text('评审工作',style: new TextStyle(fontWeight: FontWeight.w500)),),                                                  ),new Container(constraints: new BoxConstraints.expand(height:Theme.of(context).textTheme.display1.fontSize * 1.1 + 100,),child: Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly,children: [_buildButtonColumn(color, Icons.alarm_on, '待我接收'),_buildButtonColumn(color, Icons.alarm_add, '待我审批'),])),])));//封装按钮Column _buildButtonColumn(Color color, IconData icon, String label) {return Column(mainAxisSize: MainAxisSize.min,mainAxisAlignment: MainAxisAlignment.center,children: [Icon(icon, color: color,size: 35),Container(margin: const EdgeInsets.only(top: 2),child: Text(label,style: TextStyle(fontSize: 15,fontWeight: FontWeight.w400,color:Colors.red[500] ,),),),],);}

效果图:

             //card的标题ListTile(title: Text("李四",style: TextStyle(fontSize: 28)),//主标题subtitle: Text("CEO"),//副标题),

Divider

Divider为分割线控件

属性预览:

  const Divider({Key key,this.height,//控件高度,分割线在控件内居中this.thickness,//分割线的高度this.indent,//分割线前面空白区域this.endIndent,//分割线后面空白区域this.color,//分割线颜色}) : assert(height == null || height >= 0.0),assert(thickness == null || thickness >= 0.0),assert(indent == null || indent >= 0.0),assert(endIndent == null || endIndent >= 0.0),super(key: key);

代码示例:

  Divider(height: 10,thickness: 5,color: Colors.red,indent: 10,endIndent: 20,),

效果图:

Container

Container为容器控件,布局使用。

属性预览:

  Container({Key key,this.alignment,//容器内,内容对齐方式this.padding,//内边距Color color,//颜色Decoration decoration,//修饰容器,设置背景和边框this.foregroundDecoration,//设置前景用(可能会遮盖child内容,一般作为半透明遮盖(蒙层)效果使用!)double width,//宽度double height,//高度,若不设置宽高,则Container会尽可能的小(被内容撑起来)BoxConstraints constraints,//设置child的属性,注:double.infinity为无限大。this.margin,//外边距this.transform,//可以在其子组件绘制时对其应用一些矩阵变换来实现一些特效this.child,})
alignment属性值 说明
alignment:Alignment.center, 容器内,内容垂直水平居中
alignment:Alignment.centerLeft, 容器内,内容垂直居中,水平左对齐
alignment:Alignment.centerRight, 容器内,内容垂直居中,水平右对齐
alignment:Alignment.bottomCenter, 容器内,内容水平居中,紧贴下层
alignment:Alignment.botomLeft, 容器内,内容水平向左,紧贴下层
alignment:Alignment.bottomRight, 容器内,内容水平向右,紧贴下层
alignment:Alignment.topLeft, 容器内,内容水平向左,紧贴上层
alignment:Alignment.topCenter, 容器内,内容水平居中,紧贴上层
alignment:Alignment.topRight, 容器内,内容水平向右,紧贴上层

代码示例:

            new Container(alignment:Alignment.center,constraints: new BoxConstraints.expand(height:Theme.of(context).textTheme.display1.fontSize * 1.1 + 100,),child: Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly,children: [_buildButtonColumn(color, Icons.alarm_on, '待我接收'),_buildButtonColumn(color, Icons.alarm_add, '待我审批'),])),

效果图:

背景设置渐变色
代码示例:

            new Container(constraints: new BoxConstraints.expand(height:Theme.of(context).textTheme.display1.fontSize * 1.1 + 100,),decoration: BoxDecoration (color: Colors.grey[200],gradient: LinearGradient(//设置渐变色colors: [Colors.blueAccent, Colors.amber, Colors.purpleAccent],begin: Alignment.centerLeft,end: Alignment.centerRight,tileMode: TileMode.mirror,stops: [0.1, 0.5, 0.8])),child: Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly,crossAxisAlignment: CrossAxisAlignment.center,children: [_buildButtonColumn(color, Icons.alarm_on, '待我接收'),_buildButtonColumn(color, Icons.alarm_add, '待我审批'),])),

效果图:

Row

Row 是一个可以沿水平方向展示它的子组件的组件,用于布局

属性预览:

  Row({Key key,MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,MainAxisSize mainAxisSize = MainAxisSize.max,CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,TextDirection textDirection,VerticalDirection verticalDirection = VerticalDirection.down,TextBaseline textBaseline,List<Widget> children = const <Widget>[],}) : super(children: children,key: key,direction: Axis.horizontal,mainAxisAlignment: mainAxisAlignment,mainAxisSize: mainAxisSize,crossAxisAlignment: crossAxisAlignment,textDirection: textDirection,verticalDirection: verticalDirection,textBaseline: textBaseline,);
crossAxisAlignment属性值 说明
crossAxisAlignment: CrossAxisAlignment.start 在顶部对齐
crossAxisAlignment: CrossAxisAlignment.end 在底部对齐
crossAxisAlignment: CrossAxisAlignment.center 垂直居中
crossAxisAlignment: CrossAxisAlignment.stretch 拉伸填充满父布局
crossAxisAlignment: CrossAxisAlignment.baseline 报错(不知为什么)
mainAxisAlignment属性值 说明
mainAxisAlignment: MainAxisAlignment.spaceEvenly, 根据子组件数量平均分布显示,即每个子组件间隔相等
mainAxisAlignment: MainAxisAlignment.start, 靠左排列
mainAxisAlignment: MainAxisAlignment.end, 靠右排列
mainAxisAlignment: MainAxisAlignment.center, 居中排列
mainAxisAlignment: MainAxisAlignment.spaceAround, 主轴平均分,首尾到两边的距离为组件间距的一半
mainAxisAlignment: MainAxisAlignment.spaceBetween, 左右两头对齐,中间平均分布

代码示例:

                new Container(constraints: new BoxConstraints.expand(height:Theme.of(context).textTheme.display1.fontSize * 1.1 + 100,),child: Row(mainAxisAlignment: MainAxisAlignment.spaceAround,children: [_buildButtonColumn(color, Icons.alarm_on, '待我接收'),_buildButtonColumn(color, Icons.alarm_add, '待我审批'),_buildButtonColumn(color, Icons.alarm_add, '待我审批'),]),),new Container(constraints: new BoxConstraints.expand(height:Theme.of(context).textTheme.display1.fontSize * 1.1 + 100,),child: Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly,children: [_buildButtonColumn(color, Icons.alarm_on, '待我接收'),_buildButtonColumn(color, Icons.alarm_add, '待我审批'),]))

效果图:

Icon

Icon为图标组件。

属性预览:

  const Icon(this.icon, {Key key,this.size,//图标代销this.color,//图标颜色this.semanticLabel,this.textDirection,//添加文本})

TextField

TextField为输入框组件

属性预览:

  const TextField({Key key,this.controller,this.focusNode,this.decoration = const InputDecoration(),TextInputType keyboardType,this.textInputAction,this.textCapitalization = TextCapitalization.none,this.style,this.strutStyle,this.textAlign = TextAlign.start,this.textAlignVertical,this.textDirection,this.readOnly = false,ToolbarOptions toolbarOptions,this.showCursor,this.autofocus = false,this.obscureText = false,this.autocorrect = true,this.enableSuggestions = true,this.maxLines = 1,this.minLines,this.expands = false,this.maxLength,this.maxLengthEnforced = true,this.onChanged,this.onEditingComplete,this.onSubmitted,this.inputFormatters,this.enabled,this.cursorWidth = 2.0,this.cursorRadius,this.cursorColor,this.keyboardAppearance,this.scrollPadding = const EdgeInsets.all(20.0),this.dragStartBehavior = DragStartBehavior.start,this.enableInteractiveSelection = true,this.onTap,this.buildCounter,this.scrollController,this.scrollPhysics,})

Flutter学习笔记相关推荐

  1. Flutter学习笔记(10)--容器组件、图片组件

    如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...

  2. Flutter学习笔记 —— 完成一个简单的新闻展示页

    Flutter学习笔记 -- 完成一个简单的新闻展示页 前言 思路分析 案例代码 结束语 上图 前言 刚学Flutter不久,今天我们来看看如何使用 Container & ListView实 ...

  3. Flutter学习笔记(一)

    Flutter学习笔记(一) 学习前言 dart安装 vscode配置 持续更新中 学习前言 最近准备学习Flutter,参考B站 Dart Flutter教程_2022精讲Dart Flutter3 ...

  4. Flutter学习笔记(18)--Drawer抽屉组件

    如需转载,请注明出处:Flutter学习笔记(18)--Drawer抽屉组件 Drawer(抽屉组件)可以实现类似抽屉拉出和推入的效果,可以从侧边栏拉出导航面板.通常Drawer是和ListView组 ...

  5. Flutter学习笔记--Gridview网格组件制作相册

    Flutter学习笔记–Gridview网格组件制作相册 效果: GridView可以构建一个二维网格列表,其官方定义参考: https://book.flutterchina.club/chapte ...

  6. Flutter学习笔记(二)登陆注册界面的实现

    Flutter学习笔记(二)登陆注册界面的实现 简单的登录和注册界面的布局 SharedPreferences存储数据 页面路由和参数传递的心得 这几天按照顺序先完成了登录和注册的页面,没有什么特别的 ...

  7. Flutter学习笔记之-圆形头像实现方式

    Flutter学习笔记之-圆形头像实现方式 开发中如何实现类似圆形图片 Container+BoxDecoration来实现圆角图像 class DemoWidget extends Stateles ...

  8. Flutter学习笔记 —— CustomPainter自定义画布绘制爱心

    Flutter学习笔记 -- CustomPainter自定义画布绘制爱心 前言 效果图 代码示例 温馨提示 结束语 前言 最近在学习Flutter中 Canvas相关内容,今天尝试写了一个爱心Dem ...

  9. Flutter学习笔记08-Padding Row Column Flex Expanded组件详解

    学习视频地址:https://www.bilibili.com/video/BV1S4411E7LY?p=27&spm_id_from=pageDriver&vd_source=cee ...

  10. Flutter学习笔记学习资料推荐,大学生android开发项目实例

    Flutter开发中的一些Tips Flutter开发中的一些Tips(二) Flutter开发中的一些Tips(三) 正确操作Dart中的字符串[译] Flutter三种方式实现页面切换后保持原页面 ...

最新文章

  1. 经典问题——进程和线程区别
  2. [转载]Android开发常用调试技术记录
  3. c++ 取成员函数地址_c及c++指针及引用简单解释(自学学习心得)
  4. 修改nullMyEclipse 设置文件的默认编码
  5. oracle10g 开机自启动
  6. 使用DatagramSocket与DatagramPacket传输数据
  7. materialize_使用Materialize快速介绍材料设计
  8. ole db 错误 通讯链接失败_西门子PLC1200的S7通讯(同一项目下)--GET接收指令
  9. 网络的性能指标与分组交换网络
  10. matlab案例_基于matlab和frost平台的cassie案例足式机器人运动学和动力学计算实现过程...
  11. 95-22-010-停止-优雅停机
  12. 22. jQuery 遍历 - 同胞
  13. day9--Matplotlib--折线图
  14. 24点游戏 C语言代码
  15. 【华为 OJ 】进制转换
  16. pgAdmin4的应用(一)
  17. Win10最新批量激活
  18. 磁盘配额和raid配置
  19. 0082-莱布尼兹三角形
  20. 笔记本usb转vga外连显示器问题解决记录

热门文章

  1. 被互联网婚恋榨干的你,还会相信爱情吗?
  2. Leetcode 1436. Destination City [Python]
  3. ADS1115驱动程序
  4. Oracle使用函数达到drop table if exists
  5. mave工程dependencyManagement与dependencies区别
  6. python语言智慧树期末答案_2020智慧树Python语言应用期末答案
  7. 算力网络走向智能社会,云计算初心未改(一)
  8. 微信Android热补丁方案Tinker
  9. CodeIgniter session过期时间问题
  10. 优秀IT顾问的七大能力之一--专业技术能力