Flutter日期选择器插件dgst_selector的使用

Flutter日期选择器插件dgst_selector的使用

提供了与可单选或多选项目列表绑定的自定义TypeAhead。多选时,可以选择以基于id的chips形式显示。

使用方法

首先,我们需要创建一个初始化项列表:

final List<DgstSelectionItem> initItems = [
    const DgstSelectionItem(id: 1, name: 'Item 1'),
    const DgstSelectionItem(id: 2, name: 'Item 2')
];

然后,在你的应用中使用DgstSelector组件:

DgstSelector(
    title: 'Single-Selector', // 单选器标题
    sourceCallback: testCallback(), // 数据源回调
    initialSelectedItems: initItems, // 初始选中的项目
    onSelectedItemsChanged: (value) => print(' > Selected Item Changed < : $value'), // 选中项变化时的回调
)

对于多选器,可以设置dgstSelectorTypeDgstSelectorType.MULTI_SELECTOR

DgstSelector(
    title: 'Multi-Selector', // 多选器标题
    dgstSelectorType: DgstSelectorType.MULTI_SELECTOR, // 设置为多选模式
    sourceCallback: testCallback(), // 数据源回调
    initialSelectedItems: initItems, // 初始选中的项目
    onSelectedItemsChanged: (value) => print(' > Selected Items Changed < : $value'), // 选中项变化时的回调
)

完整示例

以下是一个完整的示例,展示了如何在Flutter应用中使用DgstSelector组件:

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'DgstSelector 测试应用',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  MyHomePage({super.key});

  final List<DgstSelectionItem> initItems = [
    const DgstSelectionItem(id: 1, name: 'Item 1'),
    const DgstSelectionItem(id: 2, name: 'Item 2')
  ];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('DgstSelector 测试应用'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            DgstSelector(
              title: '单选器',
              sourceCallback: testCallback(),
              initialSelectedItems: initItems,
              onSelectedItemsChanged: (value) => print(' > 选中项变化 < : $value'),
            ),
            const SizedBox(height: 10.0),
            DgstSelector(
              title: '多选器',
              dgstSelectorType: DgstSelectorType.MULTI_SELECTOR,
              sourceCallback: testCallback(),
              initialSelectedItems: initItems,
              onSelectedItemsChanged: (value) => print(' > 选中项变化 < : $value'),
            ),
          ],
        ),
      ),
    );
  }

  Future<List<DgstSelectionItem>?> testCallback() async {
    return [for (var i = 0; i < 10; i++) DgstSelectionItem(id: i, name: 'Item $i')];
  }
}

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

1 回复

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


dgst_selector 是一个用于 Flutter 的日期选择器插件,它可以帮助你在应用中轻松地选择一个日期。以下是如何使用 dgst_selector 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  dgst_selector: ^1.0.0  # 请根据实际情况替换为最新版本

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

2. 导入包

在你的 Dart 文件中导入 dgst_selector 包:

import 'package:dgst_selector/dgst_selector.dart';

3. 使用日期选择器

你可以使用 DgstSelector 组件来显示日期选择器。以下是一个简单的示例:

class DatePickerExample extends StatefulWidget {
  [@override](/user/override)
  _DatePickerExampleState createState() => _DatePickerExampleState();
}

class _DatePickerExampleState extends State<DatePickerExample> {
  DateTime? selectedDate;

  Future<void> _selectDate(BuildContext context) async {
    final DateTime? picked = await DgstSelector.showDatePicker(
      context: context,
      initialDate: DateTime.now(),
      firstDate: DateTime(2000),
      lastDate: DateTime(2101),
    );

    if (picked != null && picked != selectedDate) {
      setState(() {
        selectedDate = picked;
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Date Picker Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              selectedDate == null
                  ? 'No date selected'
                  : 'Selected date: ${selectedDate!.toLocal()}',
              style: TextStyle(fontSize: 20),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () => _selectDate(context),
              child: Text('Select Date'),
            ),
          ],
        ),
      ),
    );
  }
}

void main() {
  runApp(MaterialApp(
    home: DatePickerExample(),
  ));
}
回到顶部