Flutter文本格式化插件simple_formatted_text的使用

Flutter文本格式化插件simple_formatted_text的使用

简介

simple_formatted_text 是一个简单的文本小部件,用于显示格式化的文本,包括链接文本。此插件允许您使用特殊字符来自定义文本样式。

快速开始

导入库

在你的项目中导入以下库:

dependencies:
  simple_formatted_text: ^最新版本号

或者直接运行命令添加依赖:

flutter pub add simple_formatted_text

基本实现

使用 SimpleFormattedText 显示带格式的文本:

SimpleFormattedText("Text with *bold* word")

更多功能

打开URL

你可以通过点击链接来打开URL,并自定义链接文本的颜色:

SimpleFormattedText(
    "Open [Google](https://google.com/) to search things",
    onLinkTap: (link) {
        // 执行一些操作,不仅仅是打开网页链接
        url_launch(link);
    },
)

文本动作

你还可以为不同的文本动作设置不同的样式:

SimpleFormattedText(
    "Do [action 1](action 1) or [action 2](action 2)",
    linkTextStyle: TextStyle(color: Colors.green),
    onLinkTap: (actionStr) {
        switch(actionStr) {
            case "action 1":
                // 处理 action 1
                break;
            case "action 2":
                // 处理 action 2
                break;
        },
    },
)

改变颜色和大小

你也可以改变文本的颜色和大小,并且可以设置初始文本样式:

SimpleFormattedText(
    "This is a _[big and red](addSize:4,color:#FFFF0000)_ string",
    style: TextStyle(color: Colors.deepPurple, fontSize: 20),
)

完整示例

以下是一个完整的示例代码,展示了如何使用 simple_formatted_text 插件:

import 'package:flutter/material.dart';
import 'package:simple_formatted_text/simple_formatted_text.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Simple Formatted Text Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Simple Formatted Text Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final TextEditingController _controller = TextEditingController();
  String _text =
      "This is an *EXAMPLE* of a [big](addSize:4, color:#FFFF0000) ~[small](subSize:2)~ /_Widget_/";

  [@override](/user/override)
  void initState() {
    _controller.text = _text;
    super.initState();
  }

  void _updateText() {
    setState(() {
      _text = _controller.text;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            SizedBox(
              width: 600,
              child: Row(
                children: [
                  Expanded(
                    child: TextField(
                      controller: _controller,
                      onSubmitted: (value) => _updateText(),
                      decoration: const InputDecoration(
                          label: Text("插入测试文本")),
                    ),
                  ),
                  IconButton(
                      onPressed: _updateText, icon: const Icon(Icons.send)),
                ],
              ),
            ),
            const SizedBox(height: 20),
            SimpleFormattedText(_text),
            const SizedBox(height: 20),
            SimpleFormattedText(
              _text,
              linkTextStyle: TextStyle(color: Colors.green),
            ),
            const SizedBox(height: 20),
            SimpleFormattedText(
              _text,
              style: TextStyle(color: Colors.deepPurple, fontSize: 20),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter文本格式化插件simple_formatted_text的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter文本格式化插件simple_formatted_text的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用simple_formatted_text插件来进行文本格式化的代码示例。

首先,确保你已经在pubspec.yaml文件中添加了simple_formatted_text依赖:

dependencies:
  flutter:
    sdk: flutter
  simple_formatted_text: ^latest_version  # 请替换为最新的版本号

然后,运行flutter pub get来安装依赖。

接下来,你可以在你的Dart文件中使用SimpleFormattedText来格式化文本。以下是一个完整的示例:

import 'package:flutter/material.dart';
import 'package:simple_formatted_text/simple_formatted_text.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('SimpleFormattedText Demo'),
        ),
        body: Center(
          child: Padding(
            padding: const EdgeInsets.all(16.0),
            child: SimpleFormattedText(
              text: [
                TextSpan(
                  text: 'This is ',
                  style: TextStyle(color: Colors.black),
                ),
                TextSpan(
                  text: 'bold text',
                  style: TextStyle(fontWeight: FontWeight.bold, color: Colors.blue),
                ),
                TextSpan(
                  text: ', and this is ',
                  style: TextStyle(color: Colors.black),
                ),
                TextSpan(
                  text: 'italic text',
                  style: TextStyle(fontStyle: FontStyle.italic, color: Colors.green),
                ),
                TextSpan(
                  text: '.',
                  style: TextStyle(color: Colors.black),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们使用了SimpleFormattedText来组合多个TextSpan对象,每个TextSpan对象可以拥有不同的样式。在这个例子中,我们展示了如何将文本设置为粗体和斜体,并分别应用了不同的颜色。

SimpleFormattedText本质上是对RichText的一个封装,使其更加易于使用。如果你需要更复杂的文本格式化功能,你也可以直接使用RichText,但simple_formatted_text插件提供了一些便利的API来简化这个过程。

注意:simple_formatted_text插件的具体API和用法可能会随着版本的更新而变化,因此建议查阅最新的官方文档或插件的README文件以获取最准确的信息。

回到顶部