Flutter垂直选择器插件vertical_picker的使用

Flutter垂直选择器插件vertical_picker的使用

vertical_picker 是一个Flutter包,可以用于实现垂直列表项选择器。用户可以通过滚动垂直列表来选择项目。

开始使用

首先,需要在你的Flutter项目中导入这个包:

import 'package:vertical_picker/vertical_picker.dart';

使用方法

你可以像使用其他Widget一样使用 VerticalPicker。例如,你可以将其作为 SizedBox 或其他Widget的子组件(建议将其嵌套在 SizedBoxContainer 等组件中):

SizedBox(
  height: MediaQuery.of(context).size.height,
  width: MediaQuery.of(context).size.width,
  child: VerticalPicker(
    // 设置每个项目的高度
    itemHeight: MediaQuery.of(context).size.height / 15,

    // 创建项目列表
    items: List.generate(
      10,
      (index) => Center(
        child: Text(index.toString()),
      ),
    ),

    // 当项目被选中时的回调函数
    onSelectedChanged: (indexSelected) {},
  ),
),

可选参数

左边距和右边距

你可以通过 leftMarginrightMargin 参数控制边界大小:

SizedBox(
  height: MediaQuery.of(context).size.height,
  width: MediaQuery.of(context).size.width,
  child: VerticalPicker(
    itemHeight: MediaQuery.of(context).size.height / 15,
    leftMargin: 150,
    rightMargin: 150,
    items: List.generate(
      10,
      (index) => Center(
        child: Text(index.toString()),
      ),
    ),
    onSelectedChanged: (indexSelected) {},
    borderColor: Colors.red,
    borderThickness: 3,
  ),
),

边框颜色

你还可以指定边框的颜色:

borderColor: Colors.red,

循环模式

设置 loop 参数为 true 来启用循环模式:

loop: true,

使用其他小部件作为项目

没有限制必须使用哪种小部件作为项目,你可以使用 TextIconImage 等:

items: List.generate(
  10,
  (index) => Icon(Icons.flutter_dash),
),

一些重要提示

  • 必须将 itemHeight 参数设置得比实际项目稍大一点,以确保项目的最佳对齐。
  • 如果使用 Text 作为项目,最好将 Text 放在 Center 的子组件中,以便文本在可选项目中居中显示。

完整示例代码

以下是一个完整的示例代码,展示了如何使用 VerticalPicker

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: Home(),
    );
  }
}

class Home extends StatelessWidget {
  const Home({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Vertical Picker"),
      ),
      body: SizedBox(
        height: MediaQuery.of(context).size.height,
        width: MediaQuery.of(context).size.width,
        child: VerticalPicker(
          itemHeight: MediaQuery.of(context).size.height / 15,
          leftMargin: 150,
          rightMargin: 150,
          items: List.generate(
            10,
            (index) => Center(
              child: Text(index.toString()),
            ),
          ),
          onSelectedChanged: (indexSelected) {
            print('Selected index: $indexSelected');
          },
          borderColor: Colors.red,
          borderThickness: 3,
          loop: true,
        ),
      ),
    );
  }
}

希望这些信息能帮助你在Flutter应用中成功集成和使用 vertical_picker 插件!


更多关于Flutter垂直选择器插件vertical_picker的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter垂直选择器插件vertical_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用vertical_picker插件的一个示例代码案例。vertical_picker是一个用于创建垂直选择器的Flutter插件。

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

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

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

接下来,你可以在你的Flutter应用中使用VerticalPicker组件。以下是一个完整的示例代码,展示如何使用VerticalPicker来创建一个简单的垂直选择器:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Vertical Picker 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.generate(20, (index) => 'Item $index');
  String selectedItem = 'Item 0';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Vertical Picker Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Selected Item: $selectedItem',
              style: TextStyle(fontSize: 24),
            ),
            SizedBox(height: 20),
            VerticalPicker(
              data: items,
              itemExtent: 50.0,
              onValueChanged: (value) {
                setState(() {
                  selectedItem = value;
                });
              },
              selectedIndex: items.indexOf(selectedItem),
              decoration: BoxDecoration(
                border: Border.all(color: Colors.grey),
                borderRadius: BorderRadius.circular(8),
              ),
              itemBuilder: (context, index) {
                return Center(
                  child: Text(
                    items[index],
                    style: TextStyle(color: Colors.black),
                  ),
                );
              },
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  1. 我们创建了一个包含20个字符串项的列表items
  2. 我们使用VerticalPicker组件来显示这个列表,并允许用户选择一个项。
  3. VerticalPickerdata属性接受一个字符串列表,itemExtent属性定义了每个项的高度。
  4. onValueChanged回调函数在用户选择一个新项时被调用,我们在这里更新selectedItem的状态。
  5. selectedIndex属性设置了初始选中的项的索引。
  6. decoration属性允许我们自定义VerticalPicker的外观,比如添加边框和圆角。
  7. itemBuilder属性允许我们自定义每个项的外观,这里我们简单地居中显示文本。

运行这个示例代码,你将看到一个垂直选择器,用户可以通过滑动来选择不同的项,选中的项会显示在顶部的文本中。

回到顶部