Como obter dias entre duas datas com flutter

Tempo de leitura: 3 minutes

Olá desenvolvedores, hoje tenho que implementar como obter dias entre duas datas em uma vibração, este tópico ajuda no desenvolvimento de seu aplicativo de flutter, queridos desenvolvedores, meu objetivo é muito simples e informações ponto a ponto da postagem relacionada (dados) para a ajuda de desenvolvedores flutter.

 

Vamos começar

 

Instalação do Packagecustom_date_range_picker

importar algumas bibliotecas em sua tela.

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';

 

Declaração do Controlador

Data com formato.

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();
}

 

Código do seletor de data:

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;
       });
     },
   );
 }

Acesse a função de data no método textformfiled

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;
          },
        ),
         
      ),
    ),
  );
}

 

 

 

Conclusão:

Neste artigo, discutimos a parte mais benéfica da tela do seletor de intervalo de datas entre dois formulários de texto de seleção de data e um contêiner separado com um botão, para facilitar nossa vida de desenvolvimento Nas partes futuras, compartilharei alguns códigos importantes de seleção de intervalo de data tela para tornar sua jornada de desenvolvimento do Flutter um pouco mais rápida e muitas dicas relacionadas ao Flutter e ao Dart para obter mais ajuda, consulte nossos outros artigos