Flutter圆形轮播图插件circular_carousel_slider的使用

Flutter圆形轮播图插件circular_carousel_slider的使用

Circular Carousel Slider

A Flutter package for creating a circular carousel slider.

使用

使用任何Flutter Widget一样简单。

示例:

pubspec.yaml文件中添加该模块:

dependencies:
  ...
  circular_carousel_slider: ^0.0.1
  ...

然后,在项目目录中运行flutter pub get来安装它。之后,导入模块并使用它。

简单示例

import 'package:circular_carousel_slider/circular_carousel_slider.dart';

//...
[@override](/user/override)
Widget build(BuildContext context) {
  return CircularCarouselSlider(
    children: [
      // 添加你的子部件,例如图片或文本
      Container(
        color: Colors.red,
        width: 200,
        height: 200,
      ),
      Container(
        color: Colors.blue,
        width: 200,
        height: 200,
      ),
    ],
  );
}

带控制器

要控制轮播图,我们可以使用CircularCarouselController并将其传递给controller变量。控制器有一些方法可以控制轮播图,如nextPagepreviousPage。如果没有设置itemsLength变量,这些方法将无法工作。

import 'package:circular_carousel_slider/circular_carousel_slider.dart';

CircularCarouselController? _controller;

[@override](/user/override)
void initState() {
  super.initState();
  _controller = CircularCarouselController(
    itemsLength: _widgetList.length, // 设置轮播图项目的数量
  );
}

//...
[@override](/user/override)
Widget build(BuildContext context) {
  return CircularCarouselSlider(
    controller: _controller,
    children: [
      // 添加你的子部件,例如图片或文本
      Container(
        color: Colors.red,
        width: 200,
        height: 200,
      ),
      Container(
        color: Colors.blue,
        width: 200,
        height: 200,
      ),
    ],
  );
}

//...

ElevatedButton(
   onPressed: () => _controller?.nextPage(
     duration: const Duration(milliseconds: 300),
     curve: Curves.fastOutSlowIn,
   ),
   child: const Text('Next'),
 ),

宽高比

默认的宽高比为1.0。我们可以通过设置aspectRatio变量来改变它。

import 'package:circular_carousel_slider/circular_carousel_slider.dart';

//...
[@override](/user/override)
Widget build(BuildContext context) {
  return CircularCarouselSlider(
    aspectRatio: 21 / 9, // 设置宽高比
    children: [
      // 添加你的子部件,例如图片或文本
      Container(
        color: Colors.red,
        width: 200,
        height: 200,
      ),
      Container(
        color: Colors.blue,
        width: 200,
        height: 200,
      ),
    ],
  );
}

当前页

要获取当前页面索引,我们可以使用onPageChanged回调。

import 'package:circular_carousel_slider/circular_carousel_slider.dart';

//...
[@override](/user/override)
Widget build(BuildContext context) {
  return CircularCarouselSlider(
    onPageChanged: (index) {
      // 处理页面变化的逻辑
      print("当前页面索引: $index");
    },
    children: [
      // 添加你的子部件,例如图片或文本
      Container(
        color: Colors.red,
        width: 200,
        height: 200,
      ),
      Container(
        color: Colors.blue,
        width: 200,
        height: 200,
      ),
    ],
  );
}

更多关于Flutter圆形轮播图插件circular_carousel_slider的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter圆形轮播图插件circular_carousel_slider的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用 circular_carousel_slider 插件的详细代码示例。这个插件可以帮助你在 Flutter 应用中实现圆形轮播图效果。

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

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

然后,运行 flutter pub get 来获取依赖项。

接下来,在你的 Dart 文件中使用 CircularCarouselSlider。以下是一个完整的示例,展示如何在 Flutter 中实现圆形轮播图:

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

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

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

class CircularCarouselPage extends StatefulWidget {
  @override
  _CircularCarouselPageState createState() => _CircularCarouselPageState();
}

class _CircularCarouselPageState extends State<CircularCarouselPage> {
  final List<String> images = [
    'https://example.com/image1.jpg',
    'https://example.com/image2.jpg',
    'https://example.com/image3.jpg',
    'https://example.com/image4.jpg',
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Circular Carousel Slider Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: CircularCarouselSlider(
          items: images.map((image) {
            return CircularCarouselSliderItem(
              child: Image.network(
                image,
                fit: BoxFit.cover,
              ),
            );
          }).toList(),
          aspectRatio: 1.5,
          autoPlay: true,
          enlargeCenterPage: true,
          scrollPhysics: BouncingScrollPhysics(),
          enlargeCenterPageScale: 1.2,
          autoPlayInterval: Duration(seconds: 3),
          autoPlayAnimationDuration: Duration(milliseconds: 800),
          autoPlayCurve: Curves.easeInOutQuad,
          viewportFraction: 0.8,
        ),
      ),
    );
  }
}

在这个示例中:

  1. 我们首先定义了一个 MyApp 类,它是应用的根 widget。
  2. CircularCarouselPage 是包含圆形轮播图的主要页面。
  3. 我们定义了一个包含图像 URL 的列表 images
  4. CircularCarouselPagebuild 方法中,我们使用了 CircularCarouselSlider widget。
  5. CircularCarouselSlideritems 属性接收一个 CircularCarouselSliderItem 列表,每个 CircularCarouselSliderItem 可以包含一个子 widget,在这个例子中是一个 Image.network widget。
  6. 其他属性如 aspectRatioautoPlayenlargeCenterPageautoPlayInterval 等用于配置轮播图的外观和行为。

这个示例展示了如何使用 circular_carousel_slider 插件来创建一个简单的圆形轮播图。你可以根据需要调整这些参数和子 widget 来满足你的具体需求。

回到顶部