AD BS Calendar Flutter (ad_bs_calendar)

A comprehensive Bikram Sambat (BS) and Gregorian (AD) DatePicker and Converter package for Flutter.

Supports dual AD and BS calendars, localized English and Nepali numerals/formatting, popover/modal date picking, and date conversion.

Features

  • Dual Calendar Support: Switch seamlessly between Gregorian (AD) and Bikram Sambat (BS) calendars.
  • Localization: Full English (en-US) and Nepali (ne-NP) language and numeral support (0-9 $\leftrightarrow$ ०-९).
  • DatePicker Widget: Responsive modal date picker input component (AdBsDatePicker).
  • Date Converter Widget: Standalone date conversion widget with customizable output format options (AdBsDateConverter).
  • Type-Safe: Written in 100% sound null-safe Dart.

Installation

Add dependency in your Flutter project's pubspec.yaml:

dependencies:
  ad_bs_calendar:
    path: ../calendar/ad_bs_calendar  # Or git repository / pub package

Then run:

flutter pub get

Usage

1. Initialize Dataset

Before using date conversion functions, initialize the dataset once in main():

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await AdBsConverter.init();
  runApp(const MyApp());
}

2. DatePicker Widget (AdBsDatePicker)

AdBsDatePicker(
  value: '2025-04-14',
  calendarType: CalendarType.bs,
  language: CalendarLanguage.en,
  onDateSelect: (date) {
    print("Selected AD Date: $date");
  },
)

3. Date Converter Widget (AdBsDateConverter)

AdBsDateConverter(
  initialLanguage: CalendarLanguage.en,
  defaultFormat: 'YYYY-MM-DD',
  onDateChange: (convertedDate, targetType) {
    print("Converted date: $convertedDate (${targetType.name})");
  },
)

4. Date Conversion Functions (AdBsConverter)

// AD -> BS
String bsDate = AdBsConverter.convertDate('2025-04-14', CalendarType.bs); // "2082-01-01"

// BS -> AD
String adDate = AdBsConverter.convertDate('2082-01-01', CalendarType.ad); // "2025-04-14"

// Format with Nepali numerals & month names
String formatted = AdBsConverter.convertDate(
  '2025-04-14',
  CalendarType.bs,
  format: 'DD MMMM, YYYY',
  lang: CalendarLanguage.ne,
); // "०१ बैशाख, २०८२"

License

MIT © Pradip Parajuli