🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / FLUTTER / Tarih Seç Widget showDatePicker

1-) FLUTTER - Tarih Seç Widget showDatePicker

 

 

 tarihi formatlamak için : flutter pub add date_format

 

Ekran görüntüsü

 

 

1-) Tarih seçmek için ayarlanmış widget

 

 

Widget tarihSec(){
  
return   Padding(
    padding:
EdgeInsets.only(left: 20, right: 20, bottom: 15),
    child:
Material(
      elevation:
5,
      shape:
RoundedRectangleBorder(
          borderRadius:
BorderRadius.all(
            
Radius.circular(15.0),
          )),
      child:
TextFormField(
        style:
TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
        decoration:
InputDecoration(
          icon:
Icon(Icons.date_range),
          labelText:
"Tarih seçiniz...",
          border:
InputBorder.none,
          labelStyle:
TextStyle(fontSize: 15),
          contentPadding:
          
const EdgeInsets.symmetric(vertical: 5.0, horizontal: 10.0),
        ),
        controller:
_dogumTar,
        onTap: () {
          
// Below line stops keyboard from appearing
          
FocusScope.of(context).requestFocus(new FocusNode());

          
// _showDatePicker(context);
          
_showDatePickerNormal();
        },
      ),
    ),
  );
}
  
late TextEditingController _dogumTar = new TextEditingController();
  
String secilenTarih = "";
  
void _showDatePickerNormal() {
    showDatePicker(
        context:
context,
        initialDate:
secilenTarih == ""
            
? DateTime.now()
            :
DateTime.parse(getTarChange()),
        firstDate:
DateTime.now(),
        lastDate:
DateTime.now().add(Duration(days: 365)))
        .then((value) {
      
if (value != null) {
        
secilenTarih = formatDate(value!, [dd, '.', mm, '.', yyyy]);

        
_dogumTar.text = secilenTarih;
        
if (secilenTarih == "") {
          
secilenTarih = formatDate(DateTime.now(), [dd, '.', mm, '.', yyyy]);
        }

        setState(() {
          
_dogumTar.text = secilenTarih;
        });
        
// Navigator.of(context).pop();

      
}
    });
  }

 

 

String getTarChange() {

    if (secilenTarih == "") {

      return formatDate(DateTime.now(), [yyyy, '-', mm, '-', dd]);

    }

    String yil = secilenTarih.split(".")[2].toString();

    String ay = secilenTarih.split(".")[1].toString();

    String gun = secilenTarih.split(".")[0].toString();

    return "${yil}-${ay}-${gun} 11:47:00";

  }

 

 

 

 

2-) hazır widget olarak kullanımı

       1. selectdater.dart

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

class SelectDateR extends StatefulWidget {
  
String secilenTarih = "";
  
String title = "Seçiniz...";
  
Function secilenClick;
  
bool bugunSeciliGelsin = false;

  
SelectDateR({
    
required this.secilenTarih,
    
required this.title,
    
required this.secilenClick,
    
required this.bugunSeciliGelsin,
  });

  
@override
  
State<SelectDateR> createState() => _SelectDateRState();
}

class _SelectDateRState extends State<SelectDateR> {
  
List<String> items = [];
  
String secilenTarih = "";
  
String title = "";
  
late Function secilenClick;

  
@override
  
void initState() {
    
// TODO: implement initState
    
super.initState();
    
this.secilenTarih = widget.secilenTarih;
    
this.title = widget.title;
    
this.secilenClick = widget.secilenClick;

    
if(widget.bugunSeciliGelsin){
      
secilenTarih= formatDate(DateTime.now(), [dd, '.', mm, '.', yyyy]);
    }

    
controller = new TextEditingController(text: secilenTarih);
  }

  
final TextEditingController textEditingController = TextEditingController();

  
@override
  
void dispose() {
    
textEditingController.dispose();
    
super.dispose();
  }

  
late TextEditingController controller;

  
Widget dateContent() {
    
return Container(
      padding:
EdgeInsets.only(top: 10, left: 10),
      width:
175,
      height:
50,
      child:
TextFormField(
        decoration:
InputDecoration(
          labelText:
title,
          border:
OutlineInputBorder(),
        ),
        controller:
controller,
        onTap: () {
          
// Below line stops keyboard from appearing
          
FocusScope.of(context).requestFocus(new FocusNode());

          
// _showDatePicker(context);
          
tarihShow();
        },
      ),
    );
  }

  
String getTarChange(String secilenTarih) {
    
if (secilenTarih == "") {
      
return formatDate(DateTime.now(), [yyyy, '-', mm, '-', dd]);
    }
    
String yil = secilenTarih.split(".")[2].toString();
    
String ay = secilenTarih.split(".")[1].toString();
    
String gun = secilenTarih.split(".")[0].toString();
    
return "${yil}-${ay}-${gun} 11:47:00";
  }

  
void tarihShow() {
    showDatePicker(
            context:
context,
            initialDate:
secilenTarih == ""
                
? DateTime.now()
                :
DateTime.parse(getTarChange(secilenTarih)),
            firstDate:
DateTime.now().add(Duration(days: -100000)),
            lastDate:
DateTime.now().add(Duration(days: 365)))
        .then((value) {
      
if (value != null) {
        
secilenTarih = formatDate(value!, [dd, '.', mm, '.', yyyy]);

        
controller.text = secilenTarih;
        
if (secilenTarih == "") {
          
secilenTarih = formatDate(DateTime.now(), [dd, '.', mm, '.', yyyy]);
        }

        setState(() {
          
controller.text = secilenTarih;
          
secilenClick(secilenTarih!);
        });
        
// Navigator.of(context).pop();

      
}
    });
  }

  
@override
  
Widget build(BuildContext context) {
    
// DropdownButtonHideUnderline
    
return Center(
      child: dateContent(),
    );
  }
}

 

      2. KULLANIMI

 

    SelectDateR(
  secilenClick: (
String secilenBasTar) {
    print(secilenBasTar);
  },
  secilenTarih:
"",
  title:
"Baş Tar",
  bugunSeciliGelsin:
true,
),

 

 

 

 2023 Şubat 10 Cuma
 337