Flutter跑马灯效果插件marquee_plus的使用

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

Flutter跑马灯效果插件marquee_plus的使用

marquee_plus 是一个用于在Flutter中实现无限滚动文本效果的插件。它提供了丰富的自定义选项,包括滚动方向、持续时间、曲线以及每轮滚动后的暂停等。以下是关于如何使用 marquee_plus 插件的详细说明和完整示例代码。

依赖更新

为了确保插件兼容最新的Flutter版本(例如3.22.3),请将 fading_edge_scrollview 依赖更新到 4.1.1 版本。

基本用法

这是一个最简单的 Marquee 示例:

Marquee(
  text: 'There once was a boy who told this story about a boy: "',
)

完整示例

以下是一个更复杂的示例,展示了如何充分利用 Marquee 的自定义功能。该示例包含了一个简单的跑马灯和一个带有更多配置项的复杂跑马灯,并且可以通过按钮切换语言方向(从左到右或从右到左)。

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

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool _useRtlText = false;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Marquee',
      home: Scaffold(
        backgroundColor: Colors.deepOrange, // 设置背景颜色为橙色
        body: ListView(
          padding: EdgeInsets.only(top: 50), // 设置列表顶部内边距
          children: [
            _buildMarquee(), // 构建简单的跑马灯
            _buildComplexMarquee(), // 构建复杂的跑马灯
          ].map(_wrapWithStuff).toList(), // 包装每个子组件
        ),
        floatingActionButton: FloatingActionButton.extended(
          onPressed: () => setState(() => _useRtlText = !_useRtlText), // 切换语言方向
          label: !_useRtlText
              ? const Text('Switch to Hebrew') // 英文按钮文本
              : const Text('החלף לאנגלית'), // 希伯来文按钮文本
          backgroundColor: Colors.pink, // 设置按钮背景颜色为粉色
        ),
      ),
    );
  }

  // 构建简单的跑马灯
  Widget _buildMarquee() {
    return Marquee(
      key: Key("$_useRtlText"), // 根据语言方向生成唯一的Key
      text: !_useRtlText
          ? 'There once was a boy who told this story about a boy: "' // 英文文本
          : 'פעם היה ילד אשר סיפר סיפור על ילד:"', // 希伯来文文本
      velocity: 50.0, // 设置滚动速度
    );
  }

  // 构建复杂的跑马灯
  Widget _buildComplexMarquee() {
    return Marquee(
      key: Key("$_useRtlText"), // 根据语言方向生成唯一的Key
      text: !_useRtlText
          ? 'Some sample text that takes some space.' // 英文文本
          : 'זהו משפט ראשון של הטקסט הארוך. זהו המשפט השני של הטקסט הארוך', // 希伯来文文本
      style: TextStyle(fontWeight: FontWeight.bold), // 设置文本样式为加粗
      scrollAxis: Axis.horizontal, // 设置滚动方向为水平
      crossAxisAlignment: CrossAxisAlignment.start, // 设置交叉轴对齐方式为起始位置
      blankSpace: 20, // 设置空白区域大小
      velocity: 100, // 设置滚动速度
      pauseAfterRound: Duration(seconds: 1), // 每轮滚动后暂停1秒
      showFadingOnlyWhenScrolling: true, // 只在滚动时显示渐变效果
      fadingEdgeStartFraction: 0.1, // 设置渐变开始部分的比例
      fadingEdgeEndFraction: 0.1, // 设置渐变结束部分的比例
      numberOfRounds: 3, // 设置滚动轮数
      startPadding: 10, // 设置起始内边距
      accelerationDuration: Duration(seconds: 1), // 设置加速持续时间
      accelerationCurve: Curves.linear, // 设置加速曲线为线性
      decelerationDuration: Duration(milliseconds: 500), // 设置减速持续时间
      decelerationCurve: Curves.easeOut, // 设置减速曲线为easeOut
      textDirection: _useRtlText ? TextDirection.rtl : TextDirection.ltr, // 根据语言方向设置文本方向
    );
  }

  // 包装每个子组件
  Widget _wrapWithStuff(Widget child) {
    return Padding(
      padding: EdgeInsets.all(16), // 设置四周内边距
      child: Container(
        height: 50, // 设置容器高度
        color: Colors.white, // 设置容器背景颜色为白色
        child: child, // 子组件
      ),
    );
  }
}

更多关于Flutter跑马灯效果插件marquee_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter跑马灯效果插件marquee_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter中使用marquee_plus插件来实现跑马灯效果的示例代码。这个插件允许你创建一个文本在屏幕内循环滚动的视图。

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

dependencies:
  flutter:
    sdk: flutter
  marquee_plus: ^x.y.z  # 替换为最新版本号

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

接下来,你可以在你的Flutter应用中使用MarqueePlus组件。以下是一个完整的示例代码,展示如何使用这个插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Marquee Plus Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    String marqueeText = "这是一个跑马灯效果的文本示例,它在屏幕上循环滚动。";

    return Scaffold(
      appBar: AppBar(
        title: Text('Marquee Plus Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            MarqueePlus(
              text: marqueeText,
              textStyle: TextStyle(fontSize: 20, color: Colors.black),
              velocity: 50.0,  // 滚动速度
              blankSpace: 20.0,  // 文本两端空白空间
              singleLine: true,  // 是否单行显示
              loop: -1,  // 滚动次数,-1表示无限循环
              leadingPadding: 10.0,  // 前导空白
              trailingPadding: 10.0,  // 尾随空白
              showEllipsis: true,  // 是否显示省略号
              fadeMode: true,  // 滚动结束是否淡出
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,并在MyHomePage中使用了MarqueePlus组件。你可以调整MarqueePlus的各种属性来满足你的需求,例如:

  • text: 要显示的文本。
  • textStyle: 文本的样式。
  • velocity: 文本的滚动速度。
  • blankSpace: 文本两端空白空间。
  • singleLine: 是否单行显示。
  • loop: 滚动次数,-1表示无限循环。
  • leadingPaddingtrailingPadding: 前导和尾随空白。
  • showEllipsis: 是否显示省略号。
  • fadeMode: 滚动结束是否淡出。

运行这个代码,你应该能看到一个带有跑马灯效果的文本在屏幕上循环滚动。

回到顶部