Flutter文本排版插件typeset的使用

发布于 1周前 作者 yuanlaile 来自 Flutter

Flutter文本排版插件Typeset的使用

TypeSet: 为Flutter打造优雅的文本样式

style pub package pub points

TypeSet是为Flutter应用提供的文本样式和格式化的全能解决方案。它受Markdown格式的启发,使您能够无缝集成丰富的文本特性,包括可变字体大小和网络链接,同时不干扰代码的基础逻辑。借助后端驱动的格式化功能、类似WhatsApp的简便性以及额外的格式选项,TypeSet让任何文本都充满活力!

预览可能性

预览图 通过自定义文本,您可以实现加粗、斜体、删除线、下划线、等宽字体、超链接和动态字体大小等功能。

开始使用 🚀

确保您已安装并更新了Flutter SDK。

安装

pubspec.yaml文件中添加以下依赖项:

dependencies:
  typeset: ^latest_version # 请替换为实际的最新版本号

然后运行命令以安装包:

flutter packages get

使用示例 🌟

下面是一个完整的Dart代码示例,演示如何使用TypeSet插件来创建一个包含多种文本样式的Flutter应用程序。

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

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

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      color: Color(0xFF2196F3),
      title: 'TypeSet Demo',
      home: TypeSetExample(),
      debugShowCheckedModeBanner: false,
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('TypeSet Demo'),
      ),
      body: Center(
        child: ListView(
          children: const [
            Padding(
              padding: EdgeInsets.symmetric(horizontal: 22),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  Divider(),
                  Text('Usage', style: TextStyle(fontSize: 20)),
                  Divider(),
                  SizedBox(height: 12),
                  Text(
                    '''
Bold
→ Hello, *World!* 

Italic
→ Hello, _World!_

Strikethrough
→ Hello, ~World!~ 

Underline
→ Hello, #World!#

Monospace
→ Hello, `World!` 

Link
→ §google.com|https://google.com§
''',
                    style: TextStyle(fontSize: 18),
                  ),
                  Divider(),
                  Text('Samples', style: TextStyle(fontSize: 20)),
                  Divider(),
                  SizedBox(height: 12),
                  TypeSet(
                    '→ *TypeSet* _can_ #style# ~everything~ `you need` §with|https://rohanjsh.dev/§ _dynamic<18>_ _font<28>_ _size<25>_',
                    style: TextStyle(fontSize: 18),
                  ),
                  SizedBox(height: 24),
                  Divider(),
                  Text('Supported Stylings', style: TextStyle(fontSize: 20)),
                  Divider(),
                  SizedBox(height: 12),
                  TypeSet('Bold:\n→ *Bold Text*', style: TextStyle(fontSize: 24)),
                  SizedBox(height: 20),
                  TypeSet('Italic:\n→ _Italic Text_', style: TextStyle(fontSize: 24)),
                  SizedBox(height: 20),
                  TypeSet('Underline:\n→ #Underline Text#', style: TextStyle(fontSize: 24)),
                  SizedBox(height: 20),
                  TypeSet('Strikethrough:\n→ ~Strikethrough Text~', style: TextStyle(fontSize: 24)),
                  SizedBox(height: 20),
                  TypeSet('Monospace:\n→ `monospace text`', style: TextStyle(fontSize: 24)),
                  SizedBox(height: 20),
                  // 自定义链接样式和点击识别器
                  TypeSet('Link:\n→ §google.com|https://google.com§', style: TextStyle(fontSize: 24)),
                  SizedBox(height: 20),
                  Divider(),
                ],
              ),
            )
          ],
        ),
      ),
    );
  }
}

特性 🎨

  • 后端驱动的格式化:将文本样式逻辑保留在服务器端,以便轻松更新而无需重新部署应用程序。
  • 丰富的Markdown风格格式:轻松实现加粗、斜体、删除线、下划线、等宽字体和超链接文本。
  • 动态字体调整:根据需要实时调整文本大小,以强调或提高可访问性。
  • 可扩展性:设计开放,未来可以添加更多样式选项。

我们重视您的反馈 📬

如果您有更多功能的想法或发现了错误,请随时在问题追踪器上提交问题。您的贡献将使TypeSet变得更好!

保持应用程序的文本样式动态且引人入胜,就从使用TypeSet开始吧!


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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用typeset插件进行文本排版的代码示例。typeset插件可以帮助你更轻松地进行复杂的文本排版工作,包括自动换行、段落对齐、字体大小调整等。

首先,你需要在你的pubspec.yaml文件中添加typeset依赖:

dependencies:
  flutter:
    sdk: flutter
  typeset: ^最新版本号  # 请替换为当前最新版本号

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

接下来是一个使用typeset进行文本排版的示例代码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Typeset Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Typeset Example'),
        ),
        body: Center(
          child: TypesetExample(),
        ),
      ),
    );
  }
}

class TypesetExample extends StatelessWidget {
  final String text = """
  Flutter is an open-source UI software development kit created by Google. 
  It is used to develop applications for Android, iOS, Linux, macOS, Windows, and the web from a single codebase. 
  Flutter's hot reload helps you quickly and easily experiment, build UIs, add features, and fix bugs faster. 
  Experience sub-second reload times, preserve state when you reload, and refactor code while your app runs.
  """;

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: EdgeInsets.all(16.0),
      child: TypesetBuilder(
        text: text,
        style: TextStyle(
          fontSize: 18.0,
          color: Colors.black,
        ),
        paragraphStyle: ParagraphStyle(
          textAlign: TextAlign.justify,
        ),
        builder: (context, TextSpan span) {
          return CustomPaint(
            size: Size.infinite,
            painter: TypesetPainter(
              span: span,
              constraints: BoxConstraints(
                maxWidth: double.infinity,
              ),
            ),
          );
        },
      ),
    );
  }
}

在上面的代码中,我们做了以下几件事情:

  1. 引入依赖:确保在pubspec.yaml中添加了typeset依赖。
  2. 创建Flutter应用:使用MaterialAppScaffold来创建一个简单的Flutter应用。
  3. 定义文本内容:在TypesetExample类中定义了一个多行字符串text
  4. 使用TypesetBuilder
    • text参数传入需要排版的文本内容。
    • style参数定义了文本的样式,比如字体大小和颜色。
    • paragraphStyle参数定义了段落的样式,比如对齐方式。
    • builder参数是一个回调函数,它接收一个TextSpan对象,你可以使用TypesetPainter将其绘制到屏幕上。

注意:TypesetPaintertypeset插件提供的一个用于绘制文本的自定义painter。在上面的例子中,我们使用了CustomPaint来包裹TypesetPainter

这个例子展示了如何使用typeset插件进行基本的文本排版。你可以根据需要进一步调整样式和布局。希望这个示例对你有帮助!

回到顶部