Flutter节假日识别插件holiday_id的使用

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

Flutter节假日识别插件holiday_id的使用

简介

holiday_id 是一个Flutter包,包含了印度尼西亚的国家节假日和休息日信息。所有数据直接来源于印度尼西亚政府(Kementerian Koordinator Bidang Pembangunan Manusia Dan Kebudayaan Republik Indonesia)的官方文件。

安装

在你的Flutter项目的 pubspec.yaml 文件中添加 holiday_id 依赖:

dependencies:
  holiday_id: ^<latest-version>

请将 <latest-version> 替换为最新的版本号。你可以在 pub.dev 上查找最新版本。

使用方法

首先,导入 holiday_id 包,然后调用 getHolidays 方法来获取节假日信息。以下是一个完整的示例代码,展示了如何在Flutter应用中使用 holiday_id 插件。

完整示例Demo

import 'package:flutter/material.dart';
import 'package:holiday_id/holiday_id.dart';
import 'package:intl/intl.dart';

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

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

  [@override](/user/override)
  State<MainApp> createState() => _MainAppState();
}

class _MainAppState extends State<MainApp> {
  late List<HolidayModel> _holidays;
  late DateFormat _f;

  [@override](/user/override)
  void initState() {
    super.initState();

    // 获取2025年的节假日信息
    _holidays = HolidayId().getHolidays(
      filterType: HolidayType.holiday, // 只获取节假日
      filterYear: 2025, // 指定年份
    );

    // 初始化日期格式化器
    _f = DateFormat.yMMMMEEEEd(); // 格式化日期为 "年月日星期"
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('2025年印度尼西亚节假日'),
        ),
        body: ListView.builder(
          itemCount: _holidays.length,
          itemBuilder: (context, index) {
            var holiday = _holidays[index];
            return ListTile(
              leading: holiday.type == HolidayType.collectiveLeave
                  ? const Icon(Icons.group) // 集体假期显示图标
                  : null,
              title: Text(holiday.name), // 节假日名称
              subtitle: Text(_f.format(holiday.date)), // 节假日日期
            );
          },
        ),
      ),
    );
  }
}

更多关于Flutter节假日识别插件holiday_id的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter节假日识别插件holiday_id的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用holiday_id插件的示例代码。holiday_id插件用于识别节假日,并获取节假日的相关信息。首先,你需要确保你的Flutter项目已经添加了holiday_id依赖。

  1. pubspec.yaml文件中添加依赖
dependencies:
  flutter:
    sdk: flutter
  holiday_id: ^最新版本号  # 请替换为最新的版本号

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

  1. 导入并使用holiday_id插件

以下是一个完整的示例代码,展示如何使用holiday_id插件来获取并显示节假日信息。

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List<Holiday> _holidays = [];

  @override
  void initState() {
    super.initState();
    _fetchHolidays();
  }

  Future<void> _fetchHolidays() async {
    // 获取当前年份的节假日信息
    final int currentYear = DateTime.now().year;
    final HolidayID holidayID = HolidayID();
    try {
      final List<Holiday> holidays = await holidayID.getHolidays(year: currentYear);
      setState(() {
        _holidays = holidays;
      });
    } catch (e) {
      print("Error fetching holidays: $e");
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Holiday ID Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Holiday ID Demo'),
        ),
        body: _holidays.isEmpty
            ? Center(child: CircularProgressIndicator())
            : ListView.builder(
                itemCount: _holidays.length,
                itemBuilder: (context, index) {
                  final Holiday holiday = _holidays[index];
                  return ListTile(
                    title: Text('${holiday.name} (${holiday.date})'),
                    subtitle: Text(holiday.description ?? 'No description available'),
                  );
                },
              ),
      ),
    );
  }
}
  1. 解释代码
  • 依赖导入:首先,在pubspec.yaml文件中添加holiday_id依赖。
  • 主函数main()函数运行应用。
  • 状态管理:使用StatefulWidget_MyAppState来管理应用的状态。
  • 初始化状态:在initState()方法中调用_fetchHolidays()函数来获取节假日信息。
  • 获取节假日信息_fetchHolidays()函数使用HolidayID类的getHolidays方法来获取当前年份的节假日信息,并将结果保存到_holidays列表中。
  • 构建UI:在build()方法中,根据_holidays列表是否为空来显示加载指示器或节假日信息列表。节假日信息列表使用ListView.builder构建,每个节假日信息用ListTile显示。

这个示例展示了如何使用holiday_id插件来获取和显示节假日信息。你可以根据需要进一步扩展和定制这个示例。

回到顶部