Flutter文本折叠与展开插件read_more_plus的使用

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

Flutter文本折叠与展开插件read_more_plus的使用

Read More Plus 插件是一个功能强大且易于使用的工具,旨在提高应用的可读性和用户体验。该插件提供了一个强大的“Read More”小部件,允许你在应用程序中创建可展开的部分,让用户更方便地访问额外内容,而不会感到信息过载。

演示

平台支持

Android iOS Web MacOS Linux Windows

特性

  • 自定义文本样式:轻松自定义“Read More”小部件的文本样式,以匹配你的应用风格。
  • 最大行数控制:你可以定义在显示“Read More”链接之前要显示的最大行数,从而控制内容的可见性。
  • 响应式设计:小部件会自动调整到不同的屏幕尺寸,确保所有用户都有良好的体验。
  • 直观的用户体验:通过让用户根据需要展开或折叠应用的部分来提高用户参与度。

安装

在你的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  read_more_plus: ^0.0.3

运行 flutter pub get 来安装包。

使用

在你的 Dart 代码中导入该包:

import 'package:read_more_plus/read_more_plus.dart';

在你的 widget 树中使用 ReadMore 小部件:

ReadMore(
    text: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. "
)

自定义

你可以根据需要自定义“ReadMore”小部件及其行为。你可以修改以下属性:

ReadMore(
  text: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.",
  maxLines: 3,
  readMoreTextColor: Colors.redAccent,
  expandedText: 'show less',
  collapsedText: 'show more',
  style: Theme.of(context).textTheme.labelLarge!.copyWith(
      color: Colors.deepPurple,
      fontSize: size.height*0.014
  ),
)

自定义演示

属性 类型 描述
text String 要显示的文本。
maxLines int? 设置最大行数。默认值:maxLines = 2
readMoreTextColor Color? 设置“Read More”链接的颜色。
expandedText String? 自定义折叠文本的标签。
collapsedText String? 自定义“Read More”链接的标签。
style TextStyle? 定义文本的样式。

示例

有关如何使用此插件的完整示例,请参阅此存储库中的 example 文件夹。

示例代码

import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:read_more_plus/read_more_plus.dart';

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Read More Example',
      debugShowCheckedModeBanner: false,

      /// 分配一个自定义的主题数据到项目
      theme: ThemeData(
          colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
          useMaterial3: true,
          textTheme: GoogleFonts.poppinsTextTheme()

          /// 导入 Poppins 文本主题到应用
          ),
      home: const MyHomePage(title: 'Read More Example'),
    );
  }
}

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> {
  /// 样本文本
  String text =
      "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. ";

  [@override](/user/override)
  Widget build(BuildContext context) {
    /// 获取可用屏幕大小
    final size = MediaQuery.of(context).size;
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.start,
          children: [
            SizedBox(
              height: size.height * 0.02,
            ),
            SizedBox(
              width: size.width * 0.85,
              child: ReadMore(text: text),

              /// 使用 ReadMore 插件的默认小部件
            ),
            SizedBox(
              height: size.height * 0.02,
            ),
            SizedBox(
              width: size.width * 0.85,
              child: ReadMore(
                text: text,
                maxLines: 3,

                /// 设置行数为 3
                readMoreTextColor: Colors.redAccent,
                expandedText: 'show less',

                /// 更改折叠文本标签为“show less”
                collapsedText: 'show more',

                /// 更改“Read More”链接标签为“show more”
                /// 自定义文本外观
                style: Theme.of(context).textTheme.labelLarge!.copyWith(
                    color: Colors.deepPurple, fontSize: size.height * 0.014),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter文本折叠与展开插件read_more_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter文本折叠与展开插件read_more_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,关于Flutter中read_more_plus插件的使用,以下是一个详细的代码案例,展示了如何实现文本的折叠与展开功能。

首先,确保你的Flutter项目中已经添加了read_more_plus依赖。你可以在pubspec.yaml文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  read_more_plus: ^3.0.0  # 请检查最新版本号

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

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

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Read More Plus Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Read More Plus Example'),
        ),
        body: Center(
          child: ReadMoreText(
            // 长文本内容
            "Flutter 是一个用于构建用户界面的开源软件开发工具包。它最初由 Google 的工程师团队开发,用于 Google 的移动应用(如 AdWords 和 Google Assistant)。Flutter 是用 Dart 编程语言编写的,Dart 是一种易于学习和强大的客户端语言。Flutter 提供了丰富的组件库,允许开发人员快速构建漂亮的用户界面。它还可以与现有的代码库集成,这意味着你可以逐步将 Flutter 添加到现有应用中,或者完全使用 Flutter 构建新应用。Flutter 的热重载功能使得在开发过程中可以即时查看更改,大大提高了开发效率。Flutter 适用于 iOS 和 Android 平台,并且可以在单个代码库中同时支持这两个平台。这使得开发人员能够创建跨平台应用,而无需为每个平台编写不同的代码。此外,Flutter 还支持桌面和 Web 平台,进一步扩展了其应用范围。",
            style: TextStyle(fontSize: 16),
            trimLines: 3, // 显示的行数
            colorClickableText: Colors.blue,
            moreStyle: TextStyle(color: Colors.blue, decoration: TextDecoration.underline),
            lessStyle: TextStyle(color: Colors.blue, decoration: TextDecoration.underline),
            onMore: () {
              // 点击“展开”时的回调
              print("Read more tapped!");
            },
            onLess: () {
              // 点击“折叠”时的回调
              print("Read less tapped!");
            },
          ),
        ),
      ),
    );
  }
}

解释

  1. 依赖导入

    import 'package:read_more_plus/read_more_plus.dart';
    
  2. ReadMoreText组件

    • text:要显示的文本内容。
    • style:文本样式。
    • trimLines:初始显示的行数。
    • colorClickableText:点击展开/折叠链接的文本颜色。
    • moreStyle:展开链接的样式。
    • lessStyle:折叠链接的样式。
    • onMore:点击展开时的回调函数。
    • onLess:点击折叠时的回调函数。

这个示例展示了如何使用read_more_plus插件来实现文本的折叠与展开功能,包括如何自定义样式和回调处理。你可以根据自己的需求调整这些参数。

回到顶部