how-to-get-days-between-two-dates-in-flutter

how to get days between two dates in a flutter

Hello developers, today I have to implement how to get days between two dates in a flutter, this topic help in your flutter app development, dear developers my aim is very simple and point-to-point information of the related post(data) for the help of flutter developers. 

The help with the date picker install and instruction flow of the link

Let’s start

install pod – custom_date_range_picker

import some libraries on your screen.


import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:custom_date_range_picker/custom_date_range_picker.dart';

Declaration on the Controller

Date with formate.

  DateTime? startDate;
  DateTime? endDate;
  String? betweenDays = '30 days';
  final startDateController = TextEditingController();
  final endDateController = TextEditingController();
  
  
   void startDay() {
    var now = DateTime.now();
    var formatter = DateFormat('dd-MM-yyyy');
    String formattedDate = formatter.format(now);
    startDateController.text = formattedDate;
  }

  void endDay() {
    var now = DateTime.now();
    var formatter = DateFormat('dd-MM-yyyy');
    String formattedDate = formatter.format(now);
    endDateController.text = formattedDate;
  }
  
  
   void initState() {
    super.initState();
    startDay();
    endDay();
  }

Date Picker Code:

 int days_Difference_Between(DateTime from, DateTime to) {
    from = DateTime(from.year, from.month, from.day);
    to = DateTime(to.year, to.month, to.day);
    return (to.difference(from).inHours / 24).round();
  }

  void datePick() {
    showCustomDateRangePicker(
      context,
      dismissible: true,
      backgroundColor: ColorConstant.black900,
      minimumDate: DateTime.now(),
      maximumDate: DateTime.now().add(const Duration(days: 365)),
      endDate: endDate,
      startDate: startDate,
      onApplyClick: (start, end) {
        setState(() {
          endDate = end;
          startDate = start;
          final currentDay = DateTime.now(); // Current date
          final differenceFormTwoDates = days_Difference_Between(start, end);
          final differenceFormCurrent = days_Difference_Between(start, end);
          var daysGet = differenceFormTwoDates + 1;
          betweenDays = daysGet.toString();
          var formatterStartdate = DateFormat('dd-MM-yyyy');
          String formattedDate = formatterStartdate.format(start);
          var formatterEnddate = DateFormat('dd-MM-yyyy');
          String formattedEDate = formatterEnddate.format(end);
          startDateController.text = formattedDate.toString();
          endDateController.text = formattedEDate.toString();
        });
      },
      onCancelClick: () {
        setState(() {
          endDate = null;
          startDate = null;
        });
      },
    );
  }

Access the date function in textformfiled method


  Widget boxStartDate() {
    return InkWell(
      onTap: () {
        datePick();
      },
      child: Center(
        child: Container(
          width: 80.0,
          height: 16.0,
          padding: setPadding(),
          alignment: Alignment.center,
          child: TextFormField(
            style: TextStyle(
              color: ColorConstant.indigo800,
              fontSize: getFontSize(
                13,
              ),
              fontFamily: 'Roboto',
              fontWeight: FontWeight.w500,
              height: 1.00,
            ),
            readOnly: true,

            onTap: () async {},
            //autofocus: true,
            textAlign: TextAlign.center,
            //keyboardType: TextInputType.number,
            controller: startDateController,
            textInputAction: TextInputAction.next,
            //onChanged: (_) => FocusScope.of(context).nextFocus(), // focus to next
            maxLength: 10,

            decoration: const InputDecoration(
                border: InputBorder.none,
                errorStyle: TextStyle(height: 0),
                counterText: '',
                contentPadding: EdgeInsets.only(
                  top: 10,
                  bottom: 9.0,
                )),
            validator: (value) {
              if (value == null || value.isEmpty) {
                return '';
              }
              return null;
            },
          ),
           
        ),
      ),
    );
  }
how-to-get-days-between-two-dates-in-flutter
how-to-get-days-between-two-dates-in-flutter

Conclusion:

In this article, we discussed the most beneficial part of the date range picker Screen between two date selection text forms and a separate container with a button, to make our development life easier In future parts, I will share some important codes of Date Range selection screen to make your Flutter Development journey a bit faster and many tips related to Flutter and Dart for more help please view over another article

I hope it was a useful article, please share and subscribe to my channel, You have enjoyed the most. Thanks for reading and if you have any questions or comments, See you soon. 

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *