name27 / flutter

0 stars 0 forks source link

계산기 #40

Open name27 opened 1 year ago

name27 commented 1 year ago

image image image

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  TextEditingController inputController_x = TextEditingController();
  TextEditingController inputController_y = TextEditingController();

  var result;

  double add(var x, var y) {
    return double.parse(x) + double.parse(y);
  }

  double sub(var x, var y) {
    return double.parse(x) - double.parse(y);;
  }

  double mul(var x, var y) {
    return double.parse(x) * double.parse(y);
  }

  double div(var x, var y) {
    return double.parse(x) / double.parse(y);
  }
  showResultDialog(BuildContext context, var result) {
    showDialog(
      context: context,
      builder: (context) {
        return Dialog(
          shape:
              RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.0)),
          child: SizedBox(
            width: MediaQuery.of(context).size.width / 2,
            height: 150,
            child: Center(
                child: Text(
              "$result",
              style: const TextStyle(fontWeight: FontWeight.bold),
            )),
          ),
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('사칙연산'),
          centerTitle: true,
        ),
        body: Center(
          child: SingleChildScrollView(
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: [
                Row(
                  mainAxisAlignment: MainAxisAlignment.spaceAround,
                  children: [
                    Text('X의 값은?'),
                    SizedBox(
                      width: 250,
                      child: TextField(
                        controller: inputController_x,
                        decoration: InputDecoration(
                          hintText: 'x값을 입력하세요.',
                          enabledBorder: OutlineInputBorder(
                            borderSide: BorderSide(
                              color: Colors.black54,
                              width: 0.5,
                            ),
                          ),
                        ),
                        keyboardType: TextInputType.number,
                      ),
                    )
                  ],
                ),
                Row(
                  mainAxisAlignment: MainAxisAlignment.spaceAround,
                  children: [
                    Text('Y의 값은?'),
                    SizedBox(
                      width: 250,
                      child: TextField(
                        controller: inputController_y,
                        decoration: InputDecoration(
                          hintText: 'Y값을 입력하세요.',
                          enabledBorder: OutlineInputBorder(
                            borderSide: BorderSide(
                              color: Colors.black54,
                              width: 0.5,
                            ),
                          ),
                        ),
                        keyboardType: TextInputType.number,
                      ),
                    )
                  ],
                ),
                SizedBox(
                  height: 10,
                ),
                Builder(
                  builder: (context) {
                    return ElevatedButton(
                      onPressed: () {
                        if(inputController_x.text == '' || inputController_y.text == ''){
                          result = "x 또는 y를 입력하지 않았습니다.";
                        }
                        else{
                          result = add(inputController_x.text, inputController_y.text);
                        }
                        showResultDialog(context, result);
                      },
                      child: Text('더하기의 결과값은?'),
                    );
                  }
                ),
                Builder(
                  builder: (context) {
                    return ElevatedButton(
                      onPressed: () {
                        if(inputController_x.text == '' || inputController_y.text == ''){
                          result = "x 또는 y를 입력하지 않았습니다.";
                        }
                        else{
                          result = sub(inputController_x.text, inputController_y.text);
                        }
                        showResultDialog(context, result);
                      },
                      child: Text('빼기의 결과값은?'),
                    );
                  }
                ),
                Builder(
                  builder: (context) {
                    return ElevatedButton(
                      onPressed: () {
                        if(inputController_x.text == '' || inputController_y.text == ''){
                          result = "x 또는 y를 입력하지 않았습니다.";
                        }
                        else{
                          result = mul(inputController_x.text, inputController_y.text);
                        }
                        showResultDialog(context, result);
                      },
                      child: Text('곱하기의 결과값은?'),
                    );
                  }
                ),
                Builder(
                  builder: (context) {
                    return ElevatedButton(
                      onPressed: () {
                        if(inputController_x.text == '' || inputController_y.text == ''){
                          result = "x 또는 y를 입력하지 않았습니다.";
                        }
                        else{
                          result = div(inputController_x.text, inputController_y.text);
                        }
                        showResultDialog(context, result);
                      },
                      child: Text('나누기의 결과값은?'),
                    );
                  }
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}
name27 commented 1 year ago

showResultDialog(BuildContext context, var result) 첫번째 인자 해결방법

문자열 더블형으로 바꾸기

Textfield 값 받기

Textfield 꾸미기