Flutter三维滑块插件three_d_slider的使用

Flutter三维滑块插件three_d_slider的使用

ThreeDSlider

ThreeDSlider 是一个用于创建具有3D效果的动态交互式轮播图的小部件。

支持的平台

该小部件支持以下平台:

  • Flutter Android
  • Flutter iOS
  • Flutter Web
  • Flutter Desktop (macOS, Linux, 和 Windows)

安装

要将 three_d_slider 添加到你的项目中,在 pubspec.yaml 文件中添加它:

dependencies:
  three_d_slider: ^1.0.0

然后导入该包:

import 'package:three_d_slider/three_d_slider.dart';

使用

要创建一个3D轮播图,使用 ThreeDSlider 小部件并指定必要的参数。以下是一个基本示例:

ThreeDSlider(
  frameHeight: screenHeight * (isWeb ? 0.3 : 0.2), // 根据平台调整卡片高度
  frameWidth: screenWidth * (isWeb ? 0.2 : 0.5),   // 根据平台调整卡片宽度
  sideFrameVisibility: 0.2, // 控制侧面帧的透明度
  selectedIndex: 2,         // 设置默认选中的图片索引
  frameDecoration: const BoxDecoration(
    boxShadow: [
      BoxShadow(
        color: Color.fromARGB(255, 95, 94, 94),
        offset: Offset(0, 10),
        blurRadius: 20.0,
      ),
    ],
  ),
  cards: imageUrls.map((url) => Image.network(
      url,
      fit: BoxFit.fill,
    )).toList(), // 图片列表
),

在本示例中,imageUrls 应该是一个包含要在轮播图中显示的图片URL的列表。

参数

  • frameHeight: 每个卡片帧的高度。
  • frameWidth: 每个卡片帧的宽度。
  • sideFrameVisibility: 调整侧面帧的透明度。
  • selectedIndex: 初始选中的卡片。
  • frameDecoration: 为帧自定义装饰,例如阴影。

预览

3D滑块的演示图:

3D Slider Demo

示例代码

以下是完整的示例代码,展示了如何在应用中使用 ThreeDSlider

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

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

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

  // 这个小部件是你的应用的根
  [@override](/user/override)
  Widget build(BuildContext context) {
    List<String> imageUrls = [
      'https://images.pexels.com/photos/27308352/pexels-photo-27308352/free-photo-of-a-wooden-path-leading-to-the-beach-at-sunset.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',
      'https://images.pexels.com/photos/28859529/pexels-photo-28859529/free-photo-of-aerial-view-of-coastal-wind-turbine-farm.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',
      'https://images.pexels.com/photos/29034179/pexels-photo-29034179/free-photo-of-autumn-leaves-on-a-wooden-dock-by-the-water.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',
      'https://images.pexels.com/photos/29087771/pexels-photo-29087771/free-photo-of-stunning-starry-night-over-lake-in-lombardia-italy.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',
      'https://images.pexels.com/photos/14344721/pexels-photo-14344721.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',
    ];

    double screenWidth = MediaQuery.of(context).size.width;
    double screenHeight = MediaQuery.of(context).size.height;

    // 确定是否将平台视为web平台,屏幕宽度大于等于481像素被视为web平台
    bool isWeb = screenWidth >= 481;

    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: Scaffold(
        body: Center(
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ThreeDSlider(
                frameHeight: screenHeight * (isWeb ? 0.3 : 0.2), // 根据平台调整卡片高度
                frameWidth: screenWidth * (isWeb ? 0.2 : 0.5),   // 根据平台调整卡片宽度
                sideFrameVisibility: 0.2, // 控制侧面帧的透明度
                frameDecoration: const BoxDecoration(
                  boxShadow: [
                    BoxShadow(
                      color: Color.fromARGB(255, 95, 94, 94),
                      offset: Offset(0, 10),
                      blurRadius: 20.0,
                    )
                  ],
                ),
                cards: imageUrls
                    .map((url) => Image.network(url, fit: BoxFit.fill)) // 映射每个图片URL到Image网络组件
                    .toList(), // 转换为列表
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter三维滑块插件three_d_slider的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter三维滑块插件three_d_slider的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用three_d_slider插件的示例代码。three_d_slider是一个用于创建三维滑块效果的插件,它可以在Flutter应用中提供更为直观和有趣的滑块交互体验。

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

dependencies:
  flutter:
    sdk: flutter
  three_d_slider: ^最新版本号  # 请替换为最新的版本号

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

接下来,在你的Flutter项目的dart文件中,你可以按照以下示例代码来使用three_d_slider

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

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

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  double sliderValue = 0.0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('ThreeD Slider Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Current Slider Value: ${sliderValue.toStringAsFixed(1)}',
              style: TextStyle(fontSize: 24),
            ),
            SizedBox(height: 20),
            ThreeDSlider(
              value: sliderValue,
              minValue: 0.0,
              maxValue: 100.0,
              step: 1.0,
              onChange: (newValue) {
                setState(() {
                  sliderValue = newValue;
                });
              },
              width: 300,
              height: 50,
              sliderColor: Colors.blue,
              trackColor: Colors.grey.withOpacity(0.3),
              ballColor: Colors.white,
              shadowColor: Colors.black.withOpacity(0.2),
              ballRadius: 15.0,
              shadowRadius: 10.0,
              elevation: 5.0,
              animationDuration: Duration(milliseconds: 300),
              showTooltip: true,
            ),
          ],
        ),
      ),
    );
  }
}

代码解释:

  1. 依赖导入

    import 'package:three_d_slider/three_d_slider.dart';
    
  2. 创建应用入口

    void main() {
      runApp(MyApp());
    }
    
  3. 设置应用主题和主页

    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'ThreeD Slider Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: MyHomePage(),
        );
      }
    }
    
  4. 创建主页和状态管理

    class MyHomePage extends StatefulWidget {
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      double sliderValue = 0.0;
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('ThreeD Slider Demo'),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Text(
                  'Current Slider Value: ${sliderValue.toStringAsFixed(1)}',
                  style: TextStyle(fontSize: 24),
                ),
                SizedBox(height: 20),
                ThreeDSlider(
                  value: sliderValue,
                  minValue: 0.0,
                  maxValue: 100.0,
                  step: 1.0,
                  onChange: (newValue) {
                    setState(() {
                      sliderValue = newValue;
                    });
                  },
                  width: 300,
                  height: 50,
                  sliderColor: Colors.blue,
                  trackColor: Colors.grey.withOpacity(0.3),
                  ballColor: Colors.white,
                  shadowColor: Colors.black.withOpacity(0.2),
                  ballRadius: 15.0,
                  shadowRadius: 10.0,
                  elevation: 5.0,
                  animationDuration: Duration(milliseconds: 300),
                  showTooltip: true,
                ),
              ],
            ),
          ),
        );
      }
    }
    

参数解释:

  • value:当前滑块的值。
  • minValue:滑块的最小值。
  • maxValue:滑块的最大值。
  • step:滑块步长。
  • onChange:滑块值改变时的回调函数。
  • widthheight:滑块的宽度和高度。
  • sliderColor:滑块的颜色。
  • trackColor:轨道的颜色。
  • ballColor:滑块球的颜色。
  • shadowColor:滑块球的阴影颜色。
  • ballRadius:滑块球的半径。
  • shadowRadius:滑块球阴影的半径。
  • elevation:滑块球的Z轴高度(阴影效果)。
  • animationDuration:动画持续时间。
  • showTooltip:是否显示工具提示。

这个示例展示了如何在Flutter中使用three_d_slider插件来创建一个简单的三维滑块,并实时更新显示滑块的值。你可以根据需要调整参数以满足你的应用需求。

回到顶部