5. Develop Calculator Application.
Step to Run
- Open your Flutter project in VS Code.
- Open
lib/main.dart. - Delete the existing code.
- Paste the program code given below.
- Save the file.
- Run the program using
flutter runcmd
PROGRAM:
import 'package:flutter/material.dart';
void main() {
runApp(const CalculatorApp());
}
class CalculatorApp extends StatelessWidget {
const CalculatorApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Lab Program 5',
debugShowCheckedModeBanner: false,
home: const CalculatorScreen(),
);
}
}
class CalculatorScreen extends StatefulWidget {
const CalculatorScreen({super.key});
@override
State<CalculatorScreen> createState() => _CalculatorScreenState();
}
class _CalculatorScreenState extends State<CalculatorScreen> {
final TextEditingController firstNumberController = TextEditingController();
final TextEditingController secondNumberController = TextEditingController();
String result = '';
void calculate(String operator) {
double num1 = double.tryParse(firstNumberController.text) ?? 0;
double num2 = double.tryParse(secondNumberController.text) ?? 0;
double answer = 0;
setState(() {
if (operator == '+') {
answer = num1 + num2;
result = 'Result: $answer';
} else if (operator == '-') {
answer = num1 - num2;
result = 'Result: $answer';
} else if (operator == '*') {
answer = num1 * num2;
result = 'Result: $answer';
} else if (operator == '/') {
if (num2 == 0) {
result = 'Cannot divide by zero';
} else {
answer = num1 / num2;
result = 'Result: $answer';
}
}
});
}
void clearFields() {
setState(() {
firstNumberController.clear();
secondNumberController.clear();
result = '';
});
}
@override
void dispose() {
firstNumberController.dispose();
secondNumberController.dispose();
super.dispose();
}
Widget operationButton(String text, String operator) {
return ElevatedButton(
onPressed: () {
calculate(operator);
},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.blue,
foregroundColor: Colors.white,
padding: const EdgeInsets.symmetric(horizontal: 22, vertical: 14),
),
child: Text(
text,
style: const TextStyle(fontSize: 20),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Program 5: Calculator'),
centerTitle: true,
backgroundColor: Colors.blue,
foregroundColor: Colors.white,
),
body: Padding(
padding: const EdgeInsets.all(24),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Icon(
Icons.calculate,
size: 80,
color: Colors.blue,
),
const SizedBox(height: 20),
TextField(
controller: firstNumberController,
keyboardType: TextInputType.number,
decoration: const InputDecoration(
labelText: 'Enter First Number',
border: OutlineInputBorder(),
),
),
const SizedBox(height: 20),
TextField(
controller: secondNumberController,
keyboardType: TextInputType.number,
decoration: const InputDecoration(
labelText: 'Enter Second Number',
border: OutlineInputBorder(),
),
),
const SizedBox(height: 25),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
operationButton('+', '+'),
operationButton('-', '-'),
operationButton('×', '*'),
operationButton('÷', '/'),
],
),
const SizedBox(height: 25),
Text(
result,
style: const TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
color: Colors.blue,
),
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: clearFields,
style: ElevatedButton.styleFrom(
backgroundColor: Colors.red,
foregroundColor: Colors.white,
),
child: const Text('Clear'),
),
],
),
),
);
}
}OUTPUT:

