📜  颤动水平线 - Dart (1)

📅  最后修改于: 2023-12-03 14:58:47.828000             🧑  作者: Mango

颤动水平线 - Dart

简介

颤动水平线是一种在 Dart 中实现的动画效果,它的特点是水平线不断颤动,使得界面效果更加生动。

实现
1. 调用 Flutter 原生组件

在 Dart 中使用 Flutter 实现颤动水平线,需要用到 AnimatedBuilder 组件和 Tween 动画来实现动画效果。

import 'package:flutter/material.dart';
class VibratingLine extends StatefulWidget {
  const VibratingLine({ Key? key }) : super(key: key);

  @override
  _VibratingLineState createState() => _VibratingLineState();
}

class _VibratingLineState extends State<VibratingLine> with SingleTickerProviderStateMixin{
  late AnimationController _controller;
  late Animation _animation;
  
  @override
  void initState() {
    super.initState();
    _controller = AnimationController(
      vsync: this,
      duration: const Duration(seconds: 1),
    )..repeat(reverse: true);
    _animation = Tween<double>(begin: 0, end: 50)
        .animate(CurvedAnimation(parent: _controller, curve: Curves.easeInOut));
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return AnimatedBuilder(
        animation: _animation,
        builder: (BuildContext context, Widget? child) {
          return Container(
            margin: EdgeInsets.symmetric(vertical: 15),
            height: 5,
            width: 50,
            child: DecoratedBox(
              decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(10),
                  color: Colors.purple[200]),
              child: Transform.translate(
                offset: Offset(_animation.value,0),
              ),
            ),
          );
        });
  }
}

代码实现了一个 VibratingLine 类似于一个颤动的线条,可以将其嵌入到 Flutter 的组件中进行调用。

2. 集成到 Flutter 应用

可以在其他 Flutter 组件使用 VibratingLine 组件,这里以一个简单的例子说明如何使用。

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

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

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
     
        primarySwatch: Colors.blue,
       
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
   
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
       
        child: Column(
          
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Click button below to see vibrating line:',
            ),
            ElevatedButton(
              onPressed: () {
                showDialog(
                  context: context,
                  builder: (context) {
                    return AlertDialog(
                      content: VibratingLine(),
                    );
                  },
                );
              },
              child: const Text('Show vibrating line')
            ),
          ],
        ),
      ),
      
    );
  }
}

MyHomePage 组件中,通过调用 VibratingLine 组件来实现颤动水平线的效果。

总结

Dart 作为 Flutter 的主要编程语言,开发者可以使用 Flutter 的原生组件,结合 Dart 的特征和语法,实现丰富的动画效果。在实现动画效果时,可以通过使用 AnimatedBuilderTween 来完成颤动水平线的效果。