mirror of
https://github.com/nisrulz/flutter-examples.git
synced 2025-08-23 22:16:31 +08:00
114 lines
3.0 KiB
Dart
114 lines
3.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:intl/intl.dart';
|
|
|
|
class NewTransaction extends StatefulWidget {
|
|
final Function addTx;
|
|
|
|
NewTransaction(this.addTx);
|
|
|
|
@override
|
|
_NewTransactionState createState() => _NewTransactionState();
|
|
}
|
|
|
|
class _NewTransactionState extends State<NewTransaction> {
|
|
final _titleController = TextEditingController();
|
|
final _amountController = TextEditingController();
|
|
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 == null) {
|
|
return;
|
|
}
|
|
|
|
widget.addTx(
|
|
enteredTitle,
|
|
enteredAmount,
|
|
_selectedDate,
|
|
);
|
|
|
|
Navigator.of(context).pop();
|
|
}
|
|
|
|
void _presentDatePicker() {
|
|
showDatePicker(
|
|
context: context,
|
|
initialDate: DateTime.now(),
|
|
firstDate: DateTime(2019),
|
|
lastDate: DateTime.now(),
|
|
).then((pickedDate) {
|
|
if (pickedDate == null) {
|
|
return;
|
|
}
|
|
setState(() {
|
|
_selectedDate = pickedDate;
|
|
});
|
|
});
|
|
print('...');
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Card(
|
|
elevation: 5,
|
|
child: Container(
|
|
padding: EdgeInsets.all(10),
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.end,
|
|
children: <Widget>[
|
|
TextField(
|
|
decoration: InputDecoration(labelText: 'Title'),
|
|
controller: _titleController,
|
|
onSubmitted: (_) => _submitData(),
|
|
// onChanged: (val) {
|
|
// titleInput = val;
|
|
// },
|
|
),
|
|
TextField(
|
|
decoration: InputDecoration(labelText: 'Amount'),
|
|
controller: _amountController,
|
|
keyboardType: TextInputType.number,
|
|
onSubmitted: (_) => _submitData(),
|
|
),
|
|
Container(
|
|
height: 70,
|
|
child: Row(
|
|
children: <Widget>[
|
|
Expanded(
|
|
child: Text(
|
|
_selectedDate == null
|
|
? 'No Date Chosen!'
|
|
: 'Picked Date: ${DateFormat.yMd().format(_selectedDate)}',
|
|
),
|
|
),
|
|
FlatButton(
|
|
textColor: Theme.of(context).primaryColor,
|
|
child: Text(
|
|
'Choose Date',
|
|
style: TextStyle(
|
|
fontWeight: FontWeight.bold,
|
|
),
|
|
),
|
|
onPressed: _presentDatePicker,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
RaisedButton(
|
|
child: Text('Add Transaction'),
|
|
color: Theme.of(context).primaryColor,
|
|
textColor: Theme.of(context).textTheme.button.color,
|
|
onPressed: _submitData,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|