Flutter启动画面插件splash的使用

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

Flutter启动画面插件splash的使用

Flutter中的splash插件提供了多种自定义按钮按下效果,这些效果可以替代默认的InkSplash.splashFactoryInkRipple.splashFactory。本文将介绍如何在Flutter应用中使用该插件,并提供一个完整的示例代码。

插件概述

splash插件包含以下几种可选的启动画面效果:

  • WaveSplash: 波浪效果
  • PathSplash: 路径动画效果
  • LineSplash: 线条动画效果
  • NoSplash: 无启动画面效果

示例效果展示

Example Usage
Wave Splash WaveSplash.splashFactory, WaveSplash.customSplashFactory(strokeWidth: 30, blurStrength: 5)
Path Splash PathSplash.splashFactory(path), PathSplash.splashFactory(path, paint: paint, clip: false)
Line Splash LineSplash.splashFactory, LineSplash.customSplashFactory(paint: paint)
No Splash NoSplash.splashFactory

如何使用

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

dependencies:
  flutter:
    sdk: flutter
  splash: ^最新版本号

然后运行flutter pub get以安装插件。

接下来,在你的Flutter应用中使用不同的启动画面工厂方法。

在MaterialApp中使用

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
        splashFactory: WaveSplash.splashFactory, // 使用WaveSplash效果
      ),
      home: const MyHomePage(title: 'Demo'),
    );
  }
}

在按钮中使用

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

OutlinedButton(
  child: const Text('OutlineButton'),
  onPressed: () {},
  style: OutlinedButton.styleFrom(
    splashFactory: LineSplash.splashFactory, // 使用LineSplash效果
  ),
);

完整示例代码

以下是完整示例代码,展示了如何在应用中使用不同的启动画面效果:

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

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

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  Widget build(BuildContext context) {
    final simpleSamples = [
      SampleDesign(
        'InkSplash.splashFactory',
        'From the Flutter framework itself',
        Theme.of(context).copyWith(splashFactory: InkSplash.splashFactory),
      ),
      SampleDesign(
        'InkRipple.splashFactory',
        'From the Flutter framework itself',
        Theme.of(context).copyWith(
          splashFactory: InkRipple.splashFactory,
        ),
      ),
      SampleDesign(
        'LineSplash.splashFactory',
        'This splash factory creates an animated line',
        Theme.of(context).copyWith(
          splashFactory: LineSplash.splashFactory,
        ),
      ),
      // 其他SampleDesign实例...
    ].map((e) => listTileMapping(context, e)).toList(growable: false);

    return Scaffold(
      appBar: AppBar(
        title: Text(title),
      ),
      body: ListView(
        children: [
          Padding(
            padding: const EdgeInsets.all(16),
            child: Text(
              'Default theme with splash factory',
              style: Theme.of(context).textTheme.titleLarge,
            ),
          ),
          ...simpleSamples,
          // 更多内容...
        ],
      ),
    );
  }

  Widget listTileMapping(BuildContext context, SampleDesign e) {
    return ListTile(
      title: Text(e.title),
      subtitle: Text(e.subTitle),
      onTap: () {
        Navigator.push(
          context,
          MaterialPageRoute<void>(
            builder: (context) {
              return Theme(
                data: e.theme,
                child: Sample(
                  name: e.title,
                ),
              );
            },
          ),
        );
      },
    );
  }
}

// 其他类定义...

以上代码展示了如何在Flutter应用中集成并使用splash插件的不同启动画面效果。通过这种方式,你可以为你的应用创建更加个性化的用户体验。


这个Markdown文档详细介绍了如何使用`splash`插件,并提供了一个完整的示例代码供参考。希望对你有所帮助!

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

1 回复

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


在Flutter中,使用启动画面(Splash Screen)通常可以通过flutter_native_splash插件来实现。这个插件能够自动生成本地启动画面,适用于Android和iOS平台。以下是如何在Flutter项目中配置和使用flutter_native_splash插件的详细步骤,包括相关的代码案例。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_native_splash: ^x.x.x  # 请替换为最新版本号

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

2. 配置启动画面

创建一个名为launch_background.xml(Android)和LaunchScreen.storyboard(iOS)的文件来定义启动画面。不过,使用flutter_native_splash插件时,你通常不需要手动创建这些文件,因为插件会自动生成它们。你只需在pubspec.yaml中配置相关参数。

pubspec.yaml中添加flutter_native_splash配置:

flutter_native_splash:
  color: "#ffffff"  # 启动画面的背景颜色
  image: assets/splash.png  # 启动画面的图片路径
  android: true
  ios: true
  duration: 3000  # 启动画面显示的持续时间(毫秒)

确保你的assets/splash.png图片已经存在于项目的assets文件夹中,并在pubspec.yamlflutter部分注册了assets:

flutter:
  assets:
    - assets/splash.png

3. 生成启动画面

在终端中运行以下命令来生成启动画面文件:

flutter pub run flutter_native_splash:create

这条命令会在Android和iOS项目中自动生成所需的启动画面文件。

4. 运行应用

现在,你可以运行你的Flutter应用,启动时会显示配置好的启动画面。

5. 清理生成的启动画面(如果需要)

如果你想移除自动生成的启动画面文件,可以运行:

flutter pub run flutter_native_splash:remove

示例代码结构

你的项目结构可能看起来像这样:

my_flutter_app/
├── android/
│   └── ... (自动生成的启动画面文件)
├── ios/
│   └── ... (自动生成的启动画面文件)
├── assets/
│   └── splash.png
├── lib/
│   └── main.dart
├── pubspec.yaml
└── ...

main.dart 示例

虽然启动画面的配置主要在pubspec.yaml中完成,但你的main.dart文件可能看起来像这样:

import 'package:flutter/material.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: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Text('Hello, Flutter!'),
      ),
    );
  }
}

通过上述步骤,你已经成功在Flutter项目中配置了启动画面插件flutter_native_splash。这个插件大大简化了启动画面的配置过程,使得开发者能够专注于应用的核心功能。

回到顶部