Flutter日期选择插件month_year_picker2的使用
Flutter日期选择插件month_year_picker2的使用
month_year_picker2
是一个受 Flutter 的日期选择器设计启发的月份/年份选择器。它允许用户方便地选择月份和年份。
快速开始
以下是使用 month_year_picker2
的步骤:
-
打开你的
pubspec.yaml
文件,并添加以下依赖项:month_year_picker2: ^0.3.0+1
或者在终端中运行以下命令来添加该依赖项:
flutter pub add month_year_picker2
-
运行
flutter pub get
来获取新添加的依赖项。 -
在你的代码中导入
month_year_picker2
库:import 'package:month_year_picker2/month_year_picker2.dart';
此外,确保你的
MaterialApp
中包含以下localizationsDelegates
:MaterialApp( localizationsDelegates: [ GlobalMaterialLocalizations.delegate, MonthYearPickerLocalizations.delegate, ], )
-
在代码中使用
month_year_picker2
:final selected = await showMonthYearPicker( context: context, initialDate: DateTime.now(), firstDate: DateTime(2019), lastDate: DateTime(2023), );
参数
参数名称 | 描述 |
---|---|
context |
必须不为 null 。将传递给内部的 showDialog 函数调用。 |
initialDate |
必须不为 null 并且必须在 firstDate 和 lastDate 之间。initialDate 将被截断为其 year 和 month 组件。当月/年选择器首次显示时,它将显示 initialDate 的月份/年份,并且 initialDate 被选中。 |
firstDate |
必须不为 null 。firstDate 将被截断为其 year 和 month 组件。这是最早的允许月份/年份。 |
lastDate |
必须不为 null 。lastDate 将被截断为其 year 和 month 组件。这是最新的允许月份/年份。 |
selectableMonthYearPredicate |
可以为 null 。提供完全控制哪些月份/年份可以被选中的函数。如果提供,则只有 selectableMonthYearPredicate 返回 true 的月份/年份才能被选中。 |
locale |
可以为 null 。如果提供,将用于设置月/年选择器的区域设置。否则,默认为由 Localizations 提供的环境区域设置。 |
useRootNavigator |
可以为 null 。将传递给内部的 showDialog 函数调用。 |
routeSettings |
可以为 null 。将传递给内部的 showDialog 函数调用。 |
textDirection |
可以为 null 。如果提供,将用于设置月/年选择器的文本方向。否则,默认为由 Directionality 提供的环境文本方向。 |
builder |
可以为 null 。此参数可用于包装对话框小部件的父小部件。 |
initialMonthYearPickerMode |
必须不为 null 。可以用来使年份选择器最初出现在 MonthYearPickerMode.year 模式下。默认为 MonthYearPickerMode.month 模式。 |
截图
模式 | 截图 |
---|---|
竖屏模式下的月份选择器(默认区域) | ![]() |
竖屏模式下的年份选择器(默认区域) | ![]() |
竖屏模式下的月份选择器(马来语区域) | ![]() |
竖屏模式下的年份选择器(马来语区域) | ![]() |
竖屏模式下的月份选择器(阿拉伯语区域) | ![]() |
竖屏模式下的年份选择器(阿拉伯语区域) | ![]() |
横屏模式下的月份选择器(默认区域) | ![]() |
横屏模式下的年份选择器(默认区域) | ![]() |
横屏模式下的月份选择器(马来语区域) | ![]() |
横屏模式下的年份选择器(马来语区域) | ![]() |
横屏模式下的月份选择器(阿拉伯语区域) | ![]() |
横屏模式下的年份选择器(阿拉伯语区域) | ![]() |
构建源码
依赖项
- Dart SDK 版本 3.0.0 或更新。
- Flutter SDK 版本 3.10 或更新。
步骤
- 将此 Git 仓库克隆到您的机器上。
- 运行
.\gen_l10n.ps1
以重新生成本地化字符串。
功能与错误报告
如需报告功能请求或错误,请前往 问题追踪器。
许可证
该项目采用 MIT 许可证。详细信息请参见 许可证文件。
完整示例
以下是一个完整的示例代码,展示了如何在 Flutter 应用程序中使用 month_year_picker2
:
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:intl/intl.dart';
import 'package:month_year_picker2/month_year_picker2.dart';
void main() {
runApp(const ExampleApp());
}
class ExampleApp extends StatelessWidget {
const ExampleApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return const MaterialApp(
title: 'Month Year Picker Example',
home: MyHomePage(),
localizationsDelegates: [
GlobalWidgetsLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
MonthYearPickerLocalizations.delegate,
],
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
DateTime? _selected;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Month Year Picker Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (_selected == null)
const Text('No month year selected.')
else
Text(DateFormat().add_yM().format(_selected!)),
TextButton(
child: const Text('DEFAULT LOCALE'),
onPressed: () => _onPressed(context: context),
),
TextButton(
child: const Text('BAHASA MALAYSIA'),
onPressed: () => _onPressed(context: context, locale: 'ms'),
),
TextButton(
child: const Text('اللغة العربية'),
onPressed: () => _onPressed(context: context, locale: 'ar'),
),
],
),
),
);
}
Future<void> _onPressed({
required BuildContext context,
String? locale,
}) async {
final localeObj = locale != null ? Locale(locale) : null;
final selected = await showMonthYearPicker(
context: context,
initialDate: _selected ?? DateTime.now(),
firstDate: DateTime(2019),
lastDate: DateTime(2030),
locale: localeObj,
);
if (selected != null) {
setState(() {
_selected = selected;
});
}
}
}
更多关于Flutter日期选择插件month_year_picker2的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter日期选择插件month_year_picker2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
month_year_picker2
是一个用于 Flutter 的日期选择插件,它允许用户选择月份和年份,而不是具体的日期。这个插件非常适合在只需要选择月份和年份的场景中使用。以下是使用 month_year_picker2
插件的步骤和示例代码。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 month_year_picker2
插件的依赖:
dependencies:
flutter:
sdk: flutter
month_year_picker2: ^0.2.0 # 请检查最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 month_year_picker2
插件:
import 'package:month_year_picker2/month_year_picker2.dart';
3. 使用 MonthYearPicker
你可以使用 MonthYearPicker
来显示一个月份和年份的选择器。以下是一个简单的示例,展示如何在按钮点击时弹出月份和年份选择器,并获取用户选择的月份和年份。
import 'package:flutter/material.dart';
import 'package:month_year_picker2/month_year_picker2.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: MonthYearPickerExample(),
);
}
}
class MonthYearPickerExample extends StatefulWidget {
[@override](/user/override)
_MonthYearPickerExampleState createState() => _MonthYearPickerExampleState();
}
class _MonthYearPickerExampleState extends State<MonthYearPickerExample> {
DateTime? _selectedDate;
Future<void> _selectMonthYear(BuildContext context) async {
final DateTime? picked = await showMonthYearPicker(
context: context,
initialDate: _selectedDate ?? DateTime.now(),
firstDate: DateTime(2020),
lastDate: DateTime(2030),
);
if (picked != null && picked != _selectedDate) {
setState(() {
_selectedDate = picked;
});
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Month Year Picker Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
_selectedDate == null
? 'No date chosen!'
: 'Selected: ${_selectedDate!.month}/${_selectedDate!.year}',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () => _selectMonthYear(context),
child: Text('Select Month and Year'),
),
],
),
),
);
}
}