Here’s a simple calculator implemented using Flutter:
import 'package:flutter/material.dart';
void main() {
runApp(CalculatorApp());
}
class CalculatorApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Calculator',
home: CalculatorScreen(),
);
}
}
class CalculatorScreen extends StatefulWidget {
@override
_CalculatorScreenState createState() => _CalculatorScreenState();
}
class _CalculatorScreenState extends State<CalculatorScreen> {
String _output = '0';
String _outputHistory = '';
double num1 = 0.0;
double num2 = 0.0;
String operand = '';
buttonPressed(String buttonText) {
if (buttonText == 'CLEAR') {
_output = '0';
_outputHistory = '';
num1 = 0.0;
num2 = 0.0;
operand = '';
} else if (buttonText == '+' || buttonText == '-' || buttonText == '/' || buttonText == 'x') {
num1 = double.parse(_output);
operand = buttonText;
_outputHistory += buttonText;
_output = '0';
} else if (buttonText == '.') {
if (_output.contains('.')) {
print('Already contains a decimal');
return;
} else {
_output += buttonText;
_outputHistory += buttonText;
}
} else if (buttonText == '=') {
num2 = double.parse(_output);
if (operand == '+') {
_output = (num1 + num2).toString();
}
if (operand == '-') {
_output = (num1 - num2).toString();
}
if (operand == 'x') {
_output = (num1 * num2).toString();
}
if (operand == '/') {
_output = (num1 / num2).toString();
}
operand = '';
_outputHistory = '';
num1 = 0.0;
num2 = 0.0;
} else {
_output += buttonText;
_outputHistory += buttonText;
}
setState(() {
_output = double.parse(_output).toStringAsFixed(2);
});
}
Widget buildButton(String buttonText) {
return Expanded(
child: OutlineButton(
padding: EdgeInsets.all(24.0),
onPressed: () => buttonPressed(buttonText),
child: Text(
buttonText,
style: TextStyle(fontSize: 20.0),
),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Calculator'),
),
body: Container(
child: Column(
children: <Widget>[
Container(
alignment: Alignment.centerRight,
padding: EdgeInsets.symmetric(vertical: 24.0, horizontal: 12.0),
child: Text(
_outputHistory,
style: TextStyle(fontSize: 24.0),
),
),
Container(
alignment: Alignment.centerRight,
padding: EdgeInsets.symmetric(vertical: 24.0, horizontal: 12.0),
child: Text(
_output,
style: TextStyle(fontSize: 48.0, fontWeight: FontWeight.bold),
),
),
Expanded(
child: Divider(),
),
Column(
children: [
Row(
children: [
buildButton('7'),
buildButton('8'),
buildButton('9'),
buildButton('/')
],
),
Row(
children: [
buildButton('4'),
buildButton('5'),
buildButton('6'),
buildButton('x')
],
),
Row(
children: [
buildButton('1'),
buildButton('2'),
buildButton('3'),
buildButton('-')
],
),
Row(
children: [
buildButton('.'),
buildButton('0'),
buildButton('00'),
buildButton('+')
],
),
Row(
children: [
buildButton('CLEAR'),
buildButton('='),
],
),
],
)
],
),
),
);
}
}
This code creates a basic calculator app with addition, subtraction, multiplication, and division operations. It also handles decimal points and clears the input when the “CLEAR” button is pressed. The UI is created using Flutter’s Material Design widgets.