mirror of
https://github.com/nisrulz/flutter-examples.git
synced 2025-07-06 18:48:51 +08:00
66 lines
1.9 KiB
Dart
66 lines
1.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
void main() {
|
|
runApp(MaterialApp(title: 'Tip Calculator', home: TipCalculator()));
|
|
}
|
|
|
|
class TipCalculator extends StatelessWidget {
|
|
double billAmount = 0.0;
|
|
double tipPercentage = 0.0;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
// Create first input field
|
|
TextField billAmountField = TextField(
|
|
keyboardType: TextInputType.number,
|
|
onChanged: (String value) {
|
|
try {
|
|
billAmount = double.parse(value);
|
|
} catch (exception) {
|
|
billAmount = 0.0;
|
|
}
|
|
},
|
|
decoration: InputDecoration(labelText: "Bill amount(\$)"),
|
|
);
|
|
|
|
// Create another input field
|
|
TextField tipPercentageField = TextField(
|
|
decoration: InputDecoration(labelText: "Tip %", hintText: "15"),
|
|
keyboardType: TextInputType.number,
|
|
onChanged: (String value) {
|
|
try {
|
|
tipPercentage = double.parse(value);
|
|
} catch (exception) {
|
|
tipPercentage = 0.0;
|
|
}
|
|
});
|
|
|
|
// Create button
|
|
RaisedButton calculateButton = RaisedButton(
|
|
child: Text("Calculate"),
|
|
onPressed: () {
|
|
// Calculate tip and total
|
|
double calculatedTip = billAmount * tipPercentage / 100.0;
|
|
double total = billAmount + calculatedTip;
|
|
|
|
// Generate dialog
|
|
AlertDialog dialog = AlertDialog(
|
|
content: Text("Tip: \$$calculatedTip \n"
|
|
"Total: \$$total"));
|
|
|
|
// Show dialog
|
|
showDialog(context: context, builder: (BuildContext context) => dialog);
|
|
});
|
|
|
|
Container container = Container(
|
|
padding: const EdgeInsets.all(16.0),
|
|
child: Column(
|
|
children: [billAmountField, tipPercentageField, calculateButton]));
|
|
|
|
AppBar appBar = AppBar(title: Text("Tip Calculator"));
|
|
|
|
Scaffold scaffold = Scaffold(appBar: appBar, body: container);
|
|
return scaffold;
|
|
}
|
|
}
|