Flutter 组件(二)文本 与 输入框组件

Flutter开发笔记
Flutter 组件(二)文本 与 输入框组件

- 文章信息 - Author: Jack Lee (jcLee95)
Visit me at: https://jclee95.blog.csdn.net
Email: 291148484@163.com.
Shenzhen Chine
Address of this article:https://blog.csdn.net/qq_28550263/article/details/131387549

【介绍】:本文介绍Flutter中文本类组件,包括普通文本组件、富文本组件、输入框组件。

上一节:《 Flutter 组件(一)组件概述 | 下一节:《 Flutter 组件(三)按钮类组件


1 Text(文本)部件

Text部件是Flutter中最基本且常用的组件之一,用于显示简单的文本内容。它允许我们在应用程序中添加和自定义文本样式。

1.1 创建Text部件

要在Flutter中创建一个Text部件,我们只需使用Text构造函数并传递要显示的字符串。例如:

Text('Hello, Flutter!')

很抱歉,这里是关于Flutter中Text组件的详细解析:

Text组件是用于在屏幕上显示简单的文本,它可以自动换行,支持文本样式,如字体、大小、颜色等。它是一个基本的Flutter组件,继承自StatelessWidget

Text组件具有多个属性,以下是一些常用的属性:

属性描述
data要显示的文本。这是一个必需的参数。
style用于自定义文本样式的TextStyle对象。可以设置字体大小、颜色、粗细等属性。
textAlign文本对齐方式。可选值包括TextAlign.leftTextAlign.rightTextAlign.center等。
textDirection文本方向。可选值包括TextDirection.ltr(从左到右)和TextDirection.rtl(从右到左)。
maxLines文本的最大行数。超出该行数的文本将被截断。
overflow当文本超出显示区域时,如何处理。可选值包括TextOverflow.clipTextOverflow.fadeTextOverflow.ellipsis等。
softWrap是否在换行符处换行。默认值为true
textScaleFactor文本缩放因子。用于根据系统设置调整文本大小。

比如:

Text('Hello, Flutter!',style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold, color: Colors.blue),textAlign: TextAlign.center,maxLines: 2,overflow: TextOverflow.ellipsis,
)

在这里插入图片描述

在这个例子中,我们创建了一个Text组件,显示文本“Hello, Flutter!”,并设置了字体大小为24,字体粗细为bold,字体颜色为蓝色。文本将居中对齐,最多显示两行,超出部分将以省略号表示。

1.2 设置Text样式

TextStyle类用于设置文本样式,它包括以下属性:

属性描述
color文本颜色。
fontSize文本大小。
fontWeight字体粗细。可选值包括FontWeight.normalFontWeight.bold等。
fontStyle字体样式。可选值包括FontStyle.normalFontStyle.italic
decoration文本装饰。可选值包括TextDecoration.noneTextDecoration.underlineTextDecoration.overlineTextDecoration.lineThrough
decorationColor文本装饰颜色。
decorationStyle文本装饰样式。可选值包括TextDecorationStyle.solidTextDecorationStyle.doubleTextDecorationStyle.dotted等。

我们可以使用style属性为Text部件设置样式。为此,我们需要创建一个TextStyle对象并传递给style属性。TextStyle对象可以包含多种样式属性,如字体大小、颜色、字体粗细等。

比如:

Text('Hello, Flutter!',style: TextStyle(fontSize: 24,fontWeight: FontWeight.bold,fontStyle: FontStyle.italic,color: Colors.blue,decoration: TextDecoration.underline,decorationColor: Colors.red,decorationStyle: TextDecorationStyle.dotted,),
)

在这个例子中,我们创建了一个Text组件,显示文本“Hello, Flutter!”,并设置了字体大小为24,字体粗细为bold,字体颜色为蓝色,字体样式为斜体。文本下划线颜色为红色,样式为点状。

在这里插入图片描述

1.3 文本对齐和换行

Text部件还提供了一些属性,用于控制文本的对齐方式和换行。例如:

属性描述
textAlign属性用于设置文本的水平对齐方式,可以是TextAlign.leftTextAlign.centerTextAlign.right等。
maxLines属性用于设置文本的最大显示行数。超出的文本将被截断。
overflow属性用于设置超出最大行数时的文本截断方式,如TextOverflow.ellipsisTextOverflow.clip等。

以下是一个设置对齐和换行属性的示例:

Text('Hello, Flutter!',textAlign: TextAlign.center,maxLines: 2,overflow: TextOverflow.ellipsis,
)

在这里插入图片描述

1.4 小结

Text部件是Flutter应用中最基本的组件之一。我们可以通过设置不同的属性,如样式、对齐和换行,轻松地自定义文本的显示方式。在接下来的章节中,我们将学习其他基本组件,如 Image 和 Icon 部件。

2 富文本(RichText)部件

富文本(RichText)部件是 Flutter 中的另一个用于显示文本的组件,它允许我们在一段文本中使用多种样式。与 Text 部件相比,RichText部件提供了更高级的文本样式自定义功能。

2.1 创建 RichText 部件

要在 Flutter 中创建一个 RichText 部件,我们需要使用 RichText 构造函数并传递一个 TextSpan 对象。TextSpan 对象可以包含文本内容和样式,还可以包含其他TextSpan对象作为子节点。

例如:

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});Widget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: const Text('RichText Example')),body: Center(child: RichText(text: const TextSpan(children: [TextSpan(text: 'Hello, ',style: TextStyle(fontSize: 24,fontWeight: FontWeight.bold,color: Colors.blue),),TextSpan(text: 'Flutter ',style: TextStyle(fontSize: 24,fontWeight: FontWeight.normal,color: Colors.green),),TextSpan(text: 'World!',style: TextStyle(fontSize: 24,fontWeight: FontWeight.bold,color: Colors.red),),],),),),),);}
}

2.2 设置RichText样式

与Text部件类似,我们可以使用style属性为RichText部件设置样式。不过,由于RichText部件可以包含多种样式,我们需要为每个TextSpan对象分别设置样式。以下是一个示例:

RichText(text: TextSpan(text: 'Hello, ',style: TextStyle(fontSize: 24, color: Colors.black),children: <TextSpan>[TextSpan(text: 'Flutter',style: TextStyle(fontSize: 24, color: Colors.blue, fontWeight: FontWeight.bold),),TextSpan(text: '!',style: TextStyle(fontSize: 24, color: Colors.black),),],),
)

其效果为:

在这里插入图片描述

2.3 富文本对齐和换行

与Text部件类似,RichText部件也提供了一些属性,用于控制文本的对齐方式和换行。例如:

属性描述
textAlign属性用于设置文本的水平对齐方式,可以是TextAlign.leftTextAlign.centerTextAlign.right等。
maxLines属性用于设置文本的最大显示行数。超出的文本将被截断。
overflow属性用于设置超出最大行数时的文本截断方式,如TextOverflow.ellipsisTextOverflow.clip等。

以下是一个设置对齐和换行属性的示例:

RichText(text: TextSpan(text: 'Hello, ',style: TextStyle(fontSize: 24, color: Colors.black),children: <TextSpan>[TextSpan(text: 'Flutter',style: TextStyle(fontSize: 24, color: Colors.blue, fontWeight: FontWeight.bold),),TextSpan(text: '!',style: TextStyle(fontSize: 24, color: Colors.black),),],),textAlign: TextAlign.center,maxLines: 2,overflow: TextOverflow.ellipsis,
)

在这里插入图片描述

2.4 小结

RichText部件是Flutter应用中用于显示具有多种样式的文本的组件。通过使用TextSpan对象,我们可以轻松地为文本设置不同的样式。在接下来的章节中,我们将学习其他基本组件,如Image和Icon部件。

3. 输入框(TextField)部件

输入框(TextField)部件是Flutter中的一个用于接收用户输入的组件。我们可以使用它来创建文本输入框,允许用户输入和编辑文本。

3.1 创建TextField部件

要在Flutter中创建一个TextField部件,我们只需使用TextField构造函数。例如:

import 'package:flutter/material.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});Widget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: const Text('TextField Example')),body: const Padding(padding: EdgeInsets.all(16),child: Column(children: [TextField(decoration: InputDecoration(labelText: 'Username',hintText: 'Enter your username',border: OutlineInputBorder(),),),SizedBox(height: 16),TextField(obscureText: true,decoration: InputDecoration(labelText: 'Password',hintText: 'Enter your password',border: OutlineInputBorder(),),),],),),),);}
}

在这里插入图片描述

3.2 设置TextField样式

我们可以使用style属性为TextField部件设置文本样式。为此,我们需要创建一个TextStyle对象并传递给style属性。TextStyle对象可以包含多种样式属性,如字体大小、颜色、字体粗细等。以下是一个示例:

TextField(style: TextStyle(fontSize: 18,color: Colors.black,fontWeight: FontWeight.w500,),
)

在这里插入图片描述

3.3 设置占位符文本

我们可以使用decoration属性为TextField部件设置占位符文本。为此,我们需要创建一个InputDecoration对象并传递给decoration属性。以下是一个示例:

TextField(decoration: InputDecoration(hintText: '请输入用户名',),
)

在这里插入图片描述

3.4 设置文本对齐方式

我们可以使用textAlign属性为TextField部件设置文本对齐方式。例如,可以设置为TextAlign.leftTextAlign.centerTextAlign.right等。以下是一个示例:

TextField(textAlign: TextAlign.center,
)

在这里插入图片描述

3.5 获取用户输入的文本

要获取用户输入的文本,我们需要使用TextEditingController。首先,创建一个TextEditingController对象,然后将其传递给TextField部件的controller属性。最后,我们可以通过TextEditingController对象的text属性获取输入的文本。以下是一个示例:

final TextEditingController _controller = TextEditingController();TextField(controller: _controller,
)// 获取输入的文本
String inputText = _controller.text;

3.6 小结

输入框(TextField)部件是Flutter应用中用于接收用户输入的组件。我们可以通过设置不同的属性,如样式、占位符文本、对齐方式等,轻松地自定义输入框的显示方式。在接下来的章节中,我们将学习其他基本组件,如按钮(Button)部件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/4807.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT学习笔记4--自定义信号的槽

逻辑&#xff1a;下课后&#xff0c;老师饿了&#xff0c;学生请吃饭。 使用connect函数连接自定义的信号和槽函数。 创建类 信号 #ifndef TEACHER_H #define TEACHER_H#include <QObject>class teacher : public QObject {Q_OBJECT public:explicit teacher(QObjec…

【网络管理发展】网络杂谈(12)之网络管理未来发展趋势

涉及知识点 网络管理未来的发展方向&#xff0c;网络管理未来的发展趋势&#xff0c;个人闲谈网络管理未来发展&#xff0c;网络管理技术现状&#xff0c;应用服务供应商&#xff08;ASP&#xff09;&#xff0c;网络的远程管理&#xff0c;人工智能与未来。 原创于&#xff1…

爬虫工具-替换js文件ReRes插件/Gores插件

目录 一、ReRes插件二、Gores插件 一、ReRes插件 用途&#xff1a;爬虫逆向过程中一些文件需要替换时 ① 原始网站js文件有无限debugger&#xff0c;复制原始网站js文件&#xff0c;删掉无限debugger相关代码保存为新的js文件&#xff1b;用ReRes插件进行替换② 原始网站js文件…

【分布式存储】聊聊共识和一致性

在分布式存储系统中&#xff0c;对于提高性能、可用性、可拓展性来说都有相关机制可以保证&#xff0c;比如复制、切片等&#xff0c;但是一旦涉及到分布式系统中选主的问题&#xff0c;就比较难&#xff0c;因为网络是不可靠的&#xff0c;并且可能还有拜占庭将军问题。所以如…

线程安全的集合类

目录 一、线程安全的集合类 1.1、多线程环境下使用ArrayList 1.2、多线程使用队列 1.3、多线程环境使用哈希表 1.3.1、Hashtable 1.3.2、ConcurrentHashMap 一、线程安全的集合类 在多线程的环境下&#xff0c;多个线程对同一个共享变量进行写操作的时候&#xff0c;有可…

chatGPT流式回复是怎么实现的

chatGPT流式回复是怎么实现的 先说结论&#xff1a; chatGPT的流式回复用的就是HTTP请求方案中的server-send-event流式接口&#xff0c;也就是服务端向客户端推流数据。 那eventStream流式接口怎么实现呢&#xff0c;下面就进入正题&#xff01; 文章目录 chatGPT流式回复…

【NVIDIA】Jetson AGX Orin内核、设备树更新指南

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

redis-单节点安装

daemonize yes port 6379 bind 0.0.0.0 requirepass 123456 save 3600 1 300 100 60 10000dir /usr/local/redis dbfilename dump.rdb logfile redis.log pidfile redis.pid##save 3600 1 300 100 60 10000 ##3600秒(一小时),至少有一个值的话,会进行存盘 ##300秒(五分钟),至少…

Java版企业工程项目管理系统源码+java版本+项目模块功能清单+spring cloud +spring boot

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…

macOS上下载安装Kibana并连接ES

下载Kibana 执行以下命令进行&#xff0c;版本号根据你所用的ES版本选择&#xff0c;比如我的是7.10.0 curl -O https://artifacts.elastic.co/downloads/kibana/kibana-7.10.0-darwin-x86_64.tar.gz解压安装Kibana tar -zxvf kibana-7.10.0-darwin-x86_64.tar.gz进行config…

Java -- XXL-JOB分布式任务调度平台

XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用 xxl是xxl-job的开发者大众点评的【许雪里】名称的拼音开头 官网地址 分布式任务调度平台XXL-JOB 文档地址…

【MySql】C语言连接mysql|图形化工具

文章目录 Connector/C 使用mysql接口介绍Navicat远程连接数据库 Connector/C 使用 说完了mysql的基础,后面我们只关心使用&#xff0c;要使用C语言连接mysql&#xff0c;需要使用mysql官网提供的库&#xff0c;前往官网下载即可。 但是实际上我们并不需要这样去做&#xff0c;…