save_points_intl 1.0.1 copy "save_points_intl: ^1.0.1" to clipboard
save_points_intl: ^1.0.1 copied to clipboard

A comprehensive, modular, zero-dependency date/time library for Flutter with 7 languages, 50+ functions, and smart formatting.

example/main.dart

/// Example demonstrating the save_points_intl package
///
/// This example shows how to use various date and time formatting functions
/// from the save_points_intl library.
///
/// Run this example with:
/// ```bash
/// flutter run -d chrome
/// ```
library;

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

/// Main entry point for the example application
void main() {
  runApp(const ExampleApp());
}

/// Example application demonstrating save_points_intl features
class ExampleApp extends StatelessWidget {
  /// Creates an instance of [ExampleApp]
  const ExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Save Points Intl Example',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const ExampleHomePage(),
    );
  }
}

/// Home page demonstrating various date/time formatting features
class ExampleHomePage extends StatelessWidget {
  /// Creates an instance of [ExampleHomePage]
  const ExampleHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    final now = DateTime.now();
    final yesterday = now.subtract(const Duration(days: 1));
    final tomorrow = now.add(const Duration(days: 1));
    final lastWeek = now.subtract(const Duration(days: 7));
    final nextMonth = DateTime(now.year, now.month + 1, now.day);

    return Scaffold(
      appBar: AppBar(
        title: const Text('Save Points Intl Example'),
      ),
      body: SingleChildScrollView(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            _buildSection(
              context,
              'Date Formatting',
              [
                _buildExample(
                  'Short Date',
                  DateFormatters.formatDateShort(now),
                  'DateFormatters.formatDateShort(DateTime.now())',
                ),
                _buildExample(
                  'Medium Date',
                  DateFormatters.formatDateMedium(now),
                  'DateFormatters.formatDateMedium(DateTime.now())',
                ),
                _buildExample(
                  'Long Date',
                  DateFormatters.formatDateLong(now),
                  'DateFormatters.formatDateLong(DateTime.now())',
                ),
                _buildExample(
                  'Full Date',
                  DateFormatters.formatDateFull(now),
                  'DateFormatters.formatDateFull(DateTime.now())',
                ),
                _buildExample(
                  'Spanish Long Date',
                  DateFormatters.formatDateLong(now, 'es_ES'),
                  'DateFormatters.formatDateLong(DateTime.now(), \'es_ES\')',
                ),
                _buildExample(
                  'Arabic Long Date',
                  DateFormatters.formatDateLong(now, 'ar_SA'),
                  'DateFormatters.formatDateLong(DateTime.now(), \'ar_SA\')',
                ),
              ],
            ),
            _buildSection(
              context,
              'Time Formatting',
              [
                _buildExample(
                  '24-Hour Format',
                  TimeFormatters.formatTime24Hour(now),
                  'TimeFormatters.formatTime24Hour(DateTime.now())',
                ),
                _buildExample(
                  '12-Hour Format',
                  TimeFormatters.formatTime12Hour(now),
                  'TimeFormatters.formatTime12Hour(DateTime.now())',
                ),
                _buildExample(
                  '24-Hour with Seconds',
                  TimeFormatters.formatTime24HourWithSeconds(now),
                  'TimeFormatters.formatTime24HourWithSeconds(DateTime.now())',
                ),
                _buildExample(
                  '12-Hour with Seconds',
                  TimeFormatters.formatTime12HourWithSeconds(now),
                  'TimeFormatters.formatTime12HourWithSeconds(DateTime.now())',
                ),
              ],
            ),
            _buildSection(
              context,
              'Date & Time Combined',
              [
                _buildExample(
                  'Short DateTime',
                  TimeFormatters.formatDateTimeShort(now),
                  'TimeFormatters.formatDateTimeShort(DateTime.now())',
                ),
                _buildExample(
                  'Medium DateTime',
                  TimeFormatters.formatDateTimeMedium(now),
                  'TimeFormatters.formatDateTimeMedium(DateTime.now())',
                ),
                _buildExample(
                  'Long DateTime',
                  TimeFormatters.formatDateTimeLong(now),
                  'TimeFormatters.formatDateTimeLong(DateTime.now())',
                ),
              ],
            ),
            _buildSection(
              context,
              'Relative Time',
              [
                _buildExample(
                  '2 Hours Ago',
                  RelativeTime.getRelativeTime(
                    now.subtract(const Duration(hours: 2)),
                  ),
                  'RelativeTime.getRelativeTime(DateTime.now().subtract(Duration(hours: 2)))',
                ),
                _buildExample(
                  'Yesterday',
                  RelativeTime.getRelativeTime(yesterday),
                  'RelativeTime.getRelativeTime(yesterday)',
                ),
                _buildExample(
                  'Tomorrow',
                  RelativeTime.getRelativeTime(tomorrow),
                  'RelativeTime.getRelativeTime(tomorrow)',
                ),
                _buildExample(
                  'Last Week',
                  RelativeTime.getRelativeTime(lastWeek),
                  'RelativeTime.getRelativeTime(lastWeek)',
                ),
                _buildExample(
                  'Spanish Relative',
                  RelativeTime.getRelativeTime(
                    yesterday,
                    'es_ES',
                  ),
                  'RelativeTime.getRelativeTime(yesterday, \'es_ES\')',
                ),
              ],
            ),
            _buildSection(
              context,
              'Smart Formatting',
              [
                _buildExample(
                  'Today',
                  SmartFormatters.formatSmart(now),
                  'SmartFormatters.formatSmart(DateTime.now())',
                ),
                _buildExample(
                  'Yesterday',
                  SmartFormatters.formatSmart(yesterday),
                  'SmartFormatters.formatSmart(yesterday)',
                ),
                _buildExample(
                  'Tomorrow',
                  SmartFormatters.formatSmart(tomorrow),
                  'SmartFormatters.formatSmart(tomorrow)',
                ),
                _buildExample(
                  'Last Week',
                  SmartFormatters.formatSmart(lastWeek),
                  'SmartFormatters.formatSmart(lastWeek)',
                ),
                _buildExample(
                  'Next Month',
                  SmartFormatters.formatSmart(nextMonth),
                  'SmartFormatters.formatSmart(nextMonth)',
                ),
              ],
            ),
            _buildSection(
              context,
              'Date Comparisons',
              [
                _buildExample(
                  'Is Today?',
                  DateComparisons.isToday(now).toString(),
                  'DateComparisons.isToday(DateTime.now())',
                ),
                _buildExample(
                  'Is Yesterday?',
                  DateComparisons.isYesterday(yesterday).toString(),
                  'DateComparisons.isYesterday(yesterday)',
                ),
                _buildExample(
                  'Is Tomorrow?',
                  DateComparisons.isTomorrow(tomorrow).toString(),
                  'DateComparisons.isTomorrow(tomorrow)',
                ),
                _buildExample(
                  'Is Weekend?',
                  DateComparisons.isWeekend(now).toString(),
                  'DateComparisons.isWeekend(DateTime.now())',
                ),
                _buildExample(
                  'Is Weekday?',
                  DateComparisons.isWeekday(now).toString(),
                  'DateComparisons.isWeekday(DateTime.now())',
                ),
              ],
            ),
            _buildSection(
              context,
              'Date Calculations',
              [
                _buildExample(
                  'Start of Day',
                  DateCalculations.startOfDay(now).toString(),
                  'DateCalculations.startOfDay(DateTime.now())',
                ),
                _buildExample(
                  'End of Day',
                  DateCalculations.endOfDay(now).toString(),
                  'DateCalculations.endOfDay(DateTime.now())',
                ),
                _buildExample(
                  'Start of Week',
                  DateCalculations.startOfWeek(now).toString(),
                  'DateCalculations.startOfWeek(DateTime.now())',
                ),
                _buildExample(
                  'Start of Month',
                  DateCalculations.startOfMonth(now).toString(),
                  'DateCalculations.startOfMonth(DateTime.now())',
                ),
                _buildExample(
                  'Add 5 Business Days',
                  DateCalculations.addBusinessDays(now, 5).toString(),
                  'DateCalculations.addBusinessDays(DateTime.now(), 5)',
                ),
              ],
            ),
            _buildSection(
              context,
              'Date Parsing',
              [
                _buildExample(
                  'Parse ISO 8601',
                  DateParsers.parseFlexible('2025-12-01').toString(),
                  'DateParsers.parseFlexible(\'2025-12-01\')',
                ),
                _buildExample(
                  'Parse Custom Format',
                  DateParsers.parseDate('2025-12-01').toString(),
                  'DateParsers.parseDate(\'2025-12-01\')',
                ),
                _buildExample(
                  'Is Valid Date?',
                  DateParsers.isValidDate('2025-12-01').toString(),
                  'DateParsers.isValidDate(\'2025-12-01\')',
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }

  /// Builds a section with a title and list of examples
  Widget _buildSection(
    BuildContext context,
    String title,
    List<Widget> examples,
  ) {
    return Card(
      margin: const EdgeInsets.only(bottom: 16),
      child: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text(
              title,
              style: Theme.of(context).textTheme.titleLarge?.copyWith(
                    fontWeight: FontWeight.bold,
                  ),
            ),
            const SizedBox(height: 12),
            ...examples,
          ],
        ),
      ),
    );
  }

  /// Builds an example item showing code and result
  Widget _buildExample(String label, String result, String code) {
    return Padding(
      padding: const EdgeInsets.only(bottom: 12),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Text(
            label,
            style: const TextStyle(
              fontWeight: FontWeight.w600,
              fontSize: 14,
            ),
          ),
          const SizedBox(height: 4),
          Container(
            padding: const EdgeInsets.all(12),
            decoration: BoxDecoration(
              color: Colors.grey.shade100,
              borderRadius: BorderRadius.circular(8),
            ),
            child: SelectableText(
              result,
              style: const TextStyle(
                fontFamily: 'monospace',
                fontSize: 13,
              ),
            ),
          ),
          const SizedBox(height: 4),
          Text(
            code,
            style: TextStyle(
              fontFamily: 'monospace',
              fontSize: 11,
              color: Colors.grey.shade600,
            ),
          ),
        ],
      ),
    );
  }
}
2
likes
0
points
158
downloads

Publisher

unverified uploader

Weekly Downloads

A comprehensive, modular, zero-dependency date/time library for Flutter with 7 languages, 50+ functions, and smart formatting.

Repository (GitHub)
View/report issues

Topics

#datetime #date-formatting #i18n #localization #utilities

License

unknown (license)

Dependencies

flutter

More

Packages that depend on save_points_intl