flutter_calculator
By using flutter, you totally can develop this app on iOS and Android with the same code.

Structure

Input Widgets
input widgets is all extends StatefulWidget, because they need to response the onTap gesture.
- NumberButton. Rendering the number button (like 1,2,3…) and handling the onTap gesture.
- OperatorButton. Rendering the operator button (like +,-,*…) and handling the onTap gesture.
- ResultButton. Rendering the command button (like clear,equal…) and handling the onTap gesture.
Output Widgets
output widgets is all extends StatelessWidget, because they are just rendering.
- ResultDisplay. Rendering the current result and changing display when user tap a number button.
- HistoryBlock. Rendering the calculation histories and changing display every time when user tap a valid button.
CalculatorPage
CalculatorPage is extending StatefulWidget and holding the List of results.
CalculatorPage receives every input widgets onTap event, makes a logical calculation for these input,s and decide what to display to output widgets.
GitHub
https://github.com/chenyuantao/flutter_calculator