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

news2024/12/26 23:18:48
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.coloradmin.cn/o/686278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一章 计算机系统的概述①

一、操作系统概述 1、操作系统的概念&#xff08;什么是操作系统&#xff09; 概念&#xff1a;操作系统 (Operating System&#xff0c; 0s) 是指控制和管理整个计算机系统的硬件和软件资源&#xff0c;并合理地组织调度计算机的工作和资源的分配:以提供给用户和其他软件方便…

✅【值得收藏】超全期刊缩写查询网址

【SciencePub学术干货】英文论文写作中会插入参考文献&#xff0c;而参考文献中的期刊名称时常需要使用缩写。期刊缩写一般包括两种格式&#xff1a;JCR缩写和ISO缩写。比如 Journal of controlled release 杂志&#xff1a; 期刊名&#xff1a;JOURNAL OF CONTROLLED RELEASE…

力扣算法刷题Day47|周日总结:动态规划之背包问题

背包问题 〉题型分类 解题套路 〉动规五部曲 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 解题技巧 〉递推公式 问背包装满后的最大价值&#xff1a;dp[j] max(dp[j], dp[j - weight[i]] value[i]) …

跨库分页查询

背景 随着数据量的增大&#xff0c;数据库需要进行水平切分&#xff0c;例如通过业务主键id取模&#xff0c;使得数据均匀分布到不同的库中&#xff0c;随之而来的问题就出现跨库如何进行分页查询。 举例 select * from t_user order by time offset 200 limit 100 当在单库…

NXP i.MX 6ULL工业核心板规格书( ARM Cortex-A7,主频792MHz)

1 核心板简介 创龙科技SOM-TLIMX6U是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理器设计的低成本工业级核心板&#xff0c;主频792MHz&#xff0c;通过邮票孔连接方式引出Ethernet、UART、CAN、LCD、USB等接口。核心板经过专业的PCB Layout和高低温测试验证&#xf…

Jenkins在Ubuntu的安装问题

使用apt安装没有成功&#xff0c;各种报错。最后使用了离线安装方式。 1、安装jdk。和之前的安装jdk无异&#xff0c;增加一步 添加一个软链接 sudo ln -s /path/to/java/home/bin/java /usr/bin/java 2、下载deb包&#xff0c;然后安装 2.1、前置步骤&#xff0c;安装可能…

面向适航符合性的智能航电系统认证研究进展

摘要 民用飞机航电系统引入人工智能/机器学习技术会带来可信性、不确定性和可解释性等问题&#xff0c;有必要通过有效的符合性方法向公众与利益攸关方证实智能航电系统的适航安全性。首先&#xff0c;分析了智能航电系统的等级分类和应用现状&#xff0c;阐述了现有指南和标准…

three.js通过CubeTexture加载环境贴图,和RGBELoader加载器加载hdr环境贴图

一、使用CubeTexture进行环境贴图 1.CubeTexture使用介绍 Three.js中可以通过使用CubeTexture进行环境贴图&#xff0c;CubeTexture需要将6张图片&#xff08;正面、反面、上下左右&#xff09;包装成一个立方体纹理。下面是一个简单的例子&#xff1a; 首先需要加载六张贴图…

关于随机梯度下降算法及其改进方向

回归与分类等监督学习是机器学习中最常见的一类学习问题, 它提供了包含输入数据和目标数据的训练数据集。为了探讨输入与目标之间的关系&#xff0c;需要先建立含参数的表示模型&#xff0c;再通过最小化所有样本的平均损失函数来获得最优的参数, 此处的优化模型通常为经验风险…

【SpringMVC】统一异常处理 前后台协议联调 拦截器

1&#xff0c;统一异常处理 1. 问题描述 在讲解这一部分知识点之前&#xff0c;我们先来演示个效果&#xff0c;修改BookController类的getById方法 GetMapping("/{id}") public Result getById(PathVariable Integer id) {//手动添加一个错误信息if(id1){int i …

那些曾经考过的turtle绘图题(16~20)

【编程实现绘图 -16】 使用turtle绘制如右图1中所示的图形。 上边是一个红色轮廓、黄色填充的边长为300的等边三角形,下边是一个绿色填充、半径为150的半圆。 要求: 1)画布背景为白色,等边三角形为红色轮廓、黄色填充; 2)半圆为绿色填充、且与等边三角形在底边的中点处相…

OpenCV——总结《车牌识别》之《常用的函数介绍》

1. cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10))element cv2.getStructuringElement(shape, ksize[, anchor])用于创建形态学操作的结构元素&#xff08;structuring element&#xff09;。 参数解释&#xff1a; shape&#xff1a;结构元素的形状&#xff0c;可以…

k近邻算法

文章目录 一、K近邻算法(K Nearest Neighbor algorithm, KNN)1.概念2.流程3.问题——不能用来图像分类1&#xff09;图像分类2&#xff09;为什么不能用来图像分类3&#xff09;数据库样例&#xff1a;CIFAR-10 二、HEU的K近邻算法1.概念2.伪代码3.k近邻算法是非线性分类算法4.…

java项目之教学视频点播系统ssm

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的教学视频点播系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&…

SVM支持向量机理解_KKT条件_拉格朗日对偶_SMO算法代码

目录 一、支持向量机基本型&#xff08;线性可分&#xff09; 1.1 问题描述 1.2 参考资料 二、KKT条件 2.1 KKT条件的几个部分 2.1.1 原始条件 2.1.2 梯度条件 2.1.3 松弛互补条件 2.1.4 KKT条件小结 2.2 参考资料 三、对偶形式 3.1 由原始问题到对偶问题 3.2 对偶…

ubuntu双系统安装

1. 下载系统 国内镜像 http://mirrors.ustc.edu.cn/ubuntu-releases/2. U盘启动盘 Rufus 软件 制作U盘启动盘 Rufus 链接 https://rufus.en.softonic.com/3. 磁盘中准备一定未分配磁盘 我准备了100G 4. BIOS启动项选择为usb启动&#xff08;每个品牌进BIOS不同&#xff0…

win下 Nginx.conf 路径配置注意事项(win)

win下 Nginx.conf 路径配置注意事项 文章目录 可使用win绝对路径路径不能包含中文路径不能包含空格路径中的"\n"会被识别成换行贴一段正确配置的Nginx.conf代码 可使用win绝对路径 网上有种说法是win下Nginx不能设置绝对路径&#xff0c;但我在Nginx-1.24.0下是设置…

在Windows11中安装WSL2(Ubuntu20.04)并配置Anaconda环境

在Windows11中安装WSL2(Ubuntu20.04)并配置Anaconda环境 文章目录 在Windows11中安装WSL2(Ubuntu20.04)并配置Anaconda环境说在前面1. 检查开启CPU虚拟化和虚拟机平台2. 安装Ubuntu20.043. Vscode连接WSL2(Ubuntu20.04)4. Anaconda开发环境的搭建5. Vscode 访问 notebook结尾 说…

高效视觉识别的动态感知器

文章目录 Dynamic Perceiver for Efficient Visual Recognition摘要本文方法实验结果 Dynamic Perceiver for Efficient Visual Recognition 摘要 Early exiting已成为提高深度网络推理效率的一种很有前途的方法。通过构建具有多个分类器(出口)的模型&#xff0c;可以在较早的…

佩戴舒适的蓝牙耳机有哪些?公认佩戴舒适性不错的蓝牙耳机推荐

​都2023年了&#xff0c;不会还有人没有一款蓝牙耳机吧&#xff1f;随着蓝牙耳机的增长&#xff0c;越来越多人不知道如何挑选蓝牙耳机了&#xff0c;蓝牙耳机除了音质表现要好之外&#xff0c;还有就是佩戴舒适性不能差&#xff0c;防水性能要有&#xff0c;接下来&#xff0…