Easy to use and beautiful calendar strip component for Flutter.

Overview

Flutter Calendar Strip

Easy to use and beautiful calendar strip component for Flutter. Awesome celender widget

If this project has helped you out, please support us with a star. 🌟

Install

dependencies:
          ...
          calendar_strip: ^1.0.6

Usage Example

Container(
  child: CalendarStrip(
    startDate: startDate,
    endDate: endDate,
    onDateSelected: onSelect,
    onWeekSelected: onWeekSelect,
    dateTileBuilder: dateTileBuilder,
    iconColor: Colors.black87,
    monthNameWidget: _monthNameWidget,
    markedDates: markedDates,
    containerDecoration: BoxDecoration(color: Colors.black12),
  ))

DateBuilder Widget Method Usage

  dateTileBuilder(date, selectedDate, rowIndex, dayName, isDateMarked, isDateOutOfRange) {
    bool isSelectedDate = date.compareTo(selectedDate) == 0;
    Color fontColor = isDateOutOfRange ? Colors.black26 : Colors.black87;
    TextStyle normalStyle = TextStyle(fontSize: 17, fontWeight: FontWeight.w800, color: fontColor);
    TextStyle selectedStyle = TextStyle(fontSize: 17, fontWeight: FontWeight.w800, color: Colors.black87);
    TextStyle dayNameStyle = TextStyle(fontSize: 14.5, color: fontColor);
    List<Widget> _children = [
      Text(dayName, style: dayNameStyle),
      Text(date.day.toString(), style: !isSelectedDate ? normalStyle : selectedStyle),
    ];

    if (isDateMarked == true) {
      _children.add(getMarkedIndicatorWidget());
    }

    return AnimatedContainer(
      duration: Duration(milliseconds: 150),
      alignment: Alignment.center,
      padding: EdgeInsets.only(top: 8, left: 5, right: 5, bottom: 5),
      decoration: BoxDecoration(
        color: !isSelectedDate ? Colors.transparent : Colors.white70,
        borderRadius: BorderRadius.all(Radius.circular(60)),
      ),
      child: Column(
        children: _children,
      ),
    );
  }

MonthName Widget Method Usage

    monthNameWidget(monthName) {
    return Container(
      child: Text(
        monthName,
        style: TextStyle(
          fontSize: 17,
          fontWeight: FontWeight.w600,
          color: Colors.black87,
          fontStyle: FontStyle.italic,
        ),
      ),
      padding: EdgeInsets.only(top: 8, bottom: 4),
    );
  }

Full Example

$data"); } onWeekSelect(data) { print("Selected week starting at -> $data"); } _monthNameWidget(monthName) { return Container( child: Text(monthName, style: TextStyle(fontSize: 17, fontWeight: FontWeight.w600, color: Colors.black87, fontStyle: FontStyle.italic)), padding: EdgeInsets.only(top: 8, bottom: 4), ); } getMarkedIndicatorWidget() { return Row(mainAxisAlignment: MainAxisAlignment.center, children: [ Container( margin: EdgeInsets.only(left: 1, right: 1), width: 7, height: 7, decoration: BoxDecoration(shape: BoxShape.circle, color: Colors.red), ), Container( width: 7, height: 7, decoration: BoxDecoration(shape: BoxShape.circle, color: Colors.blue), ) ]); } dateTileBuilder(date, selectedDate, rowIndex, dayName, isDateMarked, isDateOutOfRange) { bool isSelectedDate = date.compareTo(selectedDate) == 0; Color fontColor = isDateOutOfRange ? Colors.black26 : Colors.black87; TextStyle normalStyle = TextStyle(fontSize: 17, fontWeight: FontWeight.w800, color: fontColor); TextStyle selectedStyle = TextStyle(fontSize: 17, fontWeight: FontWeight.w800, color: Colors.black87); TextStyle dayNameStyle = TextStyle(fontSize: 14.5, color: fontColor); List _children = [ Text(dayName, style: dayNameStyle), Text(date.day.toString(), style: !isSelectedDate ? normalStyle : selectedStyle), ]; if (isDateMarked == true) { _children.add(getMarkedIndicatorWidget()); } return AnimatedContainer( duration: Duration(milliseconds: 150), alignment: Alignment.center, padding: EdgeInsets.only(top: 8, left: 5, right: 5, bottom: 5), decoration: BoxDecoration( color: !isSelectedDate ? Colors.transparent : Colors.white70, borderRadius: BorderRadius.all(Radius.circular(60)), ), child: Column( children: _children, ), ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Container( child: CalendarStrip( startDate: startDate, endDate: endDate, onDateSelected: onSelect, onWeekSelected: onWeekSelect, dateTileBuilder: dateTileBuilder, iconColor: Colors.black87, monthNameWidget: _monthNameWidget, markedDates: markedDates, containerDecoration: BoxDecoration(color: Colors.black12), //locale = 'en_US', //Default )), ); } } ">
import 'package:flutter/material.dart';
import 'package:calendar_strip/calendar_strip.dart';

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

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

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

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  DateTime startDate = DateTime.now().subtract(Duration(days: 2));
  DateTime endDate = DateTime.now().add(Duration(days: 2));
  DateTime selectedDate = DateTime.now().subtract(Duration(days: 2));
  List<DateTime> markedDates = [
    DateTime.now().subtract(Duration(days: 1)),
    DateTime.now().subtract(Duration(days: 2)),
    DateTime.now().add(Duration(days: 4))
  ];

  onSelect(data) {
    print("Selected Date -> $data");
  }

  onWeekSelect(data) {
    print("Selected week starting at -> $data");
  }

  _monthNameWidget(monthName) {
    return Container(
      child: Text(monthName,
          style:
              TextStyle(fontSize: 17, fontWeight: FontWeight.w600, color: Colors.black87, fontStyle: FontStyle.italic)),
      padding: EdgeInsets.only(top: 8, bottom: 4),
    );
  }

  getMarkedIndicatorWidget() {
    return Row(mainAxisAlignment: MainAxisAlignment.center, children: [
      Container(
        margin: EdgeInsets.only(left: 1, right: 1),
        width: 7,
        height: 7,
        decoration: BoxDecoration(shape: BoxShape.circle, color: Colors.red),
      ),
      Container(
        width: 7,
        height: 7,
        decoration: BoxDecoration(shape: BoxShape.circle, color: Colors.blue),
      )
    ]);
  }

  dateTileBuilder(date, selectedDate, rowIndex, dayName, isDateMarked, isDateOutOfRange) {
    bool isSelectedDate = date.compareTo(selectedDate) == 0;
    Color fontColor = isDateOutOfRange ? Colors.black26 : Colors.black87;
    TextStyle normalStyle = TextStyle(fontSize: 17, fontWeight: FontWeight.w800, color: fontColor);
    TextStyle selectedStyle = TextStyle(fontSize: 17, fontWeight: FontWeight.w800, color: Colors.black87);
    TextStyle dayNameStyle = TextStyle(fontSize: 14.5, color: fontColor);
    List<Widget> _children = [
      Text(dayName, style: dayNameStyle),
      Text(date.day.toString(), style: !isSelectedDate ? normalStyle : selectedStyle),
    ];

    if (isDateMarked == true) {
      _children.add(getMarkedIndicatorWidget());
    }

    return AnimatedContainer(
      duration: Duration(milliseconds: 150),
      alignment: Alignment.center,
      padding: EdgeInsets.only(top: 8, left: 5, right: 5, bottom: 5),
      decoration: BoxDecoration(
        color: !isSelectedDate ? Colors.transparent : Colors.white70,
        borderRadius: BorderRadius.all(Radius.circular(60)),
      ),
      child: Column(
        children: _children,
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Container(
          child: CalendarStrip(
        startDate: startDate,
        endDate: endDate,
        onDateSelected: onSelect,
        onWeekSelected: onWeekSelect,
        dateTileBuilder: dateTileBuilder,
        iconColor: Colors.black87,
        monthNameWidget: _monthNameWidget,
        markedDates: markedDates,
        containerDecoration: BoxDecoration(color: Colors.black12),
        //locale = 'en_US', //Default
      )),
    );
  }
}

Widget Properties

Initial data and onDateSelected handler

Prop Description Type Default
startDate Date to be used for setting starting date in a date range. DateTime -
endDate Date to be used for setting ending date in a date range. DateTime -
selectedDate Date to be used for setting a date as pre-selected instead of current Date. DateTime -
markedDates List of DateTimes to be marked in UI. It is also passed as parameter in dateTileBuilder method, List -
iconColor Icon colors of both Left and Right Chevron Icons. Color Colors.black87
containerHeight The Height of the calendar strip. int 90
containerDecoration Box Decoration object styling the container for more custom styling. BoxDecoration -
monthNameWidget Function that returns a custom widget for rendering the name of the current month. Function -
dateTileBuilder Function that returns a custom widget for rendering the name of the current month Function -
onDateSelected Function that is called on selection of a date. (Required) Function Required
addSwipeControl Boolean that is used to turn on or off swipe control on the calendar strip Boolean -
locale To specify a language, simply pass it as a String code to locale property. String en_US
Comments
  • Daylight saving fix: The default dart DateTime object caused incorrect week startday data.

    Daylight saving fix: The default dart DateTime object caused incorrect week startday data.

    The DateTime object automatically accounts for daylight savings and by doing so, returned incorrect dates. For example if I would go from the week of 19 okt 2020 to the week of 26 okt 2020 it would display the week starting at sunday 25 okt. 25 okt 2020 23:00 to be exact. DateTime.utc() does not account for daylight savings so I just had to swap some default constructors with UTC constructors.

    opened by RobbeDGreef 4
  • Add possibility to set endDate as selectedDate

    Add possibility to set endDate as selectedDate

    I'm trying to create a calendar strip for a time-tracking system. The user isn't supposed to be able to go back more than seven days or access any days after the current day. When the app is opened, I'd like the current day(= endDate) to be pre-selected.

    image

    However, this is impossible since the widget doesn't recognise same dates as such. This code always returns true...

    image

    ...which causes the currentDate to be set to the startDate. image

    I'd like to be able to set the selectedDate to the endDate of a date range, even if the endDate is the current date.

    opened by Schokohuetchen 4
  • exception when dispose

    exception when dispose

    if init animation is runing and dispose called - execption will be throwing:

    I/zygote (14401): After code cache collection, code=101KB, data=57KB I/zygote (14401): Do partial code cache collection, code=102KB, data=60KB I/zygote (14401): After code cache collection, code=102KB, data=60KB I/zygote (14401): Increasing code cache capacity to 512KB

    ════════ Exception caught by widgets library ═══════════════════════════════════════════════════════ The following assertion was thrown while finalizing the widget tree: SlideFadeTransitionState#c8385(tickers: tracking 1 ticker) was disposed with an active Ticker.

    SlideFadeTransitionState created a Ticker via its TickerProviderStateMixin, but at the time dispose() was called on the mixin, that Ticker was still active. All Tickers must be disposed before calling super.dispose().

    Tickers used by AnimationControllers should be disposed by calling dispose() on the AnimationController itself. Otherwise, the ticker will leak.

    The offending ticker was: _WidgetTicker(created by SlideFadeTransitionState#c8385(lifecycle state: created, tickers: tracking 0 tickers)) The stack trace when the _WidgetTicker was actually created was: #0 new Ticker. (package:flutter/src/scheduler/ticker.dart:66:40) #1 new Ticker (package:flutter/src/scheduler/ticker.dart:68:6) #2 new _WidgetTicker (package:flutter/src/widgets/ticker_provider.dart:237:80) #3 TickerProviderStateMixin.createTicker (package:flutter/src/widgets/ticker_provider.dart:168:34) #4 new AnimationController (package:flutter/src/animation/animation_controller.dart:245:21) #5 SlideFadeTransitionState.initState (package:calendar_strip/calendar_strip.dart:386:23) #6 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4355:58) #7 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5) #8 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) #9 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) #10 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16) #11 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) #12 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5) #13 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5) #14 ParentDataElement.mount (package:flutter/src/widgets/framework.dart:4617:11) #15 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) #16 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5551:32) #17 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) #18 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) #19 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16) #20 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) #21 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5) #22 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5) #23 ParentDataElement.mount (package:flutter/src/widgets/framework.dart:4617:11) #24 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) #25 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5551:32) #26 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) #27 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) #28 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14) #29 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) #30 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) #31 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16) #32 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) #33 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5) #34 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5) #35 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) #36 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) #37 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14) #38 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) #39 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) #40 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16) #41 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) #42 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5) #43 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11) #44 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5) #45 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) #46 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) #47 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16) #48 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) #49 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5) .... #203 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16) #204 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) #205 StatelessElement.update (package:flutter/src/widgets/framework.dart:4298:5) #206 Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15) #207 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16) #208 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) #209 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2432:33) #210 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:773:20) #211 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:283:5) #212 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1102:15) #213 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1041:9) #214 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:957:5) #218 _invoke (dart:ui/hooks.dart:259:10) #219 _drawFrame (dart:ui/hooks.dart:217:3) (elided 3 frames from package dart:async)

    When the exception was thrown, this was the stack: #0 TickerProviderStateMixin.dispose. (package:flutter/src/widgets/ticker_provider.dart:185:13) #1 TickerProviderStateMixin.dispose (package:flutter/src/widgets/ticker_provider.dart:203:6) #2 SlideFadeTransitionState.dispose (package:calendar_strip/calendar_strip.dart:420:11) #3 StatefulElement.unmount (package:flutter/src/widgets/framework.dart:4435:12) #4 _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1748:13) ...

    i fix it:

    class SlideFadeTransitionState extends State<SlideFadeTransition> with TickerProviderStateMixin {
      AnimationController _animController;
      Animation<Offset> _animOffset;
      bool _disposed=false;
    .....
    if(!_disposed) _animController.forward();
    ...
    
    
    @override
      void dispose() {
        _disposed = true;
        _animController.dispose();
        super.dispose();
      }
    
    opened by tremp-m 3
  • SlideFadeTransitionState Error

    SlideFadeTransitionState Error

    Hi,

    I get an error if I change the page before the animation is complete.

    `════════ Exception caught by widgets library ═══════════════════════════════════ The following assertion was thrown while finalizing the widget tree: SlideFadeTransitionState#ddfd7(tickers: tracking 1 ticker) was disposed with an active Ticker.

    SlideFadeTransitionState created a Ticker via its TickerProviderStateMixin, but at the time dispose() was called on the mixin, that Ticker was still active. All Tickers must be disposed before calling super.dispose().

    Tickers used by AnimationControllers should be disposed by calling dispose() on the AnimationController itself. Otherwise, the ticker will leak. The offending ticker was: _WidgetTicker(created by SlideFadeTransitionState#ddfd7(lifecycle state: created, tickers: tracking 0 tickers)) The stack trace when the _WidgetTicker was actually created was: #0 new Ticker. package:flutter/…/scheduler/ticker.dart:66 #1 new Ticker package:flutter/…/scheduler/ticker.dart:68 #2 new _WidgetTicker #3 TickerProviderStateMixin.createTicker package:flutter/…/widgets/ticker_provider.dart:202 #4 new AnimationController package:flutter/…/animation/animation_controller.dart:247 #5 SlideFadeTransitionState.initState package:calendar_strip/calendar_strip.dart:385 #6 StatefulElement._firstBuild package:flutter/…/widgets/framework.dart:4640 #7 ComponentElement.mount package:flutter/…/widgets/framework.dart:4476 ... Normal element mounting (7 frames) #14 Element.inflateWidget package:flutter/…/widgets/framework.dart:3446 #15 MultiChildRenderObjectElement.mount package:flutter/…/widgets/framework.dart:5947 ... Normal element mounting (7 frames) #22 Element.inflateWidget package:flutter/…/widgets/framework.dart:3446 #23 MultiChildRenderObjectElement.mount package:flutter/…/wi`

    opened by usescrt 2
  • Please remove reference to Cupertino Icon.

    Please remove reference to Cupertino Icon.

    https://github.com/IronLad85/flutter_calendar_strip/blob/30387e923090a36e80dda3baafa8acc2a1d08f32/lib/calendar_strip.dart#L260

    This reference is causing some invalid rendering on some devices. Please give a parameter to override the icon or add icon from the material package.

    opened by awazgyawali 2
  • Can't select current date on load.

    Can't select current date on load.

    I can not select the current date, here is my code

    CalendarStrip(
                startDate: startDate,
                endDate: endDate,
                selectedDate: DateTime.now(),
                onDateSelected: onSelectDateFromStrip,
                dateTileBuilder: dateTileBuilder,
                iconColor: Colors.black87,
                monthNameWidget: _monthNameWidget,
                containerHeight: 100,
                containerDecoration: BoxDecoration(color: Colors.white38),
              )
    

    if selectedDate: DateTime.now(),, Current date is not selected, but the startDate is selected. if DateTime.now().subtract(Duration(days: 1)) , then it perfectly selects the Yesterday.

    opened by watsmyname 1
  • Please add license

    Please add license

    Hello. I love this widget so much. it is so cool and I gave it a star. But it would be great if there is a license set to this repo.

    Thank you in advance :)

    opened by joshua-hashimoto 1
  • Color customization, improvements and conflict resolution

    Color customization, improvements and conflict resolution

    -added color customization -added weekStartingDate update when selectedDate update -added possibility to do not use onSelectedDate and onSelectedWeek without trowing error -added possibility to change monthLabels and daysLabels to support locales languages -resolve dateUtils and flutter material package date conflict

    opened by Milvintsiss 0
  • Added onWeekSelected callback.

    Added onWeekSelected callback.

    I needed this callback for a project of mine to change the week number that is being displayed using the monthNameWidget. Hopefully someone else could use it too.

    opened by RobbeDGreef 0
  • Publish update on pub.dev

    Publish update on pub.dev

    First, thanks for your plugin but you should publish on pub.dev the last update from March 2021 because the latest version in pub.dev is from Oct 2020 and has the name conflicts.
    Right now I'm using the git repo directly calendar_strip: git: url: git://github.com/IronLad85/flutter_calendar_strip.git

    opened by thegenet 1
  • Error: 'DateUtils' is imported from both

    Error: 'DateUtils' is imported from both

    When try to run simple example with material app. it throws compile time error :

    ../../flutter/.pub-cache/hosted/pub.dartlang.org/calendar_strip-1.0.7/lib/calendar_strip.dart:85:22: Error: 'DateUtils' is imported from both 'package:flutter/src/material/date.dart' and 'package:calendar_strip/date-utils.dart'. lastDayOfMonth = DateUtils.getLastDayOfMonth(currentDate); ^^^^^^^^^

    ../../flutter/.pub-cache/hosted/pub.dartlang.org/calendar_strip-1.0.7/lib/calendar_strip.dart:149:12: Error: 'DateUtils' is imported from both 'package:flutter/src/material/date.dart' and 'package:calendar_strip/date-utils.dart'. return DateUtils.getLastDayOfMonth( ^^^^^^^^^

    i have tried hiding dateUtils and make an alias of calendar strip lib but no luck.

    opened by bliveinhack 4
  • Add support for Localizations

    Add support for Localizations

    Currently, I don't see any way of having the Week Names in other languages. It would be nice to have support for Localizations, with a parameter that lets you send the desired locale.

    opened by migalv 2
  • Range Dates not working correctly

    Range Dates not working correctly

    Hello, so niiiice Library!! First of all Thanks for share it :)

    I have a problem when i define the startDate and endDate properties in the calendarStrip object, the dates are correct but i want to this dates will be the limits, and the Calendar not show the next week in the case of endDate and the previous week in the case of the StartDate.

    Example:

    If i mark the startDate = 02/11/2020 i want that this day was the last that i can see in the Calendar and actually i can see one week more, and if i mark the StartDate = 03/11/2020 i see correctly the week but i cant select the 02 day....

    I dont know if im explaining correctly :(

    Maybe i dont use the properties correctly.

    Thanks so much!

    Miguel ;)

    opened by mpdevelopment39 1
Owner
Siddharth V
Passionate About Computer Science, Robotics and Electronics..
Siddharth V
Flutter calendar app. register schedule and manage in calendar ui.

flutter calendar app. register schedule and manage in calendar ui. save schedule data in firestore. and create widget and read schedule from firestore in widget.

akiho 11 Oct 30, 2022
Calendar widget for flutter that is swipeable horizontally. This widget can help you build your own calendar widget highly customizable.

flutter_calendar_carousel Calendar widget for flutter that is swipeable horizontally. This widget can help you build your own calendar widget highly c

dooboolab 750 Jan 7, 2023
Highly customizable, feature-packed calendar works like google calendar but with more features.

Beca [In Progress] Beca is a Calendar that you could manage your daily tasks and schedule meetings with your friends just like google calendar Concept

Mohammad Javad Hossieni 19 Nov 15, 2022
A Flutter package for using Jalali (Shamsi, Solar, Persian or Jalaali) calendar. You can convert, format and manipulate Jalali and Gregorian (Miladi) dates.

A Flutter package for using Jalali (Shamsi, Solar, Persian or Jalaali) calendar. You can convert, format and manipulate Jalali and Gregorian (Miladi) dates.

Amirreza Madani 63 Dec 21, 2022
CalendarDatePicker2 - A lightweight and customizable calendar picker based on Flutter CalendarDatePicker

A lightweight and customizable calendar picker based on Flutter CalendarDatePicker, with support for single date picker, range picker and multi picker.

Neo Liu 27 Dec 22, 2022
Fluboard - Calendar wall-board-display built with Flutter and ❀️

Fluboard Calendar wall-board-display built with Flutter and ❀️ Goals Build calendar board (DAKBoard alternative) which easy to install and easy to cus

iTeqno 10 Dec 27, 2022
Calendar widget for flutter

Calendar Shows a scrolling calendar list of events. This is still relatively basic, it always assumes that the getEvents returns the entire list of ca

null 223 Dec 19, 2022
Highly customizable, feature-packed calendar widget for Flutter

Table Calendar Highly customizable, feature-packed Flutter Calendar with gestures, animations and multiple formats. Table Calendar with custom styles

Aleksander WoΕΊniak 1.5k Jan 7, 2023
Flutter Date Picker Library that provides a calendar as a horizontal timeline.

DatePickerTimeline Flutter Date Picker Library that provides a calendar as a horizontal timeline. How To Use Import the following package in your dart

LiLi 0 Oct 25, 2021
Flutter Date Picker Library that provides a calendar as a horizontal timeline

Flutter Date Picker Library that provides a calendar as a horizontal timeline.

Vivek Kaushik 214 Jan 7, 2023
Calendar widget library for Flutter apps.

Calendarro Calendar widget library for Flutter apps. Offers multiple ways to customize the widget. Getting Started Installation Add dependency to your

Adam Styrc 97 Nov 30, 2022
Flutter Inline Calendar

inline_calendar An inline calendar flutter package inspired by outlook app. It also supports Jalali/Shamsi calendar. Uses theme and locale of context

omid habibi 3 Oct 21, 2022
A calendar widget for Flutter.

flutter_calendar A calendar widget for Flutter Apps. Borrowed DateTime utility functions from the Tzolkin Calendar web element. Usage Add to your pubs

AppTree Software, Inc 336 Sep 6, 2022
Flutter calendar week UI package

Flutter calendar week Flutter calendar week UI package IOS | Android: import 'package:flutter_calendar_week/flutter_calendar_week.dart'; CalendarWeek(

null 67 Dec 12, 2022
A seasonal foods calendar app written in Dart using Flutter.

This project is not actively maintained anymore. However, everybody who wants to do so is more than welcome to work on this project! Thank you for you

Andreas Boltres 63 Nov 19, 2022
Collection of customisable calendar related widgets for Flutter.

calendar_views Collection of customisable calendar related widgets for Flutter. Day View Day View Documentation Set of widgets for displaying a day vi

Zen Lednik 99 Sep 8, 2022
A calendar widget to easily scroll through the years πŸ—“

Flutter Scrolling Calendar A customizable calendar widget to easily scroll through the years. Features Choose range of years and the initial year to s

Menno Renkens 113 Nov 19, 2022
A Heatmap Calendar based on Github's contributions chart

Flutter Heat Map Calendar A Heat Map Calendar based on Github's contributions chart which can be used to visualize values over time Installing 1. Depe

Pedro H. F. Feitosa 49 Dec 6, 2022
A day night time picker for Flutter. Beautiful day and night animation with Sun and Moon assets.

DayNightTimePicker A day night time picker for Flutter with Zero Dependencies. Default style: IOS style: View it on pub.dev Installation Add to pubspe

Subhamay Dutta 68 Dec 29, 2022