Flutter年份选择器插件flutter_year_picker的使用

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

Flutter年份选择器插件flutter_year_picker的使用

简单使用此插件来选择年份。

功能

flutter_year_picker 可用于仅选择年份。

使用

以下是一个完整的示例,展示了如何在 Flutter 应用中使用 flutter_year_picker 插件。

import 'package:flutter/material.dart';
import 'package:logger/logger.dart'; // 引入日志库,方便调试

// 定义一个函数来展示年份选择器
Future<void> showYearPicker(BuildContext context) async {
  // 显示对话框
  return showDialog(
    context: context,
    builder: (context) {
      final Size size = MediaQuery.of(context).size; // 获取屏幕尺寸
      return AlertDialog(
        title: Column(
          children: const [
            Text('选择年份'), // 设置标题
            Divider(thickness: 1,) // 添加分隔线
          ],
        ),
        contentPadding: const EdgeInsets.all(10), // 设置内容内边距
        content: SizedBox(
          height: size.height / 3, // 设置内容高度为屏幕高度的三分之一
          width: size.width, // 设置内容宽度为屏幕宽度
          child: GridView.count(
            physics: const BouncingScrollPhysics(), // 使用反弹滚动效果
            crossAxisCount: 3, // 每行显示3个年份
            children: [
              // 生成从2022年到1900年的年份数组
              ...List.generate(
                123,
                (index) => InkWell(
                  onTap: () {
                    // 记录选中的年份并关闭对话框
                    Logger().d("Selected Year ==> ${(2022 - index).toString()}");
                    Navigator.pop(context);
                  },
                  child: Padding(
                    padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 0),
                    child: Chip(
                      label: Container(
                        padding: const EdgeInsets.all(5),
                        child: Text(
                          (2022 - index).toString(), // 显示年份
                        ),
                      ),
                    ),
                  ),
                ),
              ),
            ],
          ),
        ),
      );
    },
  );
}

在应用中调用 showYearPicker

你可以在需要显示年份选择器的地方调用上述定义的 showYearPicker 函数。例如:

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('年份选择器示例'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 当按钮被点击时显示年份选择器
            showYearPicker(context);
          },
          child: Text('选择年份'),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用flutter_year_picker插件的示例代码。这个插件允许你轻松地在应用中添加一个年份选择器。

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

dependencies:
  flutter:
    sdk: flutter
  flutter_year_picker: ^x.y.z  # 替换为最新版本号

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

接下来,你可以在你的Flutter应用中使用这个插件。下面是一个简单的示例,展示了如何使用YearPicker小部件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Year Picker Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: YearPickerDemo(),
    );
  }
}

class YearPickerDemo extends StatefulWidget {
  @override
  _YearPickerDemoState createState() => _YearPickerDemoState();
}

class _YearPickerDemoState extends State<YearPickerDemo> {
  int selectedYear = DateTime.now().year;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Year Picker Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Selected Year: $selectedYear',
              style: TextStyle(fontSize: 24),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                final int? pickedYear = await showYearPicker(
                  context: context,
                  initialYear: selectedYear,
                  firstYear: 1900,
                  lastYear: 2100,
                  locale: Localizations.localeOf(context),
                );
                if (pickedYear != null) {
                  setState(() {
                    selectedYear = pickedYear;
                  });
                }
              },
              child: Text('Pick Year'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  1. MyApp类是我们的根应用小部件。
  2. YearPickerDemo类是一个有状态的小部件,它保存了当前选中的年份。
  3. YearPickerDemobuild方法中,我们显示当前选中的年份,并提供一个按钮来打开年份选择器。
  4. showYearPicker函数被用来显示年份选择器对话框。它返回一个Future<int?>,即用户选择的年份(如果用户取消了选择,则返回null)。
  5. 当用户选择一个年份后,我们使用setState方法来更新UI,显示新的年份。

确保你导入了必要的包,并根据需要调整年份范围和其他参数。这个示例提供了一个基本的框架,你可以根据需要进行扩展和修改。

回到顶部