Flutter基础选择器插件basic_selector的使用

Flutter基础选择器插件basic_selector的使用

basic_selector 是一个功能强大的 Flutter 插件,用于创建简单且高度可定制的选择器。通过它,您可以轻松实现数字、文本或时间的选择器,并且支持多种配置选项。

使用方法

添加依赖

pubspec.yaml 文件中添加以下依赖:

dependencies:
  basic_selector: ^最新版本号

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

基本用法

数字选择器

import 'package:basic_selector/basic_selector.dart';

// 生成数字列表
static final List<int> _numbers = BasicSelectorHelpers.generateNumbers(end: 10);
int _selectedNumber = 0;

@override
Widget build(BuildContext context) {
  return BasicSelector<int>(
    items: _numbers,
    value: _selectedNumber,
    textFormatter: (item) {
      // 自定义格式化逻辑
      if (item == 1) {
        return '1 item';
      } else {
        return '$item items';
      }
    },
    onChanged: (item) {
      setState(() {
        _selectedNumber = item;
      });
    },
  );
}

文本选择器

import 'package:basic_selector/basic_selector.dart';

// 生成字母列表
static final List<String> _letters = BasicSelectorHelpers.generateAlphabet();

@override
Widget build(BuildContext context) {
  return BasicSelector<String>(
    items: _letters,
    value: 'A',
    textFormatter: (item) {
      return item.toUpperCase(); // 将字母转为大写
    },
    onChanged: (item) {
      print('Selected letter: $item');
    },
  );
}

时间选择器

import 'package:basic_selector/basic_selector.dart';

// 当前选择的时间
TimeOfDay _selectedTime = const TimeOfDay(hour: 0, minute: 0);

@override
Widget build(BuildContext context) {
  return BasicTimeSelector(
    time: _selectedTime,
    currentTime: const TimeOfDay(hour: 13, minute: 30),
    config: const BasicTimeSelectorConfig(showOnlyToCurrentType: true),
    textFormatter: (item) {
      return item.formatted(); // 格式化时间为字符串
    },
    onChanged: (item) {
      setState(() {
        _selectedTime = item;
      });
    },
  );
}

显示时间选择对话框

import 'package:basic_selector/basic_selector.dart';

@override
Widget build(BuildContext context) {
  return FilledButton(
    onPressed: () => BasicTimeSelector.showModalDialog(
      context,
      time: _selectedTime,
    ).then((value) {
      if (value != null) {
        setState(() {
          _selectedTime = value;
        });
        ScaffoldMessenger.of(context)
          ..hideCurrentSnackBar()
          ..showSnackBar(SnackBar(
            content: Text('时间已选择: ${_selectedTime.formatted()}'),
            behavior: SnackBarBehavior.floating,
          ));
      }
    }),
    child: const Text('打开对话框'),
  );
}

辅助方法

generateNumbers

生成一个数字列表,例如:

static final List<int> _numbers = BasicSelectorHelpers.generateNumbers(start: 1, end: 10, step: 2);
// 返回 [1, 3, 5, 7, 9]

generateAlphabet

生成字母表列表:

static final List<String> _alphabet = BasicSelectorHelpers.generateAlphabet();
// 返回 ['A', 'B', 'C', ... , 'Z']

generateTimes

生成时间列表:

static final List<TimeOfDay> _times = BasicSelectorHelpers.generateTimes(minuteStep: 30);
// 返回 [TimeOfDay(0, 0), TimeOfDay(0, 30), TimeOfDay(1, 0), ...]

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

1 回复

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


在Flutter中,basic_selector 是一个基础的选择器插件,通常用于实现简单的选择器功能,比如选择日期、时间、或者自定义选项。虽然Flutter本身提供了许多内置的小部件(如DatePickerTimePicker等),但在某些情况下,你可能需要一个更轻量级或更灵活的选择器插件。

以下是使用basic_selector插件的一个基本示例:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  basic_selector: ^0.1.0  # 请确保使用最新版本

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

2. 导入插件

在你的Dart文件中导入basic_selector插件:

import 'package:basic_selector/basic_selector.dart';

3. 使用BasicSelector

BasicSelector是一个通用的小部件,可以用于显示一个自定义的选择器。你可以通过传递一个选项列表来使用它。

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

class _MyHomePageState extends State<MyHomePage> {
  String _selectedItem = 'Option 1';
  final List<String> _items = ['Option 1', 'Option 2', 'Option 3', 'Option 4'];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Basic Selector Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Selected Item: $_selectedItem'),
            SizedBox(height: 20),
            BasicSelector(
              items: _items,
              selectedItem: _selectedItem,
              onChanged: (String? value) {
                setState(() {
                  _selectedItem = value ?? _selectedItem;
                });
              },
            ),
          ],
        ),
      ),
    );
  }
}

4. 运行应用

现在你可以运行你的Flutter应用,并看到一个简单的选择器。当你选择一个选项时,_selectedItem将会更新,并且界面会重新构建以显示选中的值。

5. 自定义选择器

BasicSelector插件允许你自定义选择器的外观和行为。你可以通过传递不同的参数来调整选择器的样式、布局等。

BasicSelector(
  items: _items,
  selectedItem: _selectedItem,
  onChanged: (String? value) {
    setState(() {
      _selectedItem = value ?? _selectedItem;
    });
  },
  itemBuilder: (BuildContext context, String item) {
    return ListTile(
      title: Text(item),
      trailing: Icon(Icons.arrow_forward),
    );
  },
  style: BasicSelectorStyle(
    backgroundColor: Colors.blueGrey,
    selectedItemColor: Colors.blue,
    unselectedItemColor: Colors.white,
  ),
);
回到顶部