如需转载,请注明出处:Flutter学习笔记(11)--文本组件、图标及按钮组件

  • 文本组件

文本组件(text)负责显示文本和定义显示样式,下表为text常见属性

Text组件属性及描述
属性名 类型 默认值 说明
data String   要显示的文本
maxLines int 0 文本要显示的最大行数
style TextStyle null 文本样式,可定义文本的字体大小、颜色、粗细等
textAlign TextAlign TextAlign.center 文本水平方向的对齐方式,取值有center、end、justify、left、right、start、values
textDirection TextDirection TextDirection.ltr 文本的书写方向,如从左到右、从右到左
textScaleFactor double 1.0 字体的缩放系数,比如,如果此属性设置的值为1.5,那么字体会被放大到150%,也就是说比原来大了50%
textSpan TextSpan null 文本块,TextSpan里可以包含文本内容及样式

老样子,按照惯例附上Demo,创建多个文本组件来展示不同的文本样式,比如不同的颜色,不同的自号,不同的线形等。

import 'package:flutter/material.dart';

void main() => runApp(DemoApp());

class DemoApp extends StatelessWidget{
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: '文本组件Demo',
home: new Scaffold(
appBar: new AppBar(
title: Text('文本组件Demo'),
),
body: new Column(
children: <Widget>[
new Text(
'第一个文本Demo',
style: new TextStyle(
color: Colors.amberAccent,
fontSize: ,
),
),
new Text(
'第二个文本Demo',
style: new TextStyle(
color: Colors.deepOrange,
fontSize: ,
),
textScaleFactor: 1.5,//放大50%
),
new Text(
'第三个文本Demo(瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的)',
style: new TextStyle(
color: Colors.blue,
fontSize: ,
),
textAlign: TextAlign.end,//右对齐
),
new Text(
'''第四个文本Demo
换到第二行,看看能不能显示的出来呢''',
style: new TextStyle(
fontSize: ,
color: Colors.green,
),
maxLines: ,//最大显示2行 ),
new Text(
'第五个Demo,设置水平方向文案超出屏幕后,显示...(瞎写的字瞎写的字瞎写的字瞎写的字瞎写的字瞎写的字瞎写的字瞎写的字)',
style: new TextStyle(
fontSize: ,
color: Colors.black,
),
overflow: TextOverflow.ellipsis,//水平方向超出屏幕显示...
)
],
),//垂直方向排列
),
);
}
}

除了这些,还有很多其他的属性等着我们去尝试,我就不一一都写出来了,我也是刚开始接触Flutter,有些地方还不是很理解,希望以后接触的多了,可以豁然开朗吧!!!给大家看一下效果图:

  • 图标及按钮组件

  • 图标组件

图标组件(Icon)为展示图标的组件,该组件不可交互,要实现可交互,可以考虑使用IconButton组件,图标组件相关的组件有一下几个:

  1.IconButton:可交互的Icon

  2.Icons:框架自带Icon集合

  3.IconTheme:Icon主题

  4.ImageIcon:通过AssetImages或者其他图片显示Icon

图标组件常用属性表
属性名 类型 默认值 说明
color Color null 图标的颜色
icon IconData null 展示的具体图标,可以使用Icons图标列表中的任意一个图标即可,如Icons.phone表示一个电话的图标
style TextStyle null 文本样式
size Double 24.0 图标的大小,注意要带上小数位
textDirection TextDirection TextDirection.ltr 文本排列方向

附上Demo代码:

import 'package:flutter/material.dart';

void main() => runApp(DemoApp());

class DemoApp extends StatelessWidget{
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: '图标组件Demo',
home: new IconDemo(),
);
}
} class IconDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('图标组件Demo'),
),
body: new Center(
child: new Icon(
Icons.android,//图标Icon
color: Colors.green,//图标颜色,设置为绿色,原本的颜色是黑色的
size: 150.0,//Icon的大小
),
),
);
}
}

附上效果截图:

  • 图标按钮组件

图标按钮组件(IconButton)是基于Material Design风格的组件,他可以响应按下事件,并且按下时会带一个水波纹的效果,如果它的onPressed回调函数为null,那么这个按钮处于禁用的状态,并且不可以按下。

IconButton组件属性及描述
属性名 类型 默认值 说明
alignment AlignmentGeometry Alignment.center 定义IconButton的Icon对齐方式,默认为居中,Alignment是可以设置x,y偏移量的
icon Widget null 展示的具体图标,可以使用Icons图标列表中的任意一个图标
color Color null 图标颜色
disabledColor Color ThemeData.disableColor 图标组件禁用的颜色
iconSize double 24.0 图标大小
onPressed VoidCallBack null 当按钮按下时会触发此回调事件
tooltip String “” 当按钮按下时的组件提示语

写一个Demo,实现点击IconButton,出发onPressed回调并toast一句话,附上Demo代码:

import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; void main() => runApp(DemoApp()); class DemoApp extends StatelessWidget{
@override
Widget build(BuildContext context) {
return new MaterialApp(
debugShowCheckedModeBanner: false,
title: 'IconButtonDemo',
home: new IconButtonDemo(),
);
}
} class IconButtonDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(
title: Text('IconButton Demo'),
leading: Icon(Icons.menu),
actions: <Widget>[
IconButton(
icon: Icon(Icons.search),
)
],
),
body: new Center(
child: new IconButton(
icon: Icon(Icons.add_circle_outline),
iconSize: 50.0,
tooltip: '用户按下了按钮',
disabledColor: Colors.green,
onPressed: (){
Fluttertoast.showToast(
msg: '点击了IconButton并且Toas了一句话',
toastLength: Toast.LENGTH_LONG,
textColor: Colors.deepOrange,
gravity: ToastGravity.BOTTOM
);
}),
),
);
}
}

附上效果截图:

上面的代码除了演示了IconButton的简单使用,还对AppBar做了一些出了,在title的左右增加了两个图片,当然你也可以对其设置点击事件

注:这里和大家说一下在Flutter中怎么Toast出提示语,首先在pubspec.yaml引入fluttertoast包,点击Packages get,然后在你需要toast的地方import该库

//pubspec.yaml
fluttertoast: ^2.2. //import对应库
import 'package:fluttertoast/fluttertoast.dart';
  • 凸起按钮组件

突起按钮组件(RaisedButton),往往我们在开发过程中,不会一直用系统的图标,那么如果一个按钮上需要我们添加自定义的文本,这样的按钮要怎么实现呢?

import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; void main() => runApp(DemoApp()); class DemoApp extends StatelessWidget{
@override
Widget build(BuildContext context) {
return new MaterialApp(
debugShowCheckedModeBanner: false,
title: 'IconButtonDemo',
home: new IconButtonDemo(),
);
}
} class IconButtonDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(
title: Text('IconButton Demo'),
leading: Icon(Icons.menu),
actions: <Widget>[
IconButton(
icon: Icon(Icons.search),
)
],
),
body: new Center(
child: new RaisedButton(
padding: const EdgeInsets.all(10.0),//内间距
splashColor: Colors.blue,//点击时按钮的颜色
elevation: ,
shape: BeveledRectangleBorder(//带斜角的长方形边框
borderRadius: BorderRadius.all(Radius.circular())//圆角
),
onPressed: (){
Fluttertoast.showToast(
msg: '点击了IconButton并且Toas了一句话',
toastLength: Toast.LENGTH_LONG,
textColor: Colors.deepOrange,
gravity: ToastGravity.BOTTOM
);
},
//按钮内的文本
child: new Text(
'我是RaisedButton按钮',
style: TextStyle(
color: Colors.green,
fontSize: 20.0,
),
),
),
),
);
}
}

附上效果截图:

代码内有很详细的注释,如果有疑问的话,欢迎留言!!!

今天到这里就结束了,希望每一天的博客都可以给一些像我一样刚开始接触Flutter人一些小小的帮助!!!

下一章节:Flutter学习笔记(12)--列表组件

Flutter学习笔记(11)--文本组件、图标及按钮组件的更多相关文章

  1. Flutter学习笔记(21)--TextField文本框组件和Card卡片组件

    如需转载,请注明出处:Flutter学习笔记(21)--TextField文本框组件和Card卡片组件 今天来学习下TextField文本框组件和Card卡片组件. 只要是应用程序就少不了交互,基本上 ...

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

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

  3. Flutter学习笔记(16)--Scaffold脚手架、AppBar组件、BottomNavigationBar组件

    如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 今天的内容是Scaffold脚手架.AppBar组件.BottomNavigationBa ...

  4. Flutter学习笔记(13)--表单组件

    如需转载,请注明出处:Flutter学习笔记(13)--表单组件 表单组件是个包含表单元素的区域,表单元素允许用户输入内容,比如:文本区域,下拉表单,单选框.复选框等,常见的应用场景有:登陆.注册.输 ...

  5. Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解

    如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 最近一段时间生病了,整天往医院跑,也没状态学东西了,现在是好了不少了,也该继续学习啦!!! ...

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

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

  7. Flutter学习笔记(9)--组件Widget

    如需转载,请注明出处:Flutter学习笔记(9)--组件Widget 在Flutter中,所有的显示都是Widget,Widget是一切的基础,我们可以通过修改数据,再用setState设置数据(调 ...

  8. Flutter学习笔记(12)--列表组件

    如需转载,请注明出处:Flutter学习笔记(12)--列表组件 在日常的产品项目需求中,经常会有列表展示类的需求,在Android中常用的做法是收集数据源,然后创建列表适配器Adapter,将数据源 ...

  9. Flutter学习笔记(24)--SingleChildScrollView滚动组件

    如需转载,请注明出处:Flutter学习笔记(23)--多 在我们实际的项目开发中,经常会遇到页面UI内容过多,导致手机一屏展示不完的情况出现,以Android为例,在Android中遇到这类情况的做 ...

随机推荐

  1. kafka笔记6

    我们讨论可靠性时,一般使用保证这个词,它是确保系统在各种不同的环境下能够发生一致的行为.Kafka可以在哪些方面作出保证呢? 1.Kafka可以保证分区消息的顺序 2.只有消息被写入分区的所有同步副本 ...

  2. spring boot热部署devtools

    1 pom.xml文件 注:热部署功能spring-boot-1.3开始有的 <!--添加依赖--> <dependency> <groupId>org.sprin ...

  3. Spark之SparkSql

    -- Spark SQL 以编程方式指定模式 val sqlContext = new org.apache.spark.sql.SQLContext(sc) val employee = sc.te ...

  4. Java系统架构师学习体系图

  5. Netty源码分析--初始化Options,添加处理器(四)

    接上篇,我们继续进入AbstractBootstrap类的 initAndRegister() 方法 进入init()方法 设置父级Channel的options, 进入到上节提到的NioServer ...

  6. vuex分模块后,如何获取state的值

    问题:vuex分模块后,一个模块如何拿到其他模块的state值,调其他模块的方法? 思路:1.通过命名空间取值--this.$store.state.car.list // OK 2.通过定义该属性的 ...

  7. 【转载】JDK自带的log工具

    版权声明:本文为Jaiky_杰哥原创,转载请注明出处.This blog is written by Jaiky, reproduced please indicate. https://blog.c ...

  8. memcached--delete--replace--set--get--incr--decr--stats

    memcached命令 1.get  key 来获取在内存中的值 get name 2.delete  key 删除在内存中的值 delete name 3.replace  key flag exp ...

  9. SQL Server温故系列(1):SQL 数据操作 CRUD 之增删改合

    1.插入语句 INSERT INTO 1.1.用 INSERT 插入单行数据 1.2.用 INSERT 插入多行数据 1.3.用 INSERT 插入子查询结果行 1.4.INSERT 小结及特殊字段插 ...

  10. 网络IO-阻塞、非阻塞、IO复用、异步

    网络socket输入操作分为两个阶段:等待网络数据到达和将到达内核的数据复制到应用进程缓冲区.对这两个阶段不同的处理方式将网络IO分为不同的模型:IO阻塞模型.非阻塞模型.多路复用和异步IO. 一 阻 ...