Untitled
scala
22 days ago
2.8 kB
3
Indexable
Never
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('+'), ], ), ], ), ); } }