Flutter学习笔记
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学习笔记相关推荐
- Flutter学习笔记(10)--容器组件、图片组件
如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...
- Flutter学习笔记 —— 完成一个简单的新闻展示页
Flutter学习笔记 -- 完成一个简单的新闻展示页 前言 思路分析 案例代码 结束语 上图 前言 刚学Flutter不久,今天我们来看看如何使用 Container & ListView实 ...
- Flutter学习笔记(一)
Flutter学习笔记(一) 学习前言 dart安装 vscode配置 持续更新中 学习前言 最近准备学习Flutter,参考B站 Dart Flutter教程_2022精讲Dart Flutter3 ...
- Flutter学习笔记(18)--Drawer抽屉组件
如需转载,请注明出处:Flutter学习笔记(18)--Drawer抽屉组件 Drawer(抽屉组件)可以实现类似抽屉拉出和推入的效果,可以从侧边栏拉出导航面板.通常Drawer是和ListView组 ...
- Flutter学习笔记--Gridview网格组件制作相册
Flutter学习笔记–Gridview网格组件制作相册 效果: GridView可以构建一个二维网格列表,其官方定义参考: https://book.flutterchina.club/chapte ...
- Flutter学习笔记(二)登陆注册界面的实现
Flutter学习笔记(二)登陆注册界面的实现 简单的登录和注册界面的布局 SharedPreferences存储数据 页面路由和参数传递的心得 这几天按照顺序先完成了登录和注册的页面,没有什么特别的 ...
- Flutter学习笔记之-圆形头像实现方式
Flutter学习笔记之-圆形头像实现方式 开发中如何实现类似圆形图片 Container+BoxDecoration来实现圆角图像 class DemoWidget extends Stateles ...
- Flutter学习笔记 —— CustomPainter自定义画布绘制爱心
Flutter学习笔记 -- CustomPainter自定义画布绘制爱心 前言 效果图 代码示例 温馨提示 结束语 前言 最近在学习Flutter中 Canvas相关内容,今天尝试写了一个爱心Dem ...
- Flutter学习笔记08-Padding Row Column Flex Expanded组件详解
学习视频地址:https://www.bilibili.com/video/BV1S4411E7LY?p=27&spm_id_from=pageDriver&vd_source=cee ...
- Flutter学习笔记学习资料推荐,大学生android开发项目实例
Flutter开发中的一些Tips Flutter开发中的一些Tips(二) Flutter开发中的一些Tips(三) 正确操作Dart中的字符串[译] Flutter三种方式实现页面切换后保持原页面 ...
最新文章
- 经典问题——进程和线程区别
- [转载]Android开发常用调试技术记录
- c++ 取成员函数地址_c及c++指针及引用简单解释(自学学习心得)
- 修改nullMyEclipse 设置文件的默认编码
- oracle10g 开机自启动
- 使用DatagramSocket与DatagramPacket传输数据
- materialize_使用Materialize快速介绍材料设计
- ole db 错误 通讯链接失败_西门子PLC1200的S7通讯(同一项目下)--GET接收指令
- 网络的性能指标与分组交换网络
- matlab案例_基于matlab和frost平台的cassie案例足式机器人运动学和动力学计算实现过程...
- 95-22-010-停止-优雅停机
- 22. jQuery 遍历 - 同胞
- day9--Matplotlib--折线图
- 24点游戏 C语言代码
- 【华为 OJ 】进制转换
- pgAdmin4的应用(一)
- Win10最新批量激活
- 磁盘配额和raid配置
- 0082-莱布尼兹三角形
- 笔记本usb转vga外连显示器问题解决记录
热门文章
- 被互联网婚恋榨干的你,还会相信爱情吗?
- Leetcode 1436. Destination City [Python]
- ADS1115驱动程序
- Oracle使用函数达到drop table if exists
- mave工程dependencyManagement与dependencies区别
- python语言智慧树期末答案_2020智慧树Python语言应用期末答案
- 算力网络走向智能社会,云计算初心未改(一)
- 微信Android热补丁方案Tinker
- CodeIgniter session过期时间问题
- 优秀IT顾问的七大能力之一--专业技术能力