Flutter圆形轮盘滚动插件circle_wheel_scroll的使用

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

Flutter圆形轮盘滚动插件circle_wheel_scroll的使用

Circle Wheel Scroll View 插件

修改版的原始 ListWheelScrollView,用于创建圆周滚动效果。

预览图

使用方法

要使用此插件,只需导入相应的包:

import 'package:circle_wheel_scroll/circle_wheel_scroll_view.dart';

示例代码

以下是一个完整的示例代码,展示了如何使用 circle_wheel_scroll 插件来实现一个圆形轮盘滚动效果。

import 'package:flutter/material.dart';

import 'package:circle_wheel_scroll/circle_wheel_scroll_view.dart';

// 定义一个构建列表项的方法
Widget _buildItem(int i) {
  return Center(
    child: ClipRRect(
      borderRadius: BorderRadius.circular(40),
      child: Container(
        width: 80,
        padding: EdgeInsets.all(20),
        color: Colors.blue[100 * ((i % 8) + 1)],
        child: Center(
          child: Text(
            i.toString(),
          ),
        ),
      ),
    ),
  );
}

// 主页面类
class WheelExample extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('轮盘示例'),
      ),
      body: SafeArea(
        child: Center(
          child: Container(
            // 高度和宽度可以根据需求调整
            // height: 260,
            // width: 160,
            child: CircleListScrollView(
              physics: CircleFixedExtentScrollPhysics(), // 滚动物理属性
              axis: Axis.vertical, // 滚动方向(水平或垂直)
              itemExtent: 80, // 每个项目的大小
              radius: MediaQuery.of(context).size.width * 0.6, // 圆形轮盘的半径
              onSelectedItemChanged: (int index) => print('当前选中索引: $index'), // 选中项目时触发的回调
              children: List.generate(20, _buildItem), // 生成20个项目
            ),
          ),
        ),
      ),
    );
  }
}

// 主应用类
class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: WheelExample(), // 设置首页为轮盘示例页面
    );
  }
}

// 主函数
void main() => runApp(MyApp());

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

1 回复

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


当然,关于Flutter中圆形轮盘滚动插件circle_wheel_scroll的使用,下面是一个简单的代码示例,展示了如何集成和使用该插件来创建一个基本的圆形轮盘滚动视图。

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

dependencies:
  flutter:
    sdk: flutter
  circle_wheel_scroll: ^最新版本号  # 请替换为当前最新版本号

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

接下来,是一个简单的Flutter应用示例,展示如何使用circle_wheel_scroll插件:

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

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

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

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

class _MyHomePageState extends State<MyHomePage> {
  final List<String> items = List<String>.generate(20, (i) => "Item $i");
  int selectedIndex = 0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Circle Wheel Scroll Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            SizedBox(
              height: 300,
              child: CircleWheelScroll(
                items: items,
                selectedIndex: selectedIndex,
                itemBuilder: (context, index) {
                  return Container(
                    decoration: BoxDecoration(
                      border: Border.all(color: Colors.grey, width: 2),
                      borderRadius: BorderRadius.circular(10),
                    ),
                    alignment: Alignment.center,
                    child: Text(
                      items[index],
                      style: TextStyle(fontSize: 20),
                    ),
                  );
                },
                onItemSelected: (index) {
                  setState(() {
                    selectedIndex = index;
                  });
                },
                itemAngle: 18, // Adjust the angle between items
                itemWidth: 0.4, // Adjust the width of each item relative to the circle's radius
                itemHeight: 0.1, // Adjust the height of each item relative to the circle's radius
                physics: BouncingScrollPhysics(), // You can customize the scroll physics
              ),
            ),
            SizedBox(height: 20),
            Text(
              'Selected Item: ${items[selectedIndex]}',
              style: TextStyle(fontSize: 24),
            ),
          ],
        ),
      ),
    );
  }
}

代码说明:

  1. 依赖导入:在pubspec.yaml文件中添加circle_wheel_scroll依赖。

  2. 数据准备:在_MyHomePageState类中,创建一个包含20个字符串项的列表items

  3. UI构建

    • 使用ScaffoldAppBar构建应用的主体框架。
    • 使用Column布局,其中包含一个CircleWheelScroll组件和一个显示当前选中项的Text组件。
    • CircleWheelScroll组件的配置:
      • items:数据源列表。
      • selectedIndex:当前选中的项的索引。
      • itemBuilder:用于构建每个项的Widget。
      • onItemSelected:选中项改变时的回调函数。
      • itemAngle:每个项之间的角度,可以调整以改变项的分布密度。
      • itemWidthitemHeight:每个项的宽度和高度相对于圆半径的比例,可以调整以改变项的大小。
      • physics:滚动物理特性,这里使用了BouncingScrollPhysics,可以根据需要自定义。
  4. 状态管理:使用setState更新选中项的索引,并刷新UI。

这个示例展示了如何使用circle_wheel_scroll插件创建一个简单的圆形轮盘滚动视图,你可以根据实际需求进一步自定义和扩展。

回到顶部