Flutter伊斯兰日期选择器插件hijri_picker的使用

Flutter伊斯兰日期选择器插件hijri_picker的使用

Hijri Date Picker Islamic日期选择器

Flutter Widget & Picker 用于选择伊斯兰(希吉来历)日期。

Screenshots 图片

图片 图片 图片 图片 图片 图片 图片 图片 图片 图片 图片 图片

Simple Usage 简单使用方法

MaterialApp 中添加本地化:

localizationsDelegates: [
  GlobalMaterialLocalizations.delegate,
  GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
  const Locale('ar', 'SA'),
],

国际化的详细信息可以参考 国际化的Flutter应用

调用 showHijriDatePicker 方法:

final HijriCalendar? picked = await showHijriDatePicker(
  context: context,
  initialDate: selectedDate,
  lastDate: HijriCalendar()
    ..hYear = 1442
    ..hMonth = 9
    ..hDay = 25,
  firstDate: HijriCalendar()
    ..hYear = 1438
    ..hMonth = 12
    ..hDay = 25,
  initialDatePickerMode: DatePickerMode.day,
);

As Widget 使用为组件

HijriMonthPicker 组件嵌入到界面中:

HijriMonthPicker(
  lastDate: HijriCalendar()
    ..hYear = 1445
    ..hMonth = 9
    ..hDay = 25,
  firstDate: HijriCalendar()
    ..hYear = 1438
    ..hMonth = 12
    ..hDay = 25,
  onChanged: (HijriCalendar value) {
    setState(() {
      selectedDate = selectedDate;
    });
  },
  selectedDate: selectedDate,
)

示例代码

以下是一个完整的示例代码,展示了如何使用 hijri_picker 插件:

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:hijri/hijri_calendar.dart';
import 'package:hijri_picker/hijri_picker.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter Demo',
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      supportedLocales: [
        const Locale('ar', 'SA'),
      ],
      debugShowCheckedModeBanner: false,
      theme: new ThemeData(
        primaryColor: Colors.brown,
        accentColor: Colors.green,
        brightness: Brightness.dark,
      ),
      home: MyHomePage(title: "Umm Alqura Calendar"),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  [@override](/user/override)
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  var selectedDate = new HijriCalendar.now();

  [@override](/user/override)
  Widget build(BuildContext context) {
    HijriCalendar.setLocal(Localizations.localeOf(context).languageCode);
    return new Scaffold(
      appBar: new AppBar(
        title: new Text(widget.title),
      ),
      body: new Padding(
        padding: const EdgeInsets.all(8.0),
        child: new Center(
          child: new Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              new Text(
                '${selectedDate.toString()}',
                style: Theme.of(context).textTheme.headline5,
              ),
              new Text(
                '${selectedDate.fullDate()}',
                style: Theme.of(context).textTheme.headline5,
              ),
            ],
          ),
        ),
      ),
      floatingActionButton: new FloatingActionButton(
        onPressed: () => _selectDate(context),
        tooltip: 'Pick Date',
        child: new Icon(Icons.event),
      ),
    );
  }

  Future<Null> _selectDate(BuildContext context) async {
    final HijriCalendar? picked = await showHijriDatePicker(
      context: context,
      initialDate: selectedDate,
      lastDate: new HijriCalendar()
        ..hYear = 1445
        ..hMonth = 9
        ..hDay = 25,
      firstDate: new HijriCalendar()
        ..hYear = 1438
        ..hMonth = 12
        ..hDay = 25,
      initialDatePickerMode: DatePickerMode.day,
    );
    if (picked != null)
      setState(() {
        selectedDate = picked;
      });
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter应用中使用hijri_picker插件来实现伊斯兰日期选择器的示例代码。这个插件允许用户选择一个伊斯兰(Hijri)日期。

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

dependencies:
  flutter:
    sdk: flutter
  hijri_picker: ^最新版本号 # 请替换为当前最新版本号

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

接下来,在你的Flutter应用中,你可以按照以下方式使用hijri_picker

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

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

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

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

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Hijri 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: () async {
                final DateTime? pickedDate = await showHijriDatePicker(
                  context: context,
                  initialDate: selectedDate ?? DateTime.now(),
                  firstDate: DateTime(1300), // 伊斯兰历法的起始年份,这里可以调整
                  lastDate: DateTime(1500),  // 可以根据需求调整
                );
                if (pickedDate != null && pickedDate != selectedDate) {
                  setState(() {
                    selectedDate = pickedDate;
                  });
                }
              },
              child: Text('Select Hijri Date'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. 导入必要的包:我们导入了flutter/material.darthijri_picker/hijri_picker.dart
  2. 创建主应用MyApp是一个无状态组件,它定义了应用的主题和主页。
  3. 创建主页MyHomePage是一个有状态组件,它包含一个用于显示选定日期的文本和一个按钮。
  4. 显示日期选择器:当用户点击按钮时,会调用showHijriDatePicker函数,显示一个伊斯兰日期选择器。
  5. 更新状态:用户选择日期后,我们更新组件的状态以显示新的日期。

请确保你根据hijri_picker的最新文档调整代码,因为插件的API可能会随着版本更新而变化。你可以通过查看插件的官方仓库或pub.dev页面来获取最新的信息和示例。

回到顶部