Flutter滚动选择器插件scroll_picker的使用

Flutter滚动选择器插件scroll_picker的使用

scroll_picker 是一个帮助从字符串数组或列表中选择选项的插件。它在你的视图顶部显示一个轮盘滚动视图,类似于模态窗口。当前选择项会以光标的形式显示。通过点击“确认”按钮或直接点击所需项目来选择新选项。所选项目通过回调函数返回。

特性

  • 易于实现:从字符串列表中选择一个项目。
  • 支持多行项目:默认为5行,也可以选择7行或9行。
  • 包含一个函数:从十六进制字符串(如#F0605Ff0)返回Color.fromRGBO颜色值。
  • YouTube链接视频演示

开始使用

pubspec.yaml文件中添加:

flutter pub add scroll_picker

导入包:

import 'package:scroll_picker/scroll_picker.dart';

使用步骤

  1. 声明本地变量

    List<String> options = ['Apple', 'Kiwi', 'Tomato', 'Pear'];
    String? currentOption;
    
  2. 创建回调函数

    void callbackString(val) {
      setState(() {
        currentOption = val;
      });
    }
    
  3. 初始化当前选项

    [@override](/user/override)
    void initState() {
      setState(() {
        currentOption = currentOption ?? options[0];
      });
      super.initState();
    }
    
  4. 使用ScrollPicker组件

    Column(
      children: [
        ScrollPicker(
          dataArray: options,
          currentSelection: currentOption!,
          fontSizeList: 20,
          fontSizeTitle: 18,
          callback: callbackString,
        ),
      ],
    )
    

完整示例

以下是一个完整的示例代码,展示了如何在Flutter应用中使用scroll_picker插件:

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

void main() => runApp(const ScrollPickerExample());

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      debugShowCheckedModeBanner: false,
      home: ScrollPickerMain(),
    );
  }
}

class ScrollPickerMain extends StatefulWidget {
  const ScrollPickerMain({super.key});

  [@override](/user/override)
  State<ScrollPickerMain> createState() => _ScrollPickerMainState();
}

class _ScrollPickerMainState extends State<ScrollPickerMain> {
  // 水果选择器示例
  List<String> options = ['Apple', 'Kiwi', 'Blueberry', 'Mango', 'Orange', 'Pear'];
  String? currOption;

  void callbackOption(value) {
    setState(() {
      currOption = value;
    });
  }

  // 饮料选择器示例
  List<String> drinks = ['pick drink', 'Coke', 'Diet Coke', 'Pepsi', 'Dr Pepper', 'Sprite', 'Pear'];
  String? currentDrink;

  void callbackDrink(value) {
    setState(() {
      currentDrink = value;
    });
  }

  [@override](/user/override)
  void initState() {
    setState(() {
      currOption = currOption ?? options[0];
      currentDrink = currentDrink ?? drinks[0];
    });
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Scroll Picker, String list')),
      body: Container(
        width: double.infinity,
        child: Column(
          mainAxisAlignment: MainAxisAlignment.start,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            const SizedBox(height: 50),

            // 水果选择器
            Container(
              padding: const EdgeInsets.all(5),
              child: ScrollPicker(
                dataArray: options,
                currentSelection: currOption!,
                fontSizeList: 20,
                fontSizeTitle: 18,
                callback: callbackOption,
              ),
            ),

            const SizedBox(height: 50),

            // 饮料选择器
            Container(
              decoration: BoxDecoration(
                color: stringToRGBO('#106070f0'),
                borderRadius: BorderRadius.circular(5),
              ),
              padding: const EdgeInsets.all(5),
              child: ScrollPicker(
                dataArray: drinks,
                currentSelection: currentDrink!,
                fontSizeList: 20,
                fontSizeTitle: 18,
                callback: callbackDrink,
                colorTextDisplay: '#FFFFFFff',
                scrollLines: 7,
              ),
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


scroll_picker 是一个用于 Flutter 的滚动选择器插件,它允许你创建一个可以滚动的选择器,用户可以通过滚动来选择一个值。这个插件通常用于需要用户从一系列选项中选择一个的场景,比如选择日期、时间、或其他自定义选项。

安装

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

dependencies:
  flutter:
    sdk: flutter
  scroll_picker: ^1.0.0  # 请使用最新版本

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

基本用法

以下是一个简单的示例,展示如何使用 scroll_picker 来创建一个滚动选择器:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Scroll Picker Example'),
        ),
        body: Center(
          child: ScrollPicker(
            items: List.generate(100, (index) => index.toString()),
            selectedIndex: 50,
            onChanged: (value) {
              print('Selected value: $value');
            },
          ),
        ),
      ),
    );
  }
}

参数说明

  • items: 一个包含所有选项的列表。通常是一个字符串列表,但也可以是其他类型的列表。
  • selectedIndex: 初始选中的索引。
  • onChanged: 当用户滚动选择器并选择了一个新值时触发的回调函数。回调函数会传递当前选中的值。

自定义样式

你可以通过 ScrollPicker 的构造函数中的其他参数来自定义选择器的样式,例如:

  • itemExtent: 每个选项的高度。
  • controller: 用于控制滚动位置的 ScrollController
  • decoration: 选择器的装饰,例如背景颜色、边框等。

示例代码

ScrollPicker(
  items: List.generate(100, (index) => 'Item $index'),
  selectedIndex: 50,
  itemExtent: 50.0,
  onChanged: (value) {
    print('Selected value: $value');
  },
  decoration: BoxDecoration(
    color: Colors.grey[200],
    borderRadius: BorderRadius.circular(10),
  ),
)
回到顶部