saimain-dev

Calculator V2 Homework

Nov 6th, 2020
88
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import 'package:flutter/material.dart';
  2.  
  3. void main() => runApp(MyApp());
  4.  
  5. class MyApp extends StatefulWidget {
  6.   @override
  7.   _MyAppState createState() => _MyAppState();
  8. }
  9.  
  10. class _MyAppState extends State<MyApp> {
  11.   var firstNumber;
  12.   var secondNumber;
  13.   var numberOperator;
  14.   var resultNumber;
  15.  
  16.   void numberClicked(String number) {
  17.     if (numberOperator != null) {
  18.       if (secondNumber == null) {
  19.         secondNumber = number;
  20.       } else {
  21.         secondNumber = secondNumber + number;
  22.       }
  23.     } else {
  24.       if (firstNumber == null) {
  25.         firstNumber = number;
  26.       } else {
  27.         firstNumber = firstNumber + number;
  28.       }
  29.     }
  30.     setState(() {});
  31.   }
  32.  
  33.   void backspace() {
  34.     if (resultNumber != null) {
  35.       resultNumber = null;
  36.     } else if (secondNumber != null) {
  37.       secondNumber = null;
  38.     } else if (numberOperator != null) {
  39.       numberOperator = null;
  40.     } else if (firstNumber != null) {
  41.       firstNumber = null;
  42.     }
  43.     setState(() {});
  44.   }
  45.  
  46.   void operatorClicked(String sign) {
  47.     if (numberOperator != null) {
  48.       return;
  49.     } else {
  50.       numberOperator = sign;
  51.     }
  52.     print(sign);
  53.     setState(() {});
  54.   }
  55.  
  56.   void clearClicked() {
  57.     firstNumber = null;
  58.     secondNumber = null;
  59.     numberOperator = null;
  60.     resultNumber = null;
  61.     setState(() {});
  62.   }
  63.  
  64.   void getResult() {
  65.     switch (numberOperator) {
  66.       case '÷':
  67.         resultNumber = int.parse(firstNumber) / int.parse(secondNumber);
  68.         resultNumber = resultNumber.toStringAsFixed(2);
  69.         break;
  70.       case 'x':
  71.         resultNumber = int.parse(firstNumber) * int.parse(secondNumber);
  72.         break;
  73.       case '-':
  74.         resultNumber = int.parse(firstNumber) - int.parse(secondNumber);
  75.         break;
  76.       case '+':
  77.         resultNumber = int.parse(firstNumber) + int.parse(secondNumber);
  78.         break;
  79.       default:
  80.     }
  81.     print(resultNumber);
  82.     setState(() {});
  83.   }
  84.  
  85.   @override
  86.   Widget build(BuildContext context) {
  87.     return MaterialApp(
  88.       debugShowCheckedModeBanner: false,
  89.       title: 'Calculator 2020',
  90.       home: Scaffold(
  91.           backgroundColor: Colors.grey[900],
  92.           appBar: AppBar(
  93.             backgroundColor: Colors.grey[900],
  94.             title: Text(''),
  95.             centerTitle: true,
  96.             elevation: 0,
  97.           ),
  98.           body: Container(
  99.             child: Column(
  100.               children: [
  101.                 Expanded(
  102.                   flex: 1,
  103.                   child: Container(
  104.                     child: Row(
  105.                       mainAxisAlignment: MainAxisAlignment.end,
  106.                       children: [
  107.                         Container(
  108.                           padding: EdgeInsets.symmetric(
  109.                               horizontal: 20, vertical: 20),
  110.                           child: Column(
  111.                             mainAxisAlignment: MainAxisAlignment.end,
  112.                             children: [
  113.                               Row(
  114.                                 children: [
  115.                                   Text(
  116.                                     (() {
  117.                                       if (firstNumber != null) {
  118.                                         return firstNumber.toString();
  119.                                       } else {
  120.                                         return '';
  121.                                       }
  122.                                     })(),
  123.                                     style: TextStyle(
  124.                                         fontSize: 45.0,
  125.                                         color: Colors.white,
  126.                                         fontFamily: 'Roboto',
  127.                                         letterSpacing: 3),
  128.                                   ),
  129.                                   Text(
  130.                                     (() {
  131.                                       if (firstNumber != null &&
  132.                                           numberOperator != null) {
  133.                                         return numberOperator.toString();
  134.                                       } else {
  135.                                         return '';
  136.                                       }
  137.                                     })(),
  138.                                     style: TextStyle(
  139.                                         fontSize: 45.0,
  140.                                         color: Colors.white,
  141.                                         fontFamily: 'Roboto',
  142.                                         letterSpacing: 3),
  143.                                   ),
  144.                                   Text(
  145.                                     (() {
  146.                                       if (numberOperator != null &&
  147.                                           secondNumber != null) {
  148.                                         return secondNumber.toString();
  149.                                       } else {
  150.                                         return '';
  151.                                       }
  152.                                     })(),
  153.                                     style: TextStyle(
  154.                                         fontSize: 45.0,
  155.                                         color: Colors.white,
  156.                                         fontFamily: 'Roboto',
  157.                                         letterSpacing: 3),
  158.                                   ),
  159.                                   Text(
  160.                                     (() {
  161.                                       if (resultNumber != null) {
  162.                                         return '=$resultNumber';
  163.                                       } else {
  164.                                         return '';
  165.                                       }
  166.                                     })(),
  167.                                     style: TextStyle(
  168.                                         fontSize: 45.0,
  169.                                         color: Colors.white,
  170.                                         fontFamily: 'Roboto',
  171.                                         letterSpacing: 3),
  172.                                   ),
  173.                                 ],
  174.                               ),
  175.                             ],
  176.                           ),
  177.                         ),
  178.                       ],
  179.                     ),
  180.                   ),
  181.                 ),
  182.                 Expanded(
  183.                   flex: 3,
  184.                   child: Container(
  185.                     margin: EdgeInsets.only(bottom: 10),
  186.                     padding: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
  187.                     color: Colors.grey[900],
  188.                     child: Column(
  189.                       children: [
  190.                         Expanded(
  191.                           child: Row(
  192.                             children: [
  193.                               Expanded(
  194.                                 child: InkWell(
  195.                                   onTap: clearClicked,
  196.                                   child: Container(
  197.                                     width: 80,
  198.                                     height: 80,
  199.                                     child: Center(
  200.                                       child: Text(
  201.                                         'C',
  202.                                         style: TextStyle(
  203.                                             color: Colors.white, fontSize: 40),
  204.                                       ),
  205.                                     ),
  206.                                     decoration: BoxDecoration(
  207.                                         shape: BoxShape.circle,
  208.                                         color: Colors.grey[800]),
  209.                                   ),
  210.                                 ),
  211.                               ),
  212.                               Expanded(
  213.                                 child: InkWell(
  214.                                   onTap: () {},
  215.                                   child: Container(
  216.                                     width: 80,
  217.                                     height: 80,
  218.                                     child: Center(
  219.                                       child: Text(
  220.                                         '+/-',
  221.                                         style: TextStyle(
  222.                                             color: Colors.white, fontSize: 40),
  223.                                       ),
  224.                                     ),
  225.                                     decoration: BoxDecoration(
  226.                                         shape: BoxShape.circle,
  227.                                         color: Colors.grey[800]),
  228.                                   ),
  229.                                 ),
  230.                               ),
  231.                               Expanded(
  232.                                 child: InkWell(
  233.                                   onTap: backspace,
  234.                                   child: Container(
  235.                                     width: 80,
  236.                                     height: 80,
  237.                                     child: Center(
  238.                                         child: Icon(
  239.                                       Icons.backspace_outlined,
  240.                                       color: Colors.white,
  241.                                       size: 30,
  242.                                     )),
  243.                                     decoration: BoxDecoration(
  244.                                         shape: BoxShape.circle,
  245.                                         color: Colors.grey[800]),
  246.                                   ),
  247.                                 ),
  248.                               ),
  249.                               Expanded(
  250.                                 child: InkWell(
  251.                                   onTap: () => operatorClicked('÷'),
  252.                                   child: Container(
  253.                                     width: 80,
  254.                                     height: 80,
  255.                                     child: Center(
  256.                                       child: Text(
  257.                                         '÷',
  258.                                         style: TextStyle(
  259.                                             color: Colors.orange, fontSize: 40),
  260.                                       ),
  261.                                     ),
  262.                                     decoration: BoxDecoration(
  263.                                         shape: BoxShape.circle,
  264.                                         color: Colors.grey[800]),
  265.                                   ),
  266.                                 ),
  267.                               ),
  268.                             ],
  269.                           ),
  270.                         ),
  271.                         Expanded(
  272.                           child: Row(
  273.                             children: [
  274.                               Expanded(
  275.                                 child: InkWell(
  276.                                   onTap: () => numberClicked('7'),
  277.                                   child: Container(
  278.                                     width: 80,
  279.                                     height: 80,
  280.                                     child: Center(
  281.                                       child: Text(
  282.                                         '7',
  283.                                         style: TextStyle(
  284.                                             color: Colors.white, fontSize: 40),
  285.                                       ),
  286.                                     ),
  287.                                     decoration: BoxDecoration(
  288.                                         shape: BoxShape.circle,
  289.                                         color: Colors.grey[800]),
  290.                                   ),
  291.                                 ),
  292.                               ),
  293.                               Expanded(
  294.                                 child: InkWell(
  295.                                   onTap: () => numberClicked('8'),
  296.                                   child: Container(
  297.                                     width: 80,
  298.                                     height: 80,
  299.                                     child: Center(
  300.                                       child: Text(
  301.                                         '8',
  302.                                         style: TextStyle(
  303.                                             color: Colors.white, fontSize: 40),
  304.                                       ),
  305.                                     ),
  306.                                     decoration: BoxDecoration(
  307.                                         shape: BoxShape.circle,
  308.                                         color: Colors.grey[800]),
  309.                                   ),
  310.                                 ),
  311.                               ),
  312.                               Expanded(
  313.                                 child: InkWell(
  314.                                   onTap: () => numberClicked('9'),
  315.                                   child: Container(
  316.                                     width: 80,
  317.                                     height: 80,
  318.                                     child: Center(
  319.                                       child: Text(
  320.                                         '9',
  321.                                         style: TextStyle(
  322.                                             color: Colors.white, fontSize: 40),
  323.                                       ),
  324.                                     ),
  325.                                     decoration: BoxDecoration(
  326.                                         shape: BoxShape.circle,
  327.                                         color: Colors.grey[800]),
  328.                                   ),
  329.                                 ),
  330.                               ),
  331.                               Expanded(
  332.                                 child: InkWell(
  333.                                   onTap: () => operatorClicked('x'),
  334.                                   child: Container(
  335.                                     width: 80,
  336.                                     height: 80,
  337.                                     child: Center(
  338.                                       child: Text(
  339.                                         '×',
  340.                                         style: TextStyle(
  341.                                             color: Colors.orange, fontSize: 40),
  342.                                       ),
  343.                                     ),
  344.                                     decoration: BoxDecoration(
  345.                                         shape: BoxShape.circle,
  346.                                         color: Colors.grey[800]),
  347.                                   ),
  348.                                 ),
  349.                               ),
  350.                             ],
  351.                           ),
  352.                         ),
  353.                         Expanded(
  354.                           child: Row(
  355.                             children: [
  356.                               Expanded(
  357.                                 child: InkWell(
  358.                                   onTap: () => numberClicked('4'),
  359.                                   child: Container(
  360.                                     width: 80,
  361.                                     height: 80,
  362.                                     child: Center(
  363.                                       child: Text(
  364.                                         '4',
  365.                                         style: TextStyle(
  366.                                             color: Colors.white, fontSize: 40),
  367.                                       ),
  368.                                     ),
  369.                                     decoration: BoxDecoration(
  370.                                         shape: BoxShape.circle,
  371.                                         color: Colors.grey[800]),
  372.                                   ),
  373.                                 ),
  374.                               ),
  375.                               Expanded(
  376.                                 child: InkWell(
  377.                                   onTap: () => numberClicked('5'),
  378.                                   child: Container(
  379.                                     width: 80,
  380.                                     height: 80,
  381.                                     child: Center(
  382.                                       child: Text(
  383.                                         '5',
  384.                                         style: TextStyle(
  385.                                             color: Colors.white, fontSize: 40),
  386.                                       ),
  387.                                     ),
  388.                                     decoration: BoxDecoration(
  389.                                         shape: BoxShape.circle,
  390.                                         color: Colors.grey[800]),
  391.                                   ),
  392.                                 ),
  393.                               ),
  394.                               Expanded(
  395.                                 child: InkWell(
  396.                                   onTap: () => numberClicked('6'),
  397.                                   child: Container(
  398.                                     width: 80,
  399.                                     height: 80,
  400.                                     child: Center(
  401.                                       child: Text(
  402.                                         '6',
  403.                                         style: TextStyle(
  404.                                             color: Colors.white, fontSize: 40),
  405.                                       ),
  406.                                     ),
  407.                                     decoration: BoxDecoration(
  408.                                         shape: BoxShape.circle,
  409.                                         color: Colors.grey[800]),
  410.                                   ),
  411.                                 ),
  412.                               ),
  413.                               Expanded(
  414.                                 child: InkWell(
  415.                                   onTap: () => operatorClicked('-'),
  416.                                   child: Container(
  417.                                     width: 80,
  418.                                     height: 80,
  419.                                     child: Center(
  420.                                       child: Text(
  421.                                         '-',
  422.                                         style: TextStyle(
  423.                                             color: Colors.orange, fontSize: 40),
  424.                                       ),
  425.                                     ),
  426.                                     decoration: BoxDecoration(
  427.                                         shape: BoxShape.circle,
  428.                                         color: Colors.grey[800]),
  429.                                   ),
  430.                                 ),
  431.                               ),
  432.                             ],
  433.                           ),
  434.                         ),
  435.                         Expanded(
  436.                           child: Row(
  437.                             children: [
  438.                               Expanded(
  439.                                 child: InkWell(
  440.                                   onTap: () => numberClicked('1'),
  441.                                   child: Container(
  442.                                     width: 80,
  443.                                     height: 80,
  444.                                     child: Center(
  445.                                       child: Text(
  446.                                         '1',
  447.                                         style: TextStyle(
  448.                                             color: Colors.white, fontSize: 40),
  449.                                       ),
  450.                                     ),
  451.                                     decoration: BoxDecoration(
  452.                                         shape: BoxShape.circle,
  453.                                         color: Colors.grey[800]),
  454.                                   ),
  455.                                 ),
  456.                               ),
  457.                               Expanded(
  458.                                 child: InkWell(
  459.                                   onTap: () => numberClicked('2'),
  460.                                   child: Container(
  461.                                     width: 80,
  462.                                     height: 80,
  463.                                     child: Center(
  464.                                       child: Text(
  465.                                         '2',
  466.                                         style: TextStyle(
  467.                                             color: Colors.white, fontSize: 40),
  468.                                       ),
  469.                                     ),
  470.                                     decoration: BoxDecoration(
  471.                                         shape: BoxShape.circle,
  472.                                         color: Colors.grey[800]),
  473.                                   ),
  474.                                 ),
  475.                               ),
  476.                               Expanded(
  477.                                 child: InkWell(
  478.                                   onTap: () => numberClicked('3'),
  479.                                   child: Container(
  480.                                     width: 80,
  481.                                     height: 80,
  482.                                     child: Center(
  483.                                       child: Text(
  484.                                         '3',
  485.                                         style: TextStyle(
  486.                                             color: Colors.white, fontSize: 40),
  487.                                       ),
  488.                                     ),
  489.                                     decoration: BoxDecoration(
  490.                                         shape: BoxShape.circle,
  491.                                         color: Colors.grey[800]),
  492.                                   ),
  493.                                 ),
  494.                               ),
  495.                               Expanded(
  496.                                 child: InkWell(
  497.                                   onTap: () => operatorClicked('+'),
  498.                                   child: Container(
  499.                                     width: 80,
  500.                                     height: 80,
  501.                                     child: Center(
  502.                                       child: Text(
  503.                                         '+',
  504.                                         style: TextStyle(
  505.                                             color: Colors.orange, fontSize: 40),
  506.                                       ),
  507.                                     ),
  508.                                     decoration: BoxDecoration(
  509.                                         shape: BoxShape.circle,
  510.                                         color: Colors.grey[800]),
  511.                                   ),
  512.                                 ),
  513.                               ),
  514.                             ],
  515.                           ),
  516.                         ),
  517.                         Expanded(
  518.                           child: Row(
  519.                             children: [
  520.                               Expanded(
  521.                                 child: InkWell(
  522.                                   onTap: () => numberClicked('0'),
  523.                                   child: Container(
  524.                                     width: 80,
  525.                                     height: 80,
  526.                                     child: Center(
  527.                                       child: Text(
  528.                                         '0',
  529.                                         style: TextStyle(
  530.                                             color: Colors.white, fontSize: 40),
  531.                                       ),
  532.                                     ),
  533.                                     decoration: BoxDecoration(
  534.                                         shape: BoxShape.circle,
  535.                                         color: Colors.grey[800]),
  536.                                   ),
  537.                                 ),
  538.                               ),
  539.                               Expanded(
  540.                                 child: InkWell(
  541.                                   onTap: () => numberClicked('00'),
  542.                                   child: Container(
  543.                                     width: 80,
  544.                                     height: 80,
  545.                                     child: Center(
  546.                                       child: Text(
  547.                                         '00',
  548.                                         style: TextStyle(
  549.                                             color: Colors.white, fontSize: 40),
  550.                                       ),
  551.                                     ),
  552.                                     decoration: BoxDecoration(
  553.                                         shape: BoxShape.circle,
  554.                                         color: Colors.grey[800]),
  555.                                   ),
  556.                                 ),
  557.                               ),
  558.                               Expanded(
  559.                                 child: InkWell(
  560.                                   onTap: () => numberClicked('.'),
  561.                                   child: Container(
  562.                                     width: 80,
  563.                                     height: 80,
  564.                                     child: Center(
  565.                                       child: Text(
  566.                                         '.',
  567.                                         style: TextStyle(
  568.                                             color: Colors.white, fontSize: 40),
  569.                                       ),
  570.                                     ),
  571.                                     decoration: BoxDecoration(
  572.                                         shape: BoxShape.circle,
  573.                                         color: Colors.grey[800]),
  574.                                   ),
  575.                                 ),
  576.                               ),
  577.                               Expanded(
  578.                                 child: InkWell(
  579.                                   onTap: getResult,
  580.                                   child: Container(
  581.                                     width: 80,
  582.                                     height: 80,
  583.                                     child: Center(
  584.                                       child: Text(
  585.                                         '=',
  586.                                         style: TextStyle(
  587.                                             color: Colors.white, fontSize: 40),
  588.                                       ),
  589.                                     ),
  590.                                     decoration: BoxDecoration(
  591.                                         shape: BoxShape.circle,
  592.                                         color: Colors.orange[800]),
  593.                                   ),
  594.                                 ),
  595.                               ),
  596.                             ],
  597.                           ),
  598.                         ),
  599.                       ],
  600.                     ),
  601.                   ),
  602.                 ),
  603.               ],
  604.             ),
  605.           )),
  606.     );
  607.   }
  608. }
  609.  
RAW Paste Data