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

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

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

插件介绍

Marquee 是一个Flutter小部件,它能够以无限滚动的方式显示文本。该插件提供了丰富的自定义选项,包括但不限于滚动方向、持续时间、曲线动画以及每轮滚动后的暂停等。

提示: 如果您觉得这个插件很有用,请在GitHub上给项目点个星⭐️来支持开发者的工作。

使用方法

简单示例

下面是一个最基础的例子,仅需设置要滚动的文本:

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

完整功能示例

以下代码展示了如何充分利用 Marquee 的各种自定义属性来创建更复杂的效果:

Marquee(
  text: 'Some sample text that takes some space.',
  style: TextStyle(fontWeight: FontWeight.bold),
  scrollAxis: Axis.horizontal,
  crossAxisAlignment: CrossAxisAlignment.start,
  blankSpace: 20.0,
  velocity: 100.0,
  pauseAfterRound: Duration(seconds: 1),
  startPadding: 10.0,
  accelerationDuration: Duration(seconds: 1),
  accelerationCurve: Curves.linear,
  decelerationDuration: Duration(milliseconds: 500),
  decelerationCurve: Curves.easeOut,
)

对于更多关于属性的信息,请参阅 API文档

示例Demo

为了更好地理解 Marquee 的使用方式,这里提供了一个完整的示例应用,其中包括了简单的和复杂的两个 Marquee 实例,并且可以通过浮动按钮切换语言(从左到右或从右到左的文字排列)。

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

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

  @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"),
      text: !_useRtlText
          ? 'There once was a boy who told this story about a boy: "'
          : 'פעם היה ילד אשר סיפר סיפור על ילד:"',
      velocity: 50.0,
    );
  }

  Widget _buildComplexMarquee() {
    return Marquee(
      key: Key("$_useRtlText"),
      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),
      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,
      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),
    );
  }
}

以上就是 Marquee 插件的基本使用教程及完整示例。希望对您有所帮助!如果您有任何疑问或者需要进一步的帮助,请随时提问。


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

1 回复

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


在Flutter中实现跑马灯效果(Marquee)的一种方法是使用flutter_marquee插件。这个插件可以帮助你以滚动的方式显示文本内容,适用于需要动态展示长文本或消息的场景。

首先,你需要在你的Flutter项目中添加flutter_marquee插件。打开你的pubspec.yaml文件,并在dependencies部分添加以下依赖:

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

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

以下是一个使用flutter_marquee插件的简单示例代码,展示了如何实现跑马灯效果:

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

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

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    String longText = "这是一个非常长的文本,用于展示Flutter中的跑马灯效果。这个文本会不断地滚动,直到结束。";

    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Marquee Example'),
      ),
      body: Center(
        child: Marquee(
          text: longText,
          style: TextStyle(fontSize: 20, color: Colors.black),
          scrollAxis: Axis.horizontal,
          blankSpace: 20.0,
          speed: 50.0,
          pauseOnFocus: false,
          reverse: false,
          bounce: false,
          fadeThrough: false,
          textAlign: TextAlign.start,
          leadingBuilder: (context, isPaused) {
            return Container();
          },
          trailingBuilder: (context, isPaused) {
            return Container();
          },
        ),
      ),
    );
  }
}

在这个示例中:

  • Marquee组件用于创建跑马灯效果。
  • text参数设置要显示的文本内容。
  • style参数用于设置文本的样式。
  • scrollAxis参数设置为Axis.horizontal,表示文本水平滚动。
  • blankSpace参数用于设置文本滚动结束和开始之间的空白空间。
  • speed参数用于设置滚动速度。
  • pauseOnFocus参数表示当文本获得焦点时是否暂停滚动。
  • reverse参数表示是否反向滚动。
  • bounce参数表示是否在到达末尾时反弹。
  • fadeThrough参数表示文本在滚动过程中是否逐渐消失。
  • textAlign参数设置文本的对齐方式。
  • leadingBuildertrailingBuilder参数用于在文本的开头和结尾添加自定义的Widget。

你可以根据需要调整这些参数,以实现所需的跑马灯效果。

回到顶部