Flutter背景视差效果插件parallax_bg的使用

Flutter背景视差效果插件parallax_bg的使用

创建美观且交互式的视差背景效果,适用于你的应用程序和游戏。

示例图像

你可以在 SlideIT移动游戏 中找到另一个工作示例。

使用方法

pubspec.yaml文件中添加以下命令并安装包:

dependencies:
  parallax_bg: 2.0.1

或者运行以下命令:

flutter pub add parallax_bg

导入包

在Dart页面中导入包:

import 'package:parallax_bg/parallax_bg.dart';

创建背景包装器

添加以下代码来创建背景包装器:

ParallaxBackground(
  backgroundImage: "assets/images/galaxy.jpg",
  parallaxType: _parallaxType,
  foregroundChilds: [
    ParallaxItem(
        child: Image.asset("assets/images/planet.png"),
        offset: _planetOffset),
    ParallaxItem(
        child: Image.asset("assets/images/meteor.png"),
        offset: _meteorOffset),
  ],
  // fallback: true,
);

更改/添加/移除ParallaxItem

更改或添加前景项:

ParallaxItem(
  child: Image.asset("assets/images/meteor.png"),
  offset: _meteorOffset),

ParallaxBackground属性

属性名 类型 必填 描述
backgroundImage 字符串 背景图像路径,来自资源文件夹
foregroundChilds 列表 用于创建前景层的小部件列表
child 小部件 绘制在所有视差小部件之上的子小部件
reverse 布尔值 是否反向移动前景项。默认为false
fallback 布尔值 如果为true,则在没有传感器可用时正常渲染项目。如果为false,则会在可见区域显示错误消息。默认为false

ParallaxItem属性

属性名 类型 必填 描述
child 小部件 绘制在背景上的视差项小部件
offset 布尔值 计算距离时移动项目的偏移值。每个项目都需要单独的值。默认为5

许可证

MIT许可证


完整示例Demo

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

import 'package:parallax_bg/parallax_bg.dart';

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

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

class _MyAppState extends State<MyApp> {
  double _planetOffset = 1;
  double _meteorOffset = 5;

  bool _loading = false;

  [@override](/user/override)
  Widget build(BuildContext context) {
    SystemChrome.setEnabledSystemUIOverlays([]);
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Column(mainAxisSize: MainAxisSize.max, children: [
          Expanded(
              child: _loading
                  ? Center(child: CircularProgressIndicator())
                  : _parallaxBody()),
          Padding(
            padding: const EdgeInsets.symmetric(horizontal: 8.0),
            child: Row(
              mainAxisSize: MainAxisSize.max,
              children: [
                Text("Planet"),
                Expanded(
                  child: Slider(
                    value: _planetOffset,
                    onChanged: (val) {
                      setState(() {
                        _planetOffset = val;
                      });
                    },
                    min: 1,
                    max: 10,
                  ),
                ),
                Text(_planetOffset.toStringAsFixed(0)),
              ],
            ),
          ),
          Padding(
            padding: const EdgeInsets.symmetric(horizontal: 8.0),
            child: Row(
              children: [
                Text("Meteor"),
                Expanded(
                  child: Slider(
                    value: _meteorOffset,
                    onChanged: (val) {
                      setState(() {
                        _meteorOffset = val;
                      });
                    },
                    min: 5,
                    max: 20,
                  ),
                ),
                Text(_meteorOffset.toStringAsFixed(0)),
              ],
            ),
          ),
        ]),
      ),
    );
  }

  _parallaxBody() {
    return ParallaxBackground(
      backgroundImage: "assets/images/galaxy.jpg",
      foregroundChilds: [
        ParallaxItem(
            child: Image.asset("assets/images/planet.png"),
            offset: _planetOffset),
        ParallaxItem(
            child: Image.asset("assets/images/meteor.png"),
            offset: _meteorOffset),
      ],
      // fallback: true,
    );
  }
}

更多关于Flutter背景视差效果插件parallax_bg的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter背景视差效果插件parallax_bg的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter中使用parallax_bg插件来实现背景视差效果的代码示例。parallax_bg是一个流行的Flutter插件,用于创建具有深度感和动态效果的背景。

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

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

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

接下来是一个简单的示例代码,展示如何使用parallax_bg来实现背景视差效果:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Parallax Background Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: ParallaxScaffold(
        appBar: AppBar(
          title: Text('Parallax Background Example'),
        ),
        body: ParallaxBody(
          // List of layers with different depths
          layers: [
            ParallaxLayer(
              // Full-screen background image
              1.0, // Depth factor: higher value means slower movement
              Container(
                decoration: BoxDecoration(
                  image: DecorationImage(
                    image: AssetImage('assets/background1.jpg'), // 替换为你的图片路径
                    fit: BoxFit.cover,
                  ),
                ),
              ),
            ),
            ParallaxLayer(
              0.5, // Depth factor for the overlay image
              Container(
                decoration: BoxDecoration(
                  image: DecorationImage(
                    image: AssetImage('assets/overlay.png'), // 替换为你的图片路径
                    fit: BoxFit.cover,
                    colorFilter: ColorFilter.mode(Colors.black.withOpacity(0.3), BlendMode.multiply),
                  ),
                ),
              ),
            ),
          ],
          // The main content of the page
          child: Center(
            child: Text(
              'Scroll down to see the parallax effect',
              style: TextStyle(fontSize: 24),
            ),
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中使用了ParallaxScaffoldParallaxBody来构建具有视差效果的背景。ParallaxLayer用于定义不同的图层,每个图层都有一个深度因子(depth factor),这个因子决定了该图层在滚动时的移动速度。深度因子越高,图层移动得越慢,从而创建出深度感和动态效果。

请确保将assets/background1.jpgassets/overlay.png替换为你实际使用的图片路径,并在pubspec.yaml中正确声明这些图片资源。

这个示例展示了如何使用parallax_bg插件来创建一个具有背景视差效果的基本页面。你可以根据需要进一步自定义和扩展这个示例。

回到顶部