本来打算第三篇文章来讲解 Flutter 单子布局widget , 奈何 18种单子布局widget 内容颇多,加之年后有了新项目要开发 , 使得文章产出周期被拉长 :( . 这里先来篇简单的关于Text的文章 , 下次更新将会发出 Flutter系列的目录及布局widget的文章.

Text

Text 文本是app里常见的控件 , 用以显示一串单一样式的文本 . 该字符串可跨越多行 , 或根据布局约束显示在同一行中

最简单的可以直接用这样的代码来展示文本 , 类似 Android 里的 TextView , iOS 里的 UILabel .

new Text('简单的文本')
复制代码

代码未指定样式 , 此时将使用最近的 DefaultTextStyle 样式 . 若给定样式中 TextStyle.inherit 属性为true , 给定样式则将与最近的 DefaultTextStyle 样式合并 .

类似 Android 里 , style.xml 主题样式 AppTheme 中定义了文本样式 , 并且将其设置为 Application 的主题样式 , 那么新建一个 TextView 就会默认使用 AppTheme中定义的文本样式 , 而当给这个 TextView 设置样式时,此样式就会和主题样式进行合并

当 TextStyle.inherit 属性设置为 false 时 , 文本样式会恢复到默认状态: 白色, 10像素 , sans-serif 字体

final TextStyle _inheritBigFont = new TextStyle(inherit: true, fontSize: 24.0);
final TextStyle _notInheritBigFont = new TextStyle(inherit: false, fontSize: 24.0);
...
new Text('inherit true', style: widget._inheritBigFont)
new Text('inherit false', style: widget._notInheritBigFont)
复制代码

文本样式鸟瞰

RichText

要显示多样式的文本 , 需要使用富文本 RichText

在开发中 , 有一些常见的应用场景需要用到富文本 . 比如在很多 app 注册 ,开户界面会有一个同意协议的模块 ,

我已阅读并同意《xxx协议》 , 协议名称通常高亮显示并且可以点击打开协议页面 .

import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';class DemoText extends StatefulWidget {final TextStyle _protocolFont = new TextStyle(fontSize: 16.0);final TextStyle _inheritBigFont =new TextStyle(inherit: true, fontSize: 24.0);final TextStyle _notInheritBigFont =new TextStyle(inherit: false, fontSize: 24.0);@overrideDemoTextState createState() {return new DemoTextState();}
}class DemoTextState extends State<DemoText> {@overrideWidget build(BuildContext context) {return new Scaffold(appBar: new AppBar(title: const Text('Text Demo'),),body: new Builder(builder: builderBody));}Widget builderBody(BuildContext context) {final TapGestureRecognizer recognizer = new TapGestureRecognizer();recognizer.onTap = () {Scaffold.of(context).showSnackBar(new SnackBar(content: new Text('协议被点击!'),));};final Divider divider = new Divider(color: Colors.white, height: 2.0);return new Container(color: Colors.grey,alignment: Alignment.center,child: new Column(children: <Widget>[new Text('inherit true', style: widget._inheritBigFont),new Text('inherit false', style: widget._notInheritBigFont),divider,new Text('龙骑士囧雪诺JohnSnow',style: new TextStyle(color: Colors.blue,fontSize: 24.0,fontStyle: FontStyle.italic,letterSpacing: 2.0,decoration: TextDecoration.underline),),divider,new RichText(text: new TextSpan(text: '我已阅读',style: widget._protocolFont,children: <TextSpan>[new TextSpan(text: '《从flutter入门到放弃》',style: new TextStyle(color: Colors.redAccent),recognizer: recognizer),],),),],));}
}
复制代码

TapGestureRecognizer 是手势识别者 , 后面讲到手势时再具体说明 . 这里我们先知道它可以用来给富文本某一段添加点击事件 . 这里我们点击协议后 , 会弹出一个SnackBar提示协议被点击了 .

转载于:https://juejin.im/post/5abb9f4d6fb9a028d82bd22b

Flutter基础-(3)Widget之文本Text相关推荐

  1. Flutter基础(四)开发Flutter应用前需要掌握的Basic Widget

    本文首发于公众号「刘望舒」 关联系列 ReactNative入门系列 React Native组件 Flutter基础系列 前言 学完了Dart语言,接下来就可以学习Widget了,Flutter的U ...

  2. Flutter 基础目录结构介绍、入口自定义widget、等相关组件使用

    提示:此文章为前端学习flutter过程,如有歧义期望各位大大的宝贵意见 学习Dart 基础知识 移步这里 安装flutter环境相关 移步这里 flutter基础组件使用相关 移步这里 文章目录 一 ...

  3. Flutter 基础组件之 Text

    终于安装好了 Flutter 的环境,既然入了坑,就一点一点学吧,Flutter 可以说一切皆组件吧,所以要熟练掌握各个基础组件的 API,然后才能在面对复杂需求的时候才能得心应手的将各个组件组合起来 ...

  4. Flutter 基础Widgets Text()之TextStyle详解

    Text概述 即一个单一样式的文本 Text Widget就是显示单一样式的文本字符串.字符串可能会跨越多行,也可能全部显示在同一行上,具体取决于布局约束. style参数可选.如果省略了,文本将使用 ...

  5. Flutter基础布局组件及实现

    https://www.cnblogs.com/lxlx1798/p/11084904.html 一,概述 Flutter中拥有30多种预定义的布局widget,常用的有Container.Paddi ...

  6. 谷歌移动UI框架Flutter教程之Widget

    引言 在之间我已经介绍了关于Flutter的下载安装以及配置,还有开发工具Android Studio的配置,还不知道的同学可以看看我这篇博客--谷歌移动UI框架Flutter入门.这里为什么非要用A ...

  7. Flutter基础之部分控件学习

    主要看几个常用的使用控件: main.dart 代码,下面常用 Widget 示例的代码. import 'package:flutter/material.dart';void main() =&g ...

  8. 第 1-8 课:基础组件详解(Text、Image、Button)

    前面已经讲解了大量的 Flutter 相关基础知识,从这节课开始,我们将进行 Flutter 的系列 Widget.布局的学习.那么这节课就带领大家对 Flutter 的基础 Widget 中的几个典 ...

  9. Flutter基础(九)资源和图片

    本文首发于公众号「刘望舒」 ReactNative入门系列 React Native组件 Flutter基础系列 和Android开发一样,Flutter也有asset这一概念,asset是打包到程序 ...

最新文章

  1. 如何查找僵尸进程并Kill之,杀不掉的要查看父进程并杀之
  2. platform下的js分析_1
  3. POJ2513-Colored Sticks
  4. 【C/C++】从技术学习和实际运用的角度来看,C/C++和Java到底区别在哪?C语言、C++学习路线?
  5. LinearLayout的一些注意事项
  6. Zjnu Stadium HDU - 304 加权并查集
  7. postgis安装_从零开始,构建电子地图网站:0_2_数据处理postgis
  8. java课程设计实验报告_javaweb课程设计实验报告
  9. fortan程序设计
  10. 课题申报书范文_高等学校教改课题申报书范文
  11. 功能对等四个原则_功能对等四原则
  12. Redis缓存雪崩解决方案
  13. 巨潮网怎么下载年报_如何下载上市公司财务报表?
  14. 高一计算机函数公式,高一函数公式汇总
  15. DAP数据加工流程梳理
  16. 路由器实现Vlan间通信
  17. 如何让win XP实现自动登陆
  18. QT自动适配高分屏的解决方案
  19. 电子通信类相关专业面试
  20. 面试题错题解析5_操作系统

热门文章

  1. 蚂蚁金服崔恒斌:金融智能——对话机器人新形态
  2. css实现弧线,CSS3 彩虹弧线太极波动图
  3. flash media server播放实时视频流
  4. 408 | 【2010年】计算机统考真题 自用回顾知识点整理
  5. 学完理论后在收藏夹里吃灰?接着教你实操创建主数据库
  6. 转 影像质量评估之锐利度--MTF(SFR)
  7. 【深度学习03】TensorBoard+Transforms+Dataload的使用
  8. 在微信内置浏览器 ios video再次点击事件没反应 video有些视频上下出现空白原因
  9. 程序员必备下载器——IDM,下载速度超快!
  10. 数据库:ADO是什么?