Flutter富文本展示插件richbar的使用

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

Flutter富文本展示插件richbar的使用

使用

要使用此插件,需要在你的pubspec.yaml文件中添加richbar作为依赖项,并在你的文件中导入它:

import 'package:richbar/richbar.dart';

截图

1 2
GIF截图

如何使用

只需创建一个Richbar小部件并传递所需的参数:

// 关闭Richbar
Richbar().close(context);

// 显示Richbar
Richbar(
  message,
  backgroundColor: const Color(0XFF1DA64D),
  duration: const Duration(seconds: 1),
  richbarPosition: RichbarPosition.top,
  leading: const Icon(
    Icons.check_circle_rounded,
    color: Colors.lightBlueAccent,
  ),
).show(context);

快速参考

属性 用途
text 要显示的文本。
textColor 绘制文本时使用的颜色。
textSize 绘制文本时使用的大小。
textFontWeight 绘制文本时使用的字重(例如,粗体,FontWeight.w100)。
textAlignment 文本应如何水平对齐。
backgroundColor 定义Richbar小部件的背景色。
duration 动画应该持续的时间长度。
showCurve 当调用Richbar.show()时应用的曲线动画。
dismissCurve 当调用Richbar.dismiss(context)时应用的曲线动画。
showPulse 配置AnimationController的行为当动画开始时。
maxWidth 特别是在大屏幕上定义Richbar的宽度(如iPad,macOS,Windows,Linux和Web)。
margin 包围边框和内容的空白空间。
padding 四个基本方向上的偏移集。
richbarStyle 定义此Richbar相对于其父项放置的高度。
borderRadius 仅适用于具有矩形形状的Richbar;如果shape不是BoxShape.rectangle则忽略。
richbarPosition 定义Richbar小部件的进入位置,可以是顶部或底部。
onPressed 用户点击此Richbar小部件时调用。
isDismissible 定义Richbar小部件是否可以水平或垂直滑动。
onStatusChanged 每次Richbar的状态发生变化时调用监听器。
dismissableDirection 定义Richbar小部件是否可以水平或垂直滑动。
enableBackgroundInteraction 定义用户在Richbar显示在屏幕上时是否可以与屏幕交互。

MIT许可证

MIT License

版权所有 (c) 2022 Dammy Richie

特此免费授予任何获得本软件副本和相关文档文件(“软件”)的人,无限制地处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权限,并允许被提供软件的人这样做,但须符合以下条件:

上述版权声明和本许可声明必须包含在所有副本或实质性部分中。

软件按“原样”提供,不附带任何形式的明示或暗示担保,包括但不限于适销性、特定用途适用性和非侵权性的担保。 在任何情况下,作者或版权持有人均不对因软件或软件的使用或其他交易而引起的任何索赔、损害或其他责任负责。

示例代码

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:richbar/richbar.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    SystemChrome.setSystemUIOverlayStyle(
      const SystemUiOverlayStyle(
        statusBarIconBrightness: Brightness.light,
        statusBarBrightness: Brightness.dark,
        statusBarColor: Colors.transparent,
      ),
    );
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData.dark().copyWith(
        primaryColor: Colors.white,
      ),
      home: const MyHomePage(title: ''),
    );
  }
}

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

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  void _decrementCounter() {
    setState(() {
      _counter--;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        elevation: 0,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const SizedBox(height: 150),
            const Text(
              '你已经点击了按钮这么多次:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.bodyMedium,
            ),
            const SizedBox(height: 160),
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  CircleAvatar(
                    radius: 25,
                    backgroundColor: Colors.greenAccent,
                    child: IconButton(
                      color: Theme.of(context).primaryColor,
                      onPressed: () {
                        _decrementCounter();
                        RichbarHelper.showError(
                          context: context,
                          message: '计数器已减小1: $_counter',
                        );
                      },
                      tooltip: '减少',
                      icon: const Icon(Icons.minimize),
                    ),
                  ),
                  CircleAvatar(
                    radius: 25,
                    backgroundColor: Colors.greenAccent,
                    child: IconButton(
                      color: Theme.of(context).primaryColor,
                      onPressed: () {
                        _incrementCounter();
                        RichbarHelper.showSuccess(
                          context: context,
                          message: '计数器已增加1: $_counter',
                        );
                      },
                      tooltip: '增加',
                      icon: const Icon(Icons.add),
                    ),
                  ),
                ],
              ),
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


在Flutter中,richbar 并不是一个广泛认知的官方或流行的富文本展示插件。不过,基于你的需求,我们可以探讨如何使用 Flutter 的官方富文本插件 flutter_markdownrich_text 小部件来实现类似的功能。这里,我将展示如何使用 rich_text 小部件来创建一个富文本展示的例子。

使用 rich_text 小部件展示富文本

rich_text 是 Flutter 提供的一个非常强大的小部件,允许你创建复杂的文本布局,包括不同的样式、链接、图片等。

以下是一个简单的示例,展示了如何使用 rich_text 来创建一个包含不同样式文本的富文本展示:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Rich Text Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Rich Text Example'),
        ),
        body: Center(
          child: RichText(
            text: TextSpan(
              style: DefaultTextStyle.of(context).style,
              children: <TextSpan>[
                TextSpan(
                  text: 'Hello, ',
                  style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20),
                ),
                TextSpan(
                  text: 'world!',
                  style: TextStyle(color: Colors.blue, fontSize: 20),
                ),
                TextSpan(
                  text: ' This is a link: ',
                  style: TextStyle(fontSize: 20),
                  children: <TextSpan>[
                    TextSpan(
                      text: 'Click here',
                      style: TextStyle(color: Colors.blue, decoration: TextDecoration.underline),
                      recognizer: TapGestureRecognizer()
                        ..onTap = () {
                          // Handle the tap event
                          print('Link tapped!');
                          // Open a URL or perform some action
                          // _launchURL('https://flutter.dev');
                        },
                    ),
                  ],
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }

  // _launchURL(String url) async {
  //   if (await canLaunch(url)) {
  //     await launch(url);
  //   } else {
  //     throw 'Could not launch $url';
  //   }
  // }
}

解释

  1. MaterialApp 和 Scaffold: 基本的 Flutter 应用结构。
  2. RichText 小部件: 包含多个 TextSpan 的集合,每个 TextSpan 可以定义自己的样式和文本内容。
  3. TextSpan: 用于定义文本的不同部分及其样式。在这个例子中,我们有三个 TextSpan,分别表示不同的文本内容和样式。
  4. TapGestureRecognizer: 用于识别点击事件。当用户点击 “Click here” 时,会在控制台打印 “Link tapped!”。你可以取消注释 _launchURL 函数和相关的调用,以实现打开 URL 的功能。

这个示例展示了如何使用 rich_text 小部件来创建包含不同样式和点击事件的富文本。如果你需要更复杂的功能,比如内嵌图片、嵌套布局等,可以进一步组合 TextSpan 和其他 Flutter 小部件来实现。

请注意,如果你的需求确实涉及到一个名为 richbar 的特定插件,并且这个插件不是广泛认知的,你可能需要查阅该插件的官方文档或源代码来获取具体的用法。在这种情况下,我无法提供具体的代码案例,因为 richbar 并不是一个标准的 Flutter 插件。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!