Untitled
shebom640
scala
2 years ago
2.8 kB
14
Indexable
import 'package:flutter/material.dart';
void main() => runApp(CalculatorApp());
class CalculatorApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Simple Calculator',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CalculatorScreen(),
);
}
}
class CalculatorScreen extends StatefulWidget {
@override
_CalculatorScreenState createState() => _CalculatorScreenState();
}
class _CalculatorScreenState extends State<CalculatorScreen> {
String _display = '';
double _result = 0.0;
void _onButtonPressed(String value) {
setState(() {
if (value == '=') {
try {
_result = evalExpression(_display);
} catch (e) {
_result = 0.0;
}
_display = _result.toString();
} else if (value == 'C') {
_display = '';
_result = 0.0;
} else {
_display += value;
}
});
}
double evalExpression(String expression) {
return double.parse(expression);
}
Widget _buildButton(String label) {
return Expanded(
child: InkWell(
onTap: () => _onButtonPressed(label),
child: Container(
alignment: Alignment.center,
decoration: BoxDecoration(
border: Border.all(),
),
child: Text(
label,
style: TextStyle(fontSize: 24.0),
),
),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Simple Calculator'),
),
body: Column(
children: <Widget>[
Expanded(
child: Container(
alignment: Alignment.bottomRight,
padding: EdgeInsets.all(16.0),
child: Text(
_display,
style: TextStyle(fontSize: 48.0),
),
),
),
Divider(),
Row(
children: <Widget>[
_buildButton('7'),
_buildButton('8'),
_buildButton('9'),
_buildButton('/'),
],
),
Row(
children: <Widget>[
_buildButton('4'),
_buildButton('5'),
_buildButton('6'),
_buildButton('*'),
],
),
Row(
children: <Widget>[
_buildButton('1'),
_buildButton('2'),
_buildButton('3'),
_buildButton('-'),
],
),
Row(
children: <Widget>[
_buildButton('C'),
_buildButton('0'),
_buildButton('='),
_buildButton('+'),
],
),
],
),
);
}
}
Editor is loading...