Flutter波斯语日期选择器插件persian_easy_date_picker的使用

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

Flutter波斯语日期选择器插件persian_easy_date_picker的使用

Persian Easy Date Picker 是一个功能丰富且可定制的波斯日期选择器包,适用于Flutter应用程序。它支持各种配置,如自定义颜色、过去和未来的日期选择以及模糊背景,使其非常适合任何波斯日期选择的需求。

特性

  • 可定制UI: 可以更改边框半径、颜色、文本等。
  • 步进导航: 选项用于显示年、月和日的选择步骤。
  • 限制过去和未来的日期选择: 配置用户是否可以选择过去的或未来的日期。
  • 模糊背景: 为对话框添加时尚的模糊背景。
  • 错误处理: 自定义回调来处理错误。

安装

在你的 pubspec.yaml 文件中添加以下行:

dependencies:
  persian_easy_date_picker: latest_version

然后运行:

flutter pub get

使用

以下是如何在Flutter项目中使用波斯日期选择器的示例:

import 'package:persian_easy_date_picker/persian_easy_date_picker.dart';

void selectDate(BuildContext context) async {
  String? selectedDate = await PersianDatePicker.pick(
    context: context,
    onError: (error) {
      print('Error: $error');
    },
    showStepper: true,
    borderRadius: 7.0,
    blurredBackground: true,
    startYear: 1380,
    endYear: 1408,
    autoPick: false,
  );

  if (selectedDate != null) {
    print('Selected Date: $selectedDate');
  }
}

参数

pick 函数接受多个参数进行定制:

参数 类型 默认值 描述
context BuildContext 必填 显示对话框的构建上下文。
onError Function(String) 必填 错误处理回调函数。
showStepper bool true 启用或禁用步进导航。
startYear int 1290 可选的最早年份。
endYear int 1480 可选的最晚年份。
title String "انتخاب تاریخ" 选择器对话框的标题。
borderRadius double 8.0 对话框边框的圆角半径。
backgroundColor Color Color(0xFFFFFFFF) 选择器对话框的背景色。
textColor Color Color(0xFF000000) 选择器对话框的文本颜色。
canSelectPastTime bool true 是否可以选择过去的日期。
canSelectFutureTime bool true 是否可以选择未来的日期。
blurredBackground bool false 添加模糊效果到背景。
autoPick bool true 自动选择第一个有效的选择。
nextButtonColor Color Colors.blue "下一步"按钮的颜色。
nextButtonText String "ادامه" "下一步"按钮的文本。
doneButtonText String "پایان" "完成"按钮的文本。
cancelButtonColor Color Colors.red "取消"按钮的颜色。
cancelButtonText String "لغو" "取消"按钮的文本。

示例

要使用此包,可以将日期选择逻辑包装在一个小部件或函数中:

ElevatedButton(
  onPressed: () => selectDate(context),
  child: Text('Pick Date'),
);

错误处理

onError 回调处理任何错误或无效的选择,例如:

  • canSelectPastTimefalse 时选择过去的日期。
  • canSelectFutureTimefalse 时选择未来的日期。
  • 在未做出选择的情况下关闭对话框。

示例:

onError: (error) {
  print('Error: $error');
}

示例代码

以下是完整的示例代码:

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const ExampleWidget(),
    );
  }
}

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

  [@override](/user/override)
  State<ExampleWidget> createState() => _ExampleWidgetState();
}

class _ExampleWidgetState extends State<ExampleWidget> {
  String date = 'Nothing selected yet!';

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () async {
                String? selectedDate = await PersianDatePicker.pick(
                  context: context,
                  onError: (e) {
                    print('Void call back text : $e');
                  },
                  showStepper: true,
                  borderRadius: 7,
                  blurredBackground: true,
                  startYear: 1380,
                  endYear: 1408,
                  autoPick: false,
                );
                setState(() {
                  if (selectedDate != null) {
                    date = selectedDate;
                  }
                });
              },
              child: const Text('Pick Shamsi Date'),
            ),
            const SizedBox(height: 30,),
            Text(date),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何使用Flutter中的persian_easy_date_picker插件的示例代码。这个插件用于在Flutter应用中实现波斯语(波斯历)日期选择器。

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

dependencies:
  flutter:
    sdk: flutter
  persian_easy_date_picker: ^latest_version  # 请替换为最新版本号

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

接下来,你可以在你的Flutter应用中使用PersianEasyDatePicker。以下是一个简单的示例代码:

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

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

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

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

class _MyHomePageState extends State<MyHomePage> {
  DateTime? selectedDate;

  void _selectDate(BuildContext context, DateTime? picked) {
    setState(() {
      selectedDate = picked;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Persian Date Picker Demo'),
      ),
      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: () async {
                final DateTime? picked = await showPersianDatePicker(
                  context: context,
                  initialDate: selectedDate ?? DateTime.now(),
                  firstDate: DateTime(1300),
                  lastDate: DateTime(1500),
                );
                _selectDate(context, picked);
              },
              child: Text('Select Date'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  1. 我们创建了一个简单的Flutter应用,包含一个主页面MyHomePage
  2. MyHomePage包含一个状态变量selectedDate,用于存储用户选择的日期。
  3. _selectDate方法用于更新selectedDate状态。
  4. showPersianDatePicker函数用于显示波斯语日期选择器对话框。你可以通过initialDatefirstDatelastDate参数来设置初始日期和可选日期范围。
  5. 一个ElevatedButton用于触发日期选择器的显示。

运行这个示例应用,点击“Select Date”按钮将打开一个波斯语日期选择器,用户可以选择日期,选择的日期将显示在按钮下方。

注意:DateTime(1300)DateTime(1500)是波斯历的年份,你可以根据需要调整这些值。

回到顶部