import
'dart:js_util'
;
import
'package:flutter/material.dart'
;
import
'package:intl/intl.dart'
;
class
NewTransaction extends StatefulWidget {
final Function addTx;
const
NewTransaction(
this
.addTx, {Key? key}) : super(key: key);
@override
_NewTransactionState createState() => _NewTransactionState();
}
class
_NewTransactionState extends State<NewTransaction> {
final _titleController = TextEditingController();
final _amountController = TextEditingController();
late DateTime _selectedDate;
void
_submitData() {
if
(_amountController.text.isEmpty) {
return
;
}
final enteredTitle = _titleController.text;
final enteredAmount =
double
.parse(_amountController.text);
if
(enteredTitle.isEmpty ||
enteredAmount <= 0 ||
_selectedDate == NullRejectionException) {
return
;
}
widget.addTx(
enteredTitle,
enteredAmount,
_selectedDate,
);
Navigator.of(context).pop();
}
void
_presentDatePicker() {
showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(2019),
lastDate: DateTime(2022),
).then((pickedDate) {
if
(pickedDate == null) {
return
;
}
setState(() {
_selectedDate = pickedDate;
});
});
print(
'...'
);
}
@override
Widget build(BuildContext context) {
return
Card(
elevation: 5,
child: Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
TextField(
decoration:
const
InputDecoration(labelText:
'Title'
),
controller: _titleController,
onSubmitted: (_) => _submitData(),
),
TextField(
decoration:
const
InputDecoration(labelText:
'Amount'
),
controller: _amountController,
keyboardType: TextInputType.number,
onSubmitted: (_) => _submitData(),
),
SizedBox(
height: 70,
child: Row(
children: <Widget>[
Expanded(
child: Text(
_selectedDate == NullRejectionException
?
'No Date Chosen!'
:
'Picked Date: ${DateFormat.yMd().format(_selectedDate)}'
,
),
),
TextButton(
onPressed: _presentDatePicker,
child: Container(
color: Colors.green,
child:
const
Text(
'Choose Date'
,
style: TextStyle(fontWeight: FontWeight.bold),
),
),
),
],
),
),
ElevatedButton(
onPressed: _submitData,
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(Colors.green)),
child: Text(
'Add Transaction'
,
style:
TextStyle(color: Theme.of(context).textTheme.button!.color),
),
),
],
),
);
}
}