Flutter跑马灯效果插件marquee的使用
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
更多关于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
参数设置文本的对齐方式。leadingBuilder
和trailingBuilder
参数用于在文本的开头和结尾添加自定义的Widget。
你可以根据需要调整这些参数,以实现所需的跑马灯效果。