📜  Flutter的TextSpan 小部件

📅  最后修改于: 2021-09-23 06:36:22             🧑  作者: Mango

TextSpan是一个不可变的文本跨度。它具有 style 属性来为文本提供样式。它还具有children属性来向这个小部件添加更多文本并为孩子们提供样式。让我们借助一个例子来理解这一点。

构造函数:

Syntax:
TextSpan({String text, 
List children, 
TextStyle style, 
GestureRecognizer recognizer, 
String semanticsLabel})

特性:

  • 文本:包含在跨度中的文本。
  • 儿童:包含更多跨度作为儿童。
  • style:赋予文本的 TextStyle。
  • 识别器:用户点击 TextSpan 小部件时的手势检测器。
  • 语义标签此小部件的替代语义标签。
  • hashCode:此参数接受一个int值作为对象,以向 TextSpan 小部件提供哈希代码。哈希码是一个整数值,表示影响运算符== 比较的对象的状态。
  • runtimeType:该属性接受一个Type作为对象,表示对象的运行时类型。此属性支持空安全。

例子:

Dart
import 'package:flutter/material.dart';
 
void main() {
  runApp(MyApp());
}
 
class MyApp extends StatelessWidget {
  // This widget is
  //the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'TextSpan',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
      debugShowCheckedModeBanner: false,
    );
  }
}
 
class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}
 
class _MyHomePageState extends State {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('GeeksforGeeks'),
        backgroundColor: Colors.green
        ),
        body: Center(
          child: Text.rich(
            TextSpan(
              text: 'This is textspan ',
              children: [
                TextSpan(
                  text: 'Widget in flutter',
                  style: TextStyle(fontSize: 20,fontWeight: FontWeight.bold),
                )
              ]
            )
          ),
        ),
        backgroundColor: Colors.lightBlue[50],
    );
  }
}


输出:

如果属性定义如下:

TextSpan(
              text: 'This is textspan ',
              style: TextStyle(fontSize: 20,fontWeight: FontWeight.bold),
              children: [
                TextSpan(
                  text: 'Widget in flutter',
                )
              ]
            )

可以观察到以下设计更改:

颤动中的全文跨度

如果属性定义如下:

TextSpan(
              text: 'This is textspan ',
              children: [
                TextSpan(
                  text: 'Widget in flutter',
                  style: TextStyle(fontSize: 20,fontWeight: FontWeight.bold),
                )
              ]
            )

可以观察到以下设计更改:

颤动中的文本跨度

解释:

  • 创建TextSpan小部件并用Text.rich()小部件包装它。
  • 将文本提供给 TextSpan 并向其添加更多内联子项。
  • 为文本指定样式并查看输出。

方法:

  • 构建(ParagraphBuilder 构建器,{double textScaleFactor: 1.0, List?Dimensions})
@override
void build (
ParagraphBuilder builder,
{double textScaleFactor: 1.0,
List? dimensions}
)
override

构建方法有助于构建段落对象。可以通过将此对象的样式、文本项应用于给定的ParagraphBuilder来获得段落

  • compareTo (InlineSpan 其他)→ RenderComparison
@override
RenderComparison compareTo (
InlineSpan other
)
override

此方法返回此跨度与另一个跨度之间的差异,就可能对渲染造成的损坏而言。

  • toStringShort () → 字符串
@override
String toStringShort ()
override

该方法给出了对象的简明描述,通常是 runtimeType 和 hashCode。

  • visitChildren (InlineSpanVisitor 访问者)→ bool
@override
bool visitChildren (
InlineSpanVisitor visitor
)
override

此方法按预定顺序移动此 TextSpan 及其子项,并为每个包含文本的范围调用访问者

操作员:

  • 运算符==(对象其他)→ bool
@override
bool operator == (
Object other
)
override

等式运算符。

所有对象的默认操作是当且仅当此对象和其他对象是同一对象时才返回 true。重写此方法以在类上定义不同的相等关系。

想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!