Flutter启动动画插件flutter_animated_splash的使用

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

Flutter启动动画插件flutter_animated_splash的使用

Getting started 🚀

flutter_animated_splash 是一个用于Flutter的启动动画API,可以程序化地显示和隐藏带有过渡效果的启动屏幕。

Platform Support

支持多平台,包括:

  • Android
  • iOS
  • Windows
  • Mac
  • Linux
  • Chrome OS
  • Web

Features ⛏

  • 新的过渡动画
  • 新的曲线动画
  • 多平台支持
  • 易于使用

Installation

1. Depend on it

在你的 pubspec.yaml 文件中添加依赖:

dependencies:
   flutter_animated_splash: ^0.0.10

2. Install it

你可以从命令行安装包:

$ flutter pub add flutter_animated_splash

Usage 🎨

Import

现在在你的Dart代码中可以这样导入:

import 'package:flutter_animated_splash/flutter_animated_splash.dart';

Example_1

使用文本小部件的启动屏幕:

AnimatedSplash(
    type: Transition.fade,
    child: Text("Your Splash"),
    curve: Curves.fastLinearToSlowEase,
    background: Colors.white,
    navigator: const Home(),
    durationInSeconds: 3
)

Example_2

使用图标小部件的启动屏幕:

AnimatedSplash(
    type: Transition.size,
    child: Icon(
      Icons.audiotrack,
      color: Colors.green,
      size: 30.0,
    ),
    curve: Curves.fastLinearToSlowEase,
    background: Colors.white,
    navigator: const Home(),
    durationInSeconds: 3
)

Example_3

使用图片小部件的启动屏幕:

AnimatedSplash(
    type: Transition.slide,
    child: Image(
        image: NetworkImage('https://flutter.github.io/assets-for-api-docs/assets/widgets/owl.jpg'),
    ),
    curve: Curves.fastLinearToSlowEase,
    background: Colors.white,
    navigator: const Home(),
    durationInSeconds: 3
)

完整示例 Demo

以下是一个完整的示例应用,展示了如何使用 flutter_animated_splash 插件:

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

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

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

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home Screen'),
      ),
      body: Center(
        child: Text('Welcome to the Home Screen!'),
      ),
    );
  }
}

class SplashScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return AnimatedSplash(
      type: Transition.fade,
      child: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              "Welcome",
              style: TextStyle(fontSize: 24, color: Colors.black),
            ),
            SizedBox(height: 20),
            CircularProgressIndicator(),
          ],
        ),
      ),
      curve: Curves.fastLinearToSlowEase,
      background: Colors.white,
      navigator: Home(),
      durationInSeconds: 3,
    );
  }
}

Page Transition Animation Types

以下是可用的过渡类型及其用法:

动画过渡类型 使用方法
fade type: Transition.fade
rightToLeft type: Transition.rightToLeft
leftToRight type: Transition.leftToRight
topToBottom type: Transition.topToBottom
bottomToTop type: Transition.bottomToTop
scale type: Transition.scale
size type: Transition.size
leftToRightWithFade type: Transition.leftToRightWithFade
elasticOut type: Transition.elasticOut
fastOutSlowIn type: Transition.fastOutSlowIn
slide type: Transition.slide

Page Curve Animation

不同的曲线动画也可以应用于过渡效果,例如:

curve: Curves.bounceIn

curve: Curves.decelerate

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用flutter_animated_splash插件来实现启动动画的示例代码。

首先,你需要在你的pubspec.yaml文件中添加flutter_animated_splash依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_animated_splash: ^1.3.0  # 请使用最新版本号

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

接下来,你需要在你的main.dart文件中配置启动动画。以下是一个完整的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: AnimatedSplash(
        image: Image.asset(
          'assets/splash.png', // 请将此处替换为你的启动图片路径
          fit: BoxFit.cover,
        ),
        animationDuration: 2000, // 动画持续时间,单位为毫秒
        home: HomeScreen(), // 动画结束后显示的页面
        splashProgress: (progress) {
          // 可选:你可以在这里根据进度显示加载进度
          return Center(
            child: CircularProgressIndicator(
              value: progress,
            ),
          );
        },
        backgroundColor: Colors.white, // 背景颜色
        // 如果你需要显示一个加载文本,可以使用loadingText属性
        loadingText: Text(
          'Loading...',
          style: TextStyle(fontSize: 20),
        ),
      ),
    );
  }
}

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home Screen'),
      ),
      body: Center(
        child: Text('Welcome to the Home Screen!'),
      ),
    );
  }
}

在这个示例中,我们做了以下事情:

  1. pubspec.yaml中添加了flutter_animated_splash依赖。
  2. main.dart中,使用AnimatedSplash小部件来配置启动动画。
    • image属性用于设置启动图片。
    • animationDuration属性用于设置动画持续时间。
    • home属性用于设置动画结束后显示的页面。
    • splashProgress是一个可选属性,用于显示加载进度。
    • backgroundColor属性用于设置背景颜色。
    • loadingText是一个可选属性,用于显示加载文本。

确保你的启动图片(例如splash.png)已经放在assets文件夹中,并且在pubspec.yaml中声明了这个资源:

flutter:
  assets:
    - assets/splash.png

这个示例展示了如何使用flutter_animated_splash插件来实现一个简单的启动动画。你可以根据自己的需求进一步自定义动画效果。

回到顶部