Flutter动画打字效果插件animated_typing的使用

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

Flutter动画打字效果插件animated_typing的使用

使用说明

步骤一:添加依赖

在你的 pubspec.yaml 文件中添加 animated_typing 包:

dependencies:
  ...
  animated_typing: any

步骤二:导入包

在 Dart 文件中导入 animated_typing 包:

import 'package:animated_typing/animated_typing.dart';

步骤三:使用插件

使用 AnimatedTyping 小部件,并传递文本 (text)、持续时间 (duration) 和样式 (style)。

// 示例代码
AnimatedTyping(
  text: '这文本将在输入时进行动画效果', // 要显示的文本
  duration: Duration(
    seconds: 3, // 动画持续时间
  ),
  style: TextStyle(
    color: Colors.red, // 文本颜色
    fontSize: 22, // 文本大小
  ),
),

完整示例

以下是一个完整的示例代码,展示了如何使用 animated_typing 插件创建一个具有动画效果的输入框,并控制动画的速度和颜色。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  Color _color = Colors.primaries[0]; // 初始颜色为第一个原色
  TextEditingController _controller = TextEditingController(); // 文本控制器
  double _seconds = 3; // 动画持续时间(秒)
  String _text = ''; // 显示的文本

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          children: [
            Container(
              padding: EdgeInsets.all(20),
              child: TextFormField(
                controller: _controller,
                onChanged: (_) {
                  setState(() {}); // 更新状态以响应文本变化
                },
                decoration: InputDecoration(
                  labelText: '文本',
                ),
              ),
            ),
            Row(
              mainAxisSize: MainAxisSize.min,
              children: [
                DropdownButton<Color>(
                  underline: Container(),
                  iconSize: 0.0,
                  items: Colors.primaries
                      .map((color) => DropdownMenuItem<Color>(
                            value: color,
                            child: Container(
                              width: 40,
                              height: 40,
                              decoration: BoxDecoration(
                                color: color,
                                shape: BoxShape.circle,
                              ),
                            ),
                          ))
                      .toList(),
                  onChanged: (v) {
                    setState(() {
                      _color = v!; // 更新选择的颜色
                    });
                  },
                  value: _color,
                ),
                Slider(
                  value: _seconds,
                  onChanged: (newValue) {
                    setState(() {
                      _seconds = newValue; // 更新动画持续时间
                    });
                  },
                  min: 1,
                  max: 40,
                  divisions: 39,
                  label: '$_seconds 秒',
                )
              ],
            ),
            ElevatedButton(
              child: Text('开始'),
              onPressed: () {
                _text = _controller.text; // 获取输入的文本
                setState(() {}); // 更新状态以显示动画
              },
            ),
            AnimatedTyping(
              text: _text,
              duration: Duration(
                seconds: _seconds.toInt(), // 动画持续时间
              ),
              style: TextStyle(
                color: _color, // 文本颜色
                fontSize: 22, // 文本大小
              ),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter动画打字效果插件animated_typing的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter动画打字效果插件animated_typing的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter应用中使用animated_typing插件来实现打字效果的示例代码。这个插件允许你创建类似打字机的文本动画效果。

首先,确保你已经在pubspec.yaml文件中添加了animated_typing依赖:

dependencies:
  flutter:
    sdk: flutter
  animated_typing: ^2.0.0  # 请确保使用最新版本

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

接下来,在你的Flutter项目中,你可以这样使用AnimatedTyping小部件来创建一个打字效果的文本:

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

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

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

class TypingAnimationScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Animated Typing Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            SizedBox(height: 20),
            AnimatedTyping(
              text: [
                'Hello, ',
                'I am a Flutter ',
                'developer!',
              ],
              style: TextStyle(
                fontSize: 24,
                color: Colors.black,
              ),
              speed: Duration(milliseconds: 100), // 设置打字速度
              cursorWidth: 3.0,
              cursorColor: Colors.blue,
              cursorBlinkStyle: CursorBlinkStyle.smooth,
              onFinish: () {
                print('Typing animation finished!');
              },
            ),
            SizedBox(height: 20),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  • AnimatedTyping小部件接受一个字符串列表,每个字符串将按顺序显示,模拟打字效果。
  • style参数允许你设置文本的样式,如字体大小和颜色。
  • speed参数控制每个字符显示的速度。
  • cursorWidthcursorColor参数用于自定义光标的外观。
  • cursorBlinkStyle参数定义光标的闪烁样式,这里使用的是CursorBlinkStyle.smooth
  • onFinish回调在打字动画完成时调用,这里简单地打印了一条消息,但你可以根据需要执行其他操作。

运行这个示例代码,你将看到一个带有打字效果的文本动画,光标也会按预期闪烁。希望这个示例能帮助你理解如何在Flutter项目中使用animated_typing插件。

回到顶部